1. Shader "File/Hibari"
  2. {
  3. Properties{}
  4. SubShader
  5. {
  6. pass//一个SubShader中可以有多个Pass
  7. {
  8. //ShaderLabCommands //渲染命令
  9. Name [string] //Pass
  10. UsePass [String] //使用哪个Shader的下的Pass
  11. //Tags //Pass的标签
  12. CGPRORAM //渲染标签开始
  13. //程序体
  14. ENDCG //渲染标签结束
  15. }
  16. }
  17. Fallback "Diffuse"
  18. }

Pass Tags标签

键值对的形式 文档:https://docs.unity3d.com/cn/2020.3/Manual/shader-predefined-pass-tags-built-in.html

LightMode Always
始终渲染;不应用任何光照。这是默认值。
ForwardBase
在前向渲染中使用;应用环境光、主方向光、顶点/SH 光源和光照贴图。
ForwardAdd
在前向渲染中使用;应用附加的每像素光源(每个光源有一个通道)。
Deferred
在延迟渲染中使用;渲染 G 缓冲区。
ShadowCaster
将对象深度渲染到阴影贴图或深度纹理中。
MotionVectors
用于计算每个对象的运动矢量。
PrepassBase
用于旧版延迟光照,渲染法线和镜面反射指数。
PrepassFinal
用于旧版延迟光照;通过组合纹理、光照和发光来渲染最终颜色。
ShadowCaster
将对象深度渲染到阴影贴图或深度纹理中。
Vertex
用于旧版顶点光照渲染(当对象不进行光照贴图时);应用所有顶点光源。
VertexLMRGBM
用于旧版顶点光照渲染(当对象不进行光照贴图时),
以及光照贴图为 RGBM 编码的平台(PC 和游戏主机)。
VertexLM
用于旧版顶点光照渲染(当对象不进行光照贴图时),
以及光照贴图为双 LDR 编码的平台上(移动平台)。
Meta
在常规渲染期间不使用此通道,仅用于光照贴图烘焙或实时全局光照。
有关更多信息,请参阅光照贴图和 Meta 通道标签。
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@11.0/manual/urp-shaders/urp-shaderlab-pass-tags.html#urp-pass-tags-lightmode

https://docs.unity3d.com/cn/2020.3/Manual/shader-predefined-pass-tags-built-in.html
PassFlags OnlyDirectional
仅在内置渲染管线中且渲染路径设置为 Forward,
LightMode 标签值为 ForwardBase 的通道中有效。

Unity 只为该通道提供主方向光和环境光/光照探针数据。
这意味着非重要光源的数据将不会传递到顶点光源或球谐函数着色器变量。
请参阅前向渲染路径以了解详细信息。

RequireOptions SoftVegetation
在内置渲染管线中,RequireOptions 通道标签根据项目设置启用或禁用一个通道。

渲染标签

CG CGPROGRAM
ENDCG
GLSL GLSLPRORAM
ENDGLSL
HLSL HLSLPRORAM
ENDHLSL

Cg:[Unity默认]

驱动:视平台而定 坐标系:左手坐标系 屏幕坐标系:image.png

  1. //Cg/HlshDirectX
  2. Shader "Unity/Hibari"
  3. {
  4. SubShader
  5. {
  6. pass
  7. {
  8. CGPROGRAM //标签开始
  9. ENDCG //标签结束
  10. }
  11. }
  12. }

GLSL:

驱动:OpenGL 坐标系:右手坐标系 屏幕坐标系:image.png

  1. //GLSLOpenGL
  2. Shader "Unity/Hibari"
  3. {
  4. SubShader
  5. {
  6. pass
  7. {
  8. GLSLPRORAM //OpenGL标签开始
  9. ENDGLSL //OpenGL标签结束
  10. }
  11. }
  12. }

HLSL:

驱动:DirectX 坐标系:左手坐标系 屏幕坐标系:image.png

  1. //HlsLDirectX
  2. Shader "Unity/Hibari"
  3. {
  4. SubShader
  5. {
  6. pass
  7. {
  8. HLSLPROGRAM //DX标签开始
  9. ENDHLSL //DX标签结束
  10. }
  11. }
  12. }