Unity Shader
ShderLib
ShaderObject
Shader "Examples/ShaderSyntax"
{
CustomEditor = "ExampleCustomEditor"
// 在Unity属性窗口显示的对象(Texture2D等)
// 也可用于后续的渲染流程使用
Properties
{
// Material property declarations go here
}
// 为不同的硬件定义不同的GPU设置和渲染程序
SubShader
{
LOD 100 //定义渲染级别, 越小优先级越高
Tags {}
Pass
{
// 写渲染脚本, 支持HLSL/CG等
// The code that defines the Pass goes here
}
}
Fallback "ExampleFallbackShader"
}
在Pass中使用脚本
- 通过 CGPROGRAM ..ENDCG定义CG代码块.
- 通过 HLSLPROGRAM..ENDHLSL定义HLSL代码块.
- 更多参考: Shaderlab Code Block
Pass
{
// #pragma为预处理命令
#pragma target 3.0
#pragma exclude_renderers vulkan
// 定义定点着色器函数vert
#pragma vertex vert
//定义fragment着色器函数为frag
#pragma fragment frag
// 参考: Shaderlab HLSl 预处理命令
// 一个入口函数示例
v2f vert (
float4 vertex : POSITION, // vertex position input
float2 uv : TEXCOORD0 // first texture coordinate input
)
{
v2f o;
o.pos = UnityObjectToClipPos(vertex);
o.uv = uv;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return fixed4(i.uv, 0, 0);
}
}