Version: Unity 6.0 (6000.0)
语言 : 中文
内置渲染管线中的表面着色器和渲染路径
为内置渲染管线中的表面着色器设置光照模型

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

与其他着色器一样,表面着色器也被放置在 CGPROGRAM..ENDCG 代码块内。不同之处在于:

  • 它必须被放在 SubShader 代码块内,而不是位于 Pass 内。表面着色器本身将被编译为多个通道。
  • 它使用 #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"
  }

以下是设置了两个光源的模型:

内置渲染管线中的表面着色器和渲染路径
为内置渲染管线中的表面着色器设置光照模型
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961