3D Rendering

Tiled Forward Shading(Forward+)

Keisa 2023. 9. 28. 13:17

포워드의 단점인 여러개의 라이팅을 다루는데 한계가 있는 점을 보완한 렌더링. 라이트를 타일별로 컬링하여 적용되는 라이트들만을 타일별로 구분하여 픽셀 셰이더 단계에서 적용.

 

렌더링 과정을 간단히 요약하자면 아래와 같습니다.

1. 화면을 NxN 타일 크기로 나누고, 타일과 교차되는 Light 들을 각 타일에 할당합니다.

2. 실제 오브젝트를 렌더링할때, 현재 픽셀이 어느 타일에 포함되는지 찾고, 찾은 타일에 포함되어있는 라이트들을 가져와 현재 픽셀에 적용합니다.

 

Tiled Forward Rendering은 Tiled Deferred Rendering의 확장 혹은 수정 버젼입니다.

이 둘과 비교해서 Tiled Forward Rendering의 장점은 아래와 같습니다.

  1. Transparency 지원
  2. 하드웨어 MSAA 지원
  3. 서로 다른 쉐이더 지원

Tiled Forward Rendering과 퍼포먼스

1. Light 크기에 따른 퍼포먼스

  - Light 크기가 전체 화면을 덮을 만큼 크다면, 각 픽셀은 거의 모든 라이트에 대한 라이팅 처리를 진행할 것입니다. 이경우에 Tile을 만들어 Light를 할당하는 작업이 무의미 합니다.

2. Top-View or First-Person View

  - Top-View의 경우 대부분의 오브젝트가 View기준 가장 먼쪽에 몰려있습니다. 이 경우는 Tile 최소, 최대 Depth 값을 기준으로 Culling 되는 Light는 많지 않을 것입니다.

  - First-Person VIew의 경우는 오브젝트들이 서로다른 Depth 위치에 골고루 배치되어있기 때문에 각 Tile의 최소, 최대 값을 사용해 Light를 Culling하는 것이 도움이 됩니다.

Opaque vs Transparent Object의 Light Culling과 차이점

1. Opaque의 경우는 그림2 (a) 노란색 영역과 겹치는 라이트만 고려해도 문제 없습니다.

 - Depth 기준 Min, Max 영역으로 Light를 제거합니다.

2. Transparent의 경우는 뒤에있는 Opaque 의 색상 또한 다 표시됩니다.

 - Depth의 Max 값 기준으로만 Light를 제거 합니다.

 

※  GPGPU(General Purpose Graphics Procesiing Units)

그래픽 처리를 위한 보조장치였떤 GPU를 보완하여 컴퓨터의 중앙처리 장치인 CPU를 대신하여 모든 데이터 연산 및 처리를 하는 GPU 상의 범용 계산 장치