Action disabled: source

Unity's Rendering Pipeline

Shaders define both how an object looks by itself (its material properties) and how it reacts to the 새이더는 어떻게 오브젝트가 스스로 볼지(물체 속성들)를 정의 한다. 그리고 어떻게 빛에 반응 할지를 정의 한다.

빛 계산은 새이더에서 만들어 져야하고 많은 가능한 빛과 새도우 종류들이 있기 때문에 작동한는 질적인 새이더를 쓰는 것은 태스크에 포함되어질 것이다. 쉽게 말하자면 유니티3은 모든 lighting, shadowing, lightmapping, forward vs. deferred lighting things를 자동으로 관리해 주는 Surface Shaders를 소개하고 있다.

이 문서는 유니티의 lighting & rendering pipeline의 특성과 Surface Shaders 이면에 무엇이 진행되는지 기술하고 있다.

Rendering Paths

조명이 어떻게 적용되고 어떠한 쉐이더의 Passes이 사용되는지는 어떠한Rendering Path가 사용되는지에 달려 있습니다. 하나의 쉐이더에서 각 패스는 Pass Tags를 통해서 그것의 조명 타입과 커뮤니케이트 합니다.

  • Deferred Lighting에서, PrepassBasePrepassFinal 패스가 사용됩니다.
  • Forward Rendering에서, ForwardBaseForwardAdd 패스가 사용됩니다.
  • In Vertex Lit에서, Vertex, VertexLMRGBM 그리고 VertexLM 패스가 사용됩니다.

Deferred Lighting path

PrepassBase 패스는 normals & 반사적인 대표자를 그립니다; PrepassFinal 패스는 텍스쳐, 조명 & 발산하는 재질 속성을 결합하는 것에 의해서 마지막 색을 표현합니다. 모든 일반적인 씬안의 조명은 스크린 공간에서 별개로 행해집니다. 자세한 내용을 위해서는 Deferred Lighting를 살펴보시기 바랍니다.

Forward Rendering path

ForwardBase 패스는 주변색, 조명맵, 방향성 있는 조명 그리고 중요하지 않은 조명 (vertex/SH)을 한 번에 표현합니다. ForwardAdd 패스는 어떠한 첨부적인 픽셀당 조명을 위해서도 사용됩니다; 그러한 조명에 의해 비춰지는 물체당 하나의 실시가 행해집니다. 자세한 내용을 위해서는 Forward Rendering를 살펴보시기 바랍니다.

Vertex Lit Rendering path

정점 조명이 프로그래밍이 가능한 쉐이더를 지원하지 않는 플랫폼에서 주로 종종 사용되기 때문에 Unity는 lightmapped vs. lightmapped의 케이스들을 처리하기 위해서 내부적으로 다수의 쉐이더 순열을 생성할 수 없습니다. 따라서 lightmapped과 non-lightmapped 물체들을 처리하기 위해서는 다수의 패스들이 명확하게 쓰여져야만 합니다.

  • Vertex non-lightmapped 물체를 위해서 사용됩니다. 모든 조명은 정해진 함수 OpenGL/Direct3D 조명 모델을 사용해서 한 번에 표현됩니다. (Blinn-Phong)
  • VertexLMRGBM 패스는lightmapped 물체를 위해서 사용됩니다. 어떠한 실시간 조명도 적용되지 않습니다; 패스는 텍스쳐와lightmap을 결합하도록 기대됩니다. lightmaps 이RGBM 인코딩될 때 (이것은 대부분의 데스크탑과 콘솔에서 나타납니다).
  • VertexLMM 패스는lightmapped 물체를 위해서 사용됩니다. 어떠한 실시간 조명도 적용되지 않습니다; 패스는 텍스쳐와lightmap을 결합하도록 기대됩니다. lightmaps 이double-LDR 인코딩될 때 (이것은 모바일과 오래된 데스크탑에서 나타납니다).

역링크