디퍼드 셰이딩 렌더링 경로(Deferred shading rendering path)
레거시 디퍼드 라이팅 렌더링 경로(Legacy Deferred Lighting Rendering Path)

포워드 렌더링 경로 세부 정보

이 페이지에서는 Forward 렌더링 경로에 대해 자세하게 설명합니다.

포워드 렌더링 경로에서는 오브젝트에 영향을 미치는 광원에 따라 각 오브젝트를 한 번 이상의 패스에 렌더링합니다. 광원 자체도 설정 및 강도에 따라 포워드 렌더링에서 다르게 처리됩니다.

구현 세부 정보

포워드 렌더링에서 각 오브젝트에 영향을 미치는 가장 밝은 광원이 픽셀당 릿 모드에서 완전히 렌더링됩니다. 그런 다음 점 광원이 버텍스당 4 개까지 계산됩니다. 나머지 광원은 훨씬 빠르지만 근사치만 계산하는 스피리컬 하모닉스(SH)로 계산됩니다. 광원이 픽셀당 광원이 될지 여부를 결정하는 요인은 다음과 같습니다.

  • 렌더 모드가 Not Important 로 설정된 광원은 항상 버텍스당 또는 SH 입니다.
  • 가장 밝은 방향 광원은 항상 픽셀당입니다.
  • 렌더 모드가 Important 로 설정된 광원은 항상 픽셀당입니다.
  • 위로 인해 광원 수가 현재 Pixel Light Count Quality Setting보다 적어지면 밝기를 줄이기 위해 더 많은 광원이 밝기 내림차순에 픽셀당으로 렌더링됩니다.

각 오브젝트는 다음과 같이 렌더링됩니다.

  • 베이스 패스는 픽셀당 방향 광원 하나와 모든 버텍스당/SH 광원을 적용합니다.
  • 나머지 픽셀당 광원은 추가 패스에 각 광원마다 한 패스씩 렌더링됩니다.

예를 들어 여러 광원에 영향을 받는 오브젝트(아래 그림에서 광원 AH 에 영향을 받는 원)가 있는 경우를 가정해 보겠습니다.

광원 AH 가 모두 컬러와 강도가 동일하고 자동 렌더링 모드라고 가정합니다. 따라서 이 오브젝트에 대해 광원은 정확히 알파벳 순서대로 정렬됩니다. 가장 밝은 광원(AD)은 픽셀당 릿 모드로 렌더링되고 다음 광원이 최대 4 개까지(DG)가 버텍스당 릿 모드로 렌러딩되고 마지막으로 나머지 광원(GH)이 SH 로 렌더링됩니다.

광원 그룹은 오버랩됩니다. 예를 들어 마지막 픽셀당 광원은 버텍스당 릿 모드에 블렌드되므로 오브젝트와 광원이 움직일 때 빛이 갑자기 나타나는 “광원 팝” 현상이 감소합니다.

베이스 패스

베이스 패스는 픽셀당 방향 광원 하나와 모든 SH/버텍스 광원으로 오브젝트를 렌더링합니다. 셰이더의 모든 라이트맵과 앰비언트 및 이미시브 조명도 추가합니다. 이 패스에서 렌더링되는 방향 광원에는 섀도우가 있을 수 있습니다. 라이트매핑된 오브젝트는 SH 광원에 조명을 받지 않습니다.

셰이더에서 “OnlyDirectional” 패스 플래그를 사용하는 경우 포워드 베이스 패스는 주 방향 광원, 앰비언트/광원 프로브 및 라이트맵만 렌더링합니다. SH 및 버텍스 광원은 패스 데이터에 포함되지 않습니다.

추가 패스

이 오브젝트에 영향을 미치는 각각의 추가 픽셀당 광원에 대해 추가 패스가 렌더링됩니다. 이 패스의 광원은 기본적으로 섀도우가 없습니다. 따라서 포워드 렌더링에서는 multi_compile_fwdadd_fullshadows 배리언트 단축키를 사용하지 않는 한 섀도우가 있는 방향 광원 1 개가 지원됩니다.

퍼포먼스 고려 사항

스피리컬 하모닉스 광원은 매우 빨리 렌더링됩니다. 광원 적용에는 CPU 리소스가 아주 조금 사용되고 GPU 리소스는 _ 사용되지 않습니다_. 즉, 베이스 패스는 항상 SH 라이팅을 계산하지만 SH 광원의 작동 방식으로 인해 SH 광원 수에 관계 없이 사용되는 리소스의 양은 항상 동일합니다.

SH 광원의 단점은 다음과 같습니다.

  • 픽셀이 아닌 오브젝트의 버텍스에서 계산됩니다. 따라서 광원 쿠키 또는 노멀 맵을 지원하지 않습니다.
  • SH 조명은 프리퀀시가 매우 낮습니다. SH 광원으로는 선명한 조명 전환이 불가능합니다. 또한 산란광에만 영향을 미칩니다(스페큘러 하이라이트에는 프리퀀시가 너무 낮음).
  • SH 조명은 로컬이 아니고 일부 표면에 가까이 있는 점 또는 스폿 SH 광원은 잘못 표시됩니다.

요약하면, SH 광원은 작은 동적 오브젝트에 유용한 경우가 많습니다.

디퍼드 셰이딩 렌더링 경로(Deferred shading rendering path)
레거시 디퍼드 라이팅 렌더링 경로(Legacy Deferred Lighting Rendering Path)