3.Unity Shader代码部分学习
一.基本结构
Shader "Custom/NewSurfaceShader" //shader名称
{ //属性部分
Properties {
//对于初始属性的设置
}
//针对显卡A的SubShader
SubShader {
pass{
//开始cg语言的编写
CGPROGRAM
//编译指令
#pragma vertex vert
#pragma fragment frag
}
ENDCG
}
SubShader {//对于显卡B的渲染状态的编写
、、、、、、、、
}
FallBack "Diffuse"//如果都失败用于回调
}
二.例子
Shader "Unity/test1"
{
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert(float4 v :POSITION) : SV_POSITION
{
return UnityObjectToClipPos(v);//原型是mul(UNITY_MARTRIX_MVP,v),即对于v进行逻辑处理
}
Vert定义为float4类型,输入的v就是float4类型,对v进行处理得到的也是float4类型,可以return
fixed4 frag() : SV_Target{
return fixed4(1.0,1.0,1.0,1.0);//一开始由于fixed4没有写4,效果不对
}
Frag函数,定义类型为fixed4,则返回值为fixed4,以书为主,inout等少用
ENDCG
}
}
}
//现存问题,mul(UNITY_MATRIX_MVP,)’ with 'UnityObjectToClipPos()可以为等价,但意义是什么,可能在以后有答案