Version: 5.3
고급 ShaderLab 항목
셰이더 작성 시 성능 팁

Unity의 렌더링 파이프라인

셰이더는 오브젝트가 단독으로 표시되는 방법(머티리얼 프로퍼티)과 광원에 반응하는 방법을 모두 정의합니다. 조명 계산을 셰이더 내부에 빌드해야 하고, 가능한 광원 및 섀도우 타입이 많기 때문에 “간단히 작동하는” 양질의 셰이더를 쓰려면 많은 노력이 필요합니다. 이 작업을 쉽게 할 수 있도록 Unity에는 모든 조명, 섀도우, 라이트매핑, 포워드 대 디퍼드 렌더링 작업이 자동으로 처리되는 표면 셰이더가 있습니다.

이 문서에서는 Unity의 조명 및 렌더링 파이프라인의 특징과 표면 셰이더 씬의 배경에서 수행되는 작업에 대해 설명합니다.

렌더링 경로

조명이 적용되는 방법과 사용되는 셰이더의 패스는 사용되는 렌더링 경로에 따라 결정됩니다. 셰이더의 각 패스는 해당 조명 타입을 패스 태그를 통해 알립니다.

포워드 렌더링 경로

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

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

디퍼드 셰이딩 경로

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

레거시 디퍼드 라이팅 경로

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

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

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

  • Vertex 패스는 라이트맵이 적용되지 않은 오브젝트에 사용됩니다. 모든 광원은 고정 기능 OpenGL/Direct3D 조명 모델(블린퐁)을 사용하여 동시에 렌더링됩니다.
  • VertexLMRGBM 패스는 라이트맵이 RGBM으로 인코딩된 경우(PC 및 콘솔)에 라이트맵이 적용된 오브젝트에 사용됩니다. 실시간 조명은 적용되지 않고 패스는 텍스처를 라이트맵과 결합해야 합니다.
  • VertexLMM 패스는 라이트맵이 double-LDR로 인코딩된 경우(모바일 플랫폼)에 라이트맵이 적용된 오브젝트에 사용됩니다. 실시간 조명은 적용되지 않고 패스는 텍스처를 라이트맵과 결합해야 합니다.

참고 항목

고급 ShaderLab 항목
셰이더 작성 시 성능 팁