Unity Shader 顶点/片元着色器的基本结构

Shader "MyShaderName"{
	Properties{
		//属性
	}
	SubShader{
		//针对显卡A的SubShader
		Pass{
			//设置渲染状态和标签
			
			//开始CG代码片段
			CGPROGRAM
			//该代码片段的编译指令,例如:
			#pragma vertex vert
			#pragma fragment frag
			
			//CG代码写在这里
			
			ENDCG
			
			//其他设置
		}
		//其它需要的Pass
	}
	SubShader{
		//针对显卡B的SubShader
	}
	
	//上述SubShader都失败后用于回调的Unity Shader
	Fallback "VertexLit"
}

一个简单的顶点/片元着色器代码:

Shader "Custom/SimpleWhiteShader"{
	SubShader{
		Pass{
			CGPROGRAM
			#pragma vertex vert //指定vert函数是顶点着色器代码
			#pragma fragment frag //指定frag函数是片元着色器代码
			float4 vert(float4 v:POSITION):SV_POSITION{
				return UnityObjectToClipPos(v);
			}
			fixed4 frag():SV_Target{
				return fixed4(1.0,1.0,1.0,1.0);
			}
			ENDCG
		}
	}
	Fallback "VertexLit"
}

猜你喜欢

转载自www.cnblogs.com/kingBook/p/12698966.html