Version: 2017.3
ShaderLab: 블렌딩
ShaderLab: 스텐실

ShaderLab: 패스 태그

패스는 태그를 사용해 예상되는 렌더 방법 및 시기를 렌더링 엔진에 알립니다.

구문

    Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

TagName1Value1을, TagName2Value2를 지정합니다. 태그를 원하는 수만큼 지정할 수 있습니다.

세부 정보

태그는 기본적으로 키-값 페어입니다. 패스 안에서 태그는 조명 파이프라인(앰비언트, 버텍스 리트, 픽셀 릿 등)에서 패스가 수행하는 역할과 기타 몇 가지 옵션을 제어하는 데 사용됩니다. Unity에서 인식하는 다음 태그는 서브셰이더가 아닌 패스 섹션 안에 있어야 합니다.

LightMode 태그

LightMode 태그는 조명 파이프라인에서 패스가 담당하는 역할을 정의합니다. 자세한 내용은 렌더링 파이프라인을 참조하십시오. 이 태그는 수동으로 사용되는 경우가 드물고, 조명과 상호작용해야 하는 셰이더는 표면 셰이더로 작성됩니다. 그러면 관련 세부사항이 모두 처리됩니다.

LightMode 태그의 가능한 값은 다음과 같습니다.

  • Always: 항상 렌더링되고, 조명이 적용되지 않습니다.
  • ForwardBase: 포워드 렌더링에 사용되고 앰비언트 라이트, 주 방향 광원, 버텍스/SH 라이트 및 라이트맵이 적용됩니다.
  • ForwardAdd: 포워드 렌더링에 사용되고 추가 픽셀당 광원이 광원당 한 패스씩 적용됩니다.
  • Deferred: 디퍼드 셰이딩에 사용되고 g- 버퍼를 렌더링합니다.
  • ShadowCaster: 오브젝트 뎁스를 섀도우맵 또는 뎁스 텍스처에 렌더링합니다.
  • MotionVectors: 오브젝트당 모션 벡터를 계산하는 데 사용됩니다.
  • PrepassBase: 레거시 디퍼드 라이팅에 사용되고, 노멀 및 스페큘러 지수를 렌더링합니다.
  • PrepassFinal: 레거시 디퍼드 라이팅에 사용되고 텍스처, 조명 및 이미션을 결합하여 최종 컬러를 렌더링합니다.
  • Vertex: 오브젝트가 라이트매핑되지 않는 경우 레거시 버텍스 리트 렌더링에 사용됩니다. 모든 버텍스 광원이 적용됩니다.
  • VertexLMRGBM: 라이트맵이 RGBM으로 인코딩된 플랫폼(PC 및 콘솔)에서 오브젝트가 라이트매핑되는 경우 레거시 버텍스 리트 렌더링에 사용됩니다.
  • VertexLM: 라이트맵이 double-LDR로 인코딩된 플랫폼 (모바일 플랫폼)에서 오브젝트가 라이트매핑되는 경우 레거시 버텍스 리트 렌더링에 사용됩니다.

PassFlags 태그

패스는 렌더링 파이프라인에서 데이터를 전달하는 방법을 변경하는 플래그를 나타낼 수 있습니다. 이 작업은 PassFlags 태그를 공백으로 구분된 플래그 이름인 값과 함께 사용하여 수행합니다. 현재 지원되는 플래그는 다음과 같습니다.

  • OnlyDirectional: 이 플래그를 ForwardBase 패스 타입에 사용하면 주 방향 광원과 앰비언트/라이트프로브 데이터만 셰이더에 전달됩니다. 따라서 중요하지 않은 광원의 데이터는 버텍스 라이트 또는 구면 조화 셰이더 변수에 전달되지 않습니다. 자세한 내용은 포워드 렌더링을 참조하십시오.

RequireOptions 태그

패스는 특정 외부 조건이 충족되는 경우에만 렌더링되어야 함을 나타낼 수 있습니다. 이렇게 하려면 값이 공백으로 구분된 옵션의 문자열인 RequireOptions 태그를 사용합니다. 현재 Unity에서 지원하는 옵션은 다음과 같습니다.

  • SoftVegetation: Quality Settings에서 소프트 베지테이션이 활성화된 경우에만 이 패스를 렌더링합니다.

참고 항목

서브셰이더에도 태그를 지정할 수 있습니다. 서브셰이더 태그를 참조하십시오.

ShaderLab: 블렌딩
ShaderLab: 스텐실