Version: Unity 6.0 (6000.0)
언어 : 한국어
빌트인 렌더 파이프라인의 버텍스 모디파이어 표면 셰이더 예시
빌트인 렌더 파이프라인의 최종 컬러 모디파이어 표면 셰이더 예제

빌트인 렌더 파이프라인의 커스텀 데이터 표면 셰이더 예시

버텍스 모디파이어 함수를 사용하면 버텍스 셰이더에서 커스텀 데이터를 계산한 후 픽셀 단위로 표면 셰이더 함수에 전달할 수도 있습니다. 동일한 컴파일 지시문 vertex:functionName이 사용되지만 함수는 inout appdata_fullout Input이라는 두 개의 파라미터를 사용해야 합니다. 빌트인 값이 아닌 모든 입력 멤버를 채울 수 있습니다.

참고: 이 방식으로 사용되는 커스텀 입력 멤버는 ‘uv’로 시작하는 이름을 사용해서는 안 되며, 만약 그럴 경우 제대로 작동하지 않습니다.

아래 예시에서는 커스텀 float3 customColor 멤버를 정의하며 버텍스 함수에서 계산됩니다.

  Shader "Example/Custom Vertex Data" {
    Properties {
      _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert vertex:vert
      struct Input {
          float2 uv_MainTex;
          float3 customColor;
      };
      void vert (inout appdata_full v, out Input o) {
          UNITY_INITIALIZE_OUTPUT(Input,o);
          o.customColor = abs(v.normal);
      }
      sampler2D _MainTex;
      void surf (Input IN, inout SurfaceOutput o) {
          o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
          o.Albedo *= IN.customColor;
      }
      ENDCG
    } 
    Fallback "Diffuse"
  }

이 예시에서 customColor는 노멀의 절댓값으로 설정됩니다.

더 실용적인 용도는 빌트인 입력 변수로 제공되지 않는 버텍스당 데이터를 계산하거나 셰이더 계산을 최적화하는 데 사용하는 것입니다. 예를 들어 표면 셰이더 픽셀당 계산하는 대신 게임 오브젝트의 버텍스에서 림 조명을 계산할 수 있습니다.

빌트인 렌더 파이프라인의 버텍스 모디파이어 표면 셰이더 예시
빌트인 렌더 파이프라인의 최종 컬러 모디파이어 표면 셰이더 예제
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961