版本:Unity 6 (6000.0)
语言 : 英语
内置渲染管线中的表面着色器和渲染路径
在内置渲染管线中设置表面着色器中的光照模型

在内置渲染管线中创建表面着色器

表面 着色器在 GPU 上运行的程序。 更多信息
参见 术语表
位于 CGPROGRAM..ENDCG 块内,就像任何其他着色器一样。区别在于

  • 它必须位于 子着色器 块内,而不是 通道 内。 表面着色器一种简化的方式,用于为内置渲染管线编写着色器。 更多信息
    参见 术语表
    将编译成多个通道。
  • 它使用 #pragma surface ... 指令来指示它是一个表面着色器。

#pragma surface 指令为

#pragma surface surfaceFunction lightModel [optionalparams]

示例

  Shader "Example/Diffuse Simple" {
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert
      struct Input {
          float4 color : COLOR;
      };
      void surf (Input IN, inout SurfaceOutput o) {
          o.Albedo = 1;
      }
      ENDCG
    }
    Fallback "Diffuse"
  }

以下是它在具有两个已设置 灯光 的模型上的外观

内置渲染管线中的表面着色器和渲染路径
在内置渲染管线中设置表面着色器中的光照模型