- Home /
Making a simple cg program work in unity
Hi,
I've been wanting to learn more about shaders and I started on the CG Tutorial at:
http://http.developer.nvidia.com/CgTutorial
I am trying to make the first example shader work within unity, but I seem to be missing some information involving shader lab. This is the given example:
struct C2E1v_Output {
float4 position : POSITION;
float4 color : COLOR;
};
C2E1v_Output C2E1v_green(float2 position : POSITION)
{
C2E1v_Output OUT;
OUT.position = float4(position, 0, 1);
OUT.color = float4(0, 1, 0, 1); // RGBA green
return OUT;
}
And this is the unity shader I tried but doesn't work:
Shader "Testing shaders/Test 1" {
Properties {
_MainColor ("Base Color", Color) = (0,1,0,1)
}
SubShader {
CGPROGRAM
#pragma C2E1v_Output C2E1v_green
struct C2E1v_Output
{
float4 position : POSITION;
float4 color : COLOR;
};
C2E1v_Output C2E1v_green(float2 position : POSITION)
{
C2E1v_Output OUT;
OUT.position = float4(position, 0, 1);
OUT.color = _MainColor;
return OUT;
}
ENDCG
}
FallBack "Diffuse"
}
Here is a link to where I am on the tutorial.
Some help would be much appreciated.
Answer by Owen-Reynolds · Dec 29, 2013 at 05:23 PM
ShaderLab uses a completely different, more primitive system, from back before could you program graphics cards. I suspect that's when it was first developed. Some of the set-up code is the same, but the actual coding only sets modes and inputs. ShaderLab can be ignored if you just want cg shaders.
Maybe start with a working Unity shader. The Unity shader page with all the soldiers has some (the last example has vert+frag shaders.) Then downloading the built-in unity shaders gives the code for more. The guts are regular cg/HLSL code. And the set-up code is standard cg with different words and some magic (if you request certain items, Unity auto-computes and sends them.)
Thank you for your response, I've found some help in the shader lab docs. There you can find some examples for vertex and fragment shaders. The included explanation isn't perfect but with some googling you can figure it out.
Your answer
Follow this Question
Related Questions
How to force the compilation of a shader in Unity? 5 Answers
UnityObjectToClipPos is inverted? 0 Answers
Unity 5 upgrade broke lightmapped shader 1 Answer
How to get view space position of a pixel 0 Answers
Sizeof float in cg shader 1 Answer