ShaderLab: 서브셰이더(SubShader)
ShaderLab: 컬링 및 뎁스 테스트(Culling & Depth Testing)

ShaderLab: 패스(Pass)

패스 블록으로 인해 게임 오브젝트의 지오메트리가 한 번만 렌더링됩니다.

구문

Pass { [Name and Tags] [RenderSetup] }

기본 Pass 커맨드는 렌더 상태 설정 커맨드 리스트를 포함합니다.

이름(Name)과 태그(Tags)

패스는 이름 및 임의 수의 태그를 정의할 수 있습니다. 태그는 패스의 의도를 렌더링 엔진에 전달하는 이름/값 문자열입니다.

렌더(Render) 상태 설정

패스는 알파 블렌딩을 켤지 여부 또는 뎁스 테스트 사용 여부 등 그래픽스 하드웨어의 여러 상태를 설정합니다.

커맨드는 다음과 같습니다.

컬링(Cull)

Cull Back | Front | Off

폴리곤 컬링 모드를 설정합니다.

ZTest

ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)

뎁스 버퍼 테스트 모드를 설정합니다.

ZWrite

ZWrite On | Off

뎁스 버퍼 쓰기 모드를 설정합니다.

Offset

Offset OffsetFactor, OffsetUnits

Z 버퍼 뎁스 오프셋을 설정합니다. 자세한 내용은 컬링 및 뎁스 페이지를 참조하십시오.

컬링, ZTest, ZWrite, 오프셋에 대한 자세한 내용은 컬링 및 뎁스 페이지를 참조하십시오.

블렌드(Blend)

Blend sourceBlendMode destBlendMode
Blend sourceBlendMode destBlendMode, alphaSourceBlendMode alphaDestBlendMode
BlendOp colorOp
BlendOp colorOp, alphaOp
AlphaToMask On | Off

알파 블렌딩, 알파 연산 및 알파 투 커버리지 모드를 설정합니다. 자세한 내용은 블렌딩 문서를 참조하십시오.

ColorMask

ColorMask RGB | A | 0 | any combination of R, G, B, A

컬러 채널 쓰기 마스크를 설정합니다. ColorMask 0 를 쓰면 모든 컬러 채널로의 렌더링이 꺼집니다. 디폴트 모드는 모든 채널(RGBA)에 쓰기이지만, 일부 특수 효과의 경우 특정 채널을 수정하지 않고 놔두거나 컬러 쓰기를 완전히 비활성화하는 것이 좋습니다.

MRT(multiple render target) 렌더링을 사용하는 경우 각 렌더 타겟마다 인덱스(0–7)를 끝에 추가하여 각기 다른 컬러 마스크를 설정할 수 있습니다. 예를 들어, ColorMask RGB 3을 사용하면 렌더 타겟 3번이 RGB 채널에만 씁니다.

레거시 고정 함수 셰이더(Shader) 커맨드

레거시 “고정 함수 스타일” 셰이더 쓰기에 사용되는 여러 커맨드가 있습니다. 이 기능은 지원이 중단된 것으로 간주됩니다. 표면 셰이더 또는 셰이더 그로그램을 사용하면 훨씬 더 유연하기 때문입니다. 하지만 셰이더가 매우 간단한 경우 고정 함수 스타일로 쓰면 때때로 더 간편할 수 있으므로 아래에 해당 커맨드가 제공되어 있습니다. 고정 함수 셰이더를 사용하지 않는 경우 아래 명령은 모두 무시됩니다.

고정 함수 조명(Lighting) 및 머티리얼(Material)

Lighting On | Off
Material { Material Block }
SeparateSpecular On | Off
Color Color-value
ColorMaterial AmbientAndDiffuse | Emission

위 예제는 모두 고정 함수 버덱스당 조명을 제어합니다. 조명을 켜고, 머티리얼 컬러를 설정하고, 스페귤러 하이라이트를 켜고, 디폴트 컬러를 제공하고(버텍스 조명이 켜진 경우), 메시 버텍스 컬러가 조명에 영향을 미치는 방법을 제어합니다. 자세한 내용은 머티리얼 문서를 참조하십시오.

고정 함수 안개(Fog)

Fog { Fog Block }

고정 함수 Fog 파라미터를 설정합니다. 자세한 내용은 안개 문서를 참조하십시오.

고정 함수 AlphaTest

AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue

고정 함수 알파 테스트를 켭니다. 자세한 내용은 알파 테스트 문서를 참조하십시오.

고정 함수 텍스처(Texture) 컴바이너

렌더 상태 설정 후 SetTexture 커맨드를 사용하여 여러 텍스처와 텍스처 결합 모드를 지정합니다.

SetTexture textureProperty { combine options }

세부 정보

셰이더 패스는 Unity의 렌더링 파이프라인과 몇 가지 방법으로 상호작용합니다. 예를 들어, 패스는 Tags 커맨드를 사용해 디퍼드 셰이딩에만 사용되어야 함을 나타낼 수 있습니다. 특정 패스를 동일한 게임 오브젝트에 대해 여러 번 실행할 수도 있습니다. 예를 들어, 포워드 렌더링에서 “ForwardAdd” 패스 유형은 게임 오브젝트에 영향을 미치는 광원의 수에 따라 여러 번 실행됩니다. 자세한 내용은 렌더 파이프라인 문서를 참조하십시오.

참고 항목

공통 기능을 재사용하거나 다양한 하이엔드 효과를 구현하는 데 사용 가능한 특수 패스가 몇 개 있습니다.

  • UsePass는 다른 셰이더의 명명된 패스를 포함합니다.
  • GrabPass는 화면 콘텐츠를 이후 패스에서 사용하기 위해 텍스처로 가져옵니다.
ShaderLab: 서브셰이더(SubShader)
ShaderLab: 컬링 및 뎁스 테스트(Culling & Depth Testing)