Version: 2020.1
표면 셰이더 작성
표면 셰이더 예제

표면 셰이더 및 렌더링 경로

In the Built-in Render Pipeline, when using a Surface Shader, how lighting is applied and which Passes of the shader are used depends on which rendering path is used. Each pass in a shader communicates its lighting type via Pass Tags.

포워드 렌더링 경로

ForwardBase 패스는 앰비언트, 라이트맵, 주 방향 광원 및 중요하지 않은 (버텍스/SH) 광원을 동시에 렌더링합니다. ForwardAdd 패스는 추가 픽셀당 광원에 사용되며, 이러한 광원에 의해 비춰지는 오브젝트당 한 번의 호출이 수행됩니다. 자세한 내용은 포워드 렌더링을 참조하십시오.

포워드 렌더링을 사용하는 경우 셰이더에 포워드 적합 패스가 없으면(즉, ForwardBase 또는 ForwardAdd 패스 타입이 모두 없는 경우) 오브젝트가 아래와 같이 버텍스 릿 경로에서 렌더딩되는 것과 똑같이 렌더링됩니다.

디퍼드 셰이딩 경로

Deferred 패스는 조명에 필요한 모든 정보(빌트인 셰이더에서는 디퓨즈 컬러, 스페큘러 컬러, 평활도, 월드 공간 노멀, 이미션)를 렌더링합니다. 또한 라이트맵, 반사 프로브 및 주변광을 이미션 채널에 추가합니다. 자세한 내용은 디퍼드 셰이딩을 참조하십시오.

레거시 디퍼드 라이팅 경로

PrepassBase 패스는 노멀 및 스페큘러 지수를 렌더링하고 PrepassFinal 패스는 텍스처, 조명 및 발광 머티리얼 프로퍼티를 결합하여 최종 컬러를 렌더링합니다. 모든 일반적인 씬의 조명은 스크린 공간에서 개별적으로 수행됩니다. 자세한 내용은 디퍼드 라이팅을 참조하십시오.

레거시 버텍스 릿 렌더링 경로

버텍스 조명은 프로그래밍 가능한 셰이더를 지원하지 않는 플랫폼에서 가장 많이 사용되기 때문에 Unity는 라이트맵이 적용되고 라이트맵이 적용되지 않는 사례를 처리하기 위해 내부적으로 여러 셰이더 배리언트를 생성할 수 없습니다. 따라서 라이트맵이 적용되고 라이트맵이 적용되지 않은 오브젝트를 처리하려면 여러 패스를 명시적으로 작성해야 합니다.

  • Vertex 패스는 라이트맵이 적용되지 않은 오브젝트에 사용됩니다. 모든 광원은 고정 기능 OpenGL/Direct3D 조명 모델(블린퐁)을 사용하여 동시에 렌더링됩니다.
  • VertexLMRGBM 패스는 라이트맵이 RGBM으로 인코딩된 경우(PC 및 콘솔)에 라이트맵이 적용된 오브젝트에 사용됩니다. 실시간 조명은 적용되지 않고 패스는 텍스처를 라이트맵과 결합해야 합니다.
  • VertexLM pass is used for lightmapped objects, when lightmaps are double-LDR encoded (mobile platforms). No realtime lighting is applied; pass is expected to combine textures with a lightmap.
표면 셰이더 작성
표면 셰이더 예제