디지털/Unity

[Unity] Render Texture (Depth stencil Format)

GaGil 2025. 3. 4. 15:28

 [ Render Texture _ (Inspector) Depth Stencil Format ]

Depth Stencil Format은 렌더링 과정에서 깊이와 스텐실 정보를 저장하는 포맷을 설정하는 옵션.
렌더링 품질과 성능을 조절할 수 있음. 

 

 

1. 깊이 정보 저장
- 깊이 버퍼는 장면의 각 픽셀에 대한 깊이 정보를 저장하여 물체의 앞뒤 관계를 결정.
- 카메라는 어떤 물체가 앞에 있고 어떤 물체가 뒤에 있는지를 알 수 있음.
2. 스텐실 정보 저장:
- 스텐실 버퍼는 특정 픽셀에 대한 추가 정보를 저장
- 특정 렌더링 효과를 구현할 수 있으며, 예를 들어 특정 영역에만 그림자를 적용하거나 특정 객체를 마스킹하는 데 활용.

[스텐실]

컴퓨터 그래픽스에서 특정 픽셀에 대한 추가 정보를 저장하고 렌더링 효과를 제어하는 데 사용되는 개념.

- 마스킹 : 특정 영역에만 렌더링 효과를 적용하거나 생략 가능. (예: 특정 오브젝트에만 그림자 적용.)
- 그림자 처리 : 스텐실 정보를 사용하여 그림자를 계산하고, 어떤 픽셀이 그림자를 받아야 할지를 결정.
- 효과 제어 :반사, 투명도 조절 등 다양한 그래픽 효과 구현에 활용.
- 성능 최적화 : 불필요한 렌더링 작업을 줄여 성능 향상. 특정 영역을 건너뛰고 렌더링할 필요가 없는 경우 처리.
- 저장 방식 : 일반적으로 8비트로 저장되며, 각 픽셀에 대해 다양한 값을 가짐.
                     이를 통해 복잡한 장면에서 다양한 렌더링 효과를 효과적으로 구현할 수 있음.


* D16_UNORM : 16비트 깊이 정보로 각 픽셀의 깊이를 저장.
  메모리 사용량이 적고 성능이 좋지만, 깊이 정밀도가 낮아 복잡한 장면에서 아티팩트 발생 가능.
* D24_UNORM : 24비트 깊이 정보를 제공하여 더 높은 정밀도.
  깊이 버퍼에서 더 많은 정보를 처리할 수 있어 복잡한 장면에서 성능 향상.
* D24_UNORM_S8_UINT : 24비트 깊이 정보와 8비트 스텐실 정보를 결합.
  깊이와 스텐실 정보를 함께 사용할 경우 유용.
* D32_SFLOAT : 32비트 부동소수점 깊이 정보를 제공.
  매우 높은 정밀도가 필요할 때 사용되며 큰 거리 범위 처리 가능.
* D32_SFLOAT_S8_UINT : 32비트 부동소수점 깊이 정보와 8비트 스텐실 정보를 결합.
  깊이와 스텐실 모두 높은 정밀도가 필요할 때 유용.
* S8_UINT : 8비트 스텐실 정보만 제공.
  깊이 정보가 필요 없는 경우 스텐실 버퍼만 사용할 때 사용.
* D16_UNORM_S8_UINT : 16비트 깊이 정보와 8비트 스텐실 정보를 결합.
  메모리 사용량을 줄이면서도 기본적인 깊이 및 스텐실 처리 가능.

 

Render Texture 이미지 출력되지 않는 이슈 발생

 
D32_SFLOAT_S8_UINT 저사양 폰에서 이미지 보이지 않는 이슈 ]

- 스텐실 버퍼를 처리하는 과정에서 문제가 발생했을 가능성이 높음.
- 저사양 기기에서는 불필요한 스텐실 정보를 제외한 D32_SFLOAT 포맷이 더 안정적이고 성능이 좋을 수 있음.

 
* D32_SFLOAT

- 32비트 부동소수점 깊이 정보만 사용.
- 깊이 정밀도가 매우 높아 넓은 거리 범위에서도 정확한 깊이 값을 제공.
- 스텐실 정보가 필요 없는 경우에 적합.
 

* D32_SFLOAT_S8_UINT

- 32비트 부동소수점 깊이 정보와 8비트 스텐실 정보를 함께 사용.
- 스텐실 정보는 특정 렌더링 효과(예: 마스킹, 그림자)에 사용되며, 이 정보를 필요로 하는 경우 유용.
- 저사양 기기에서는 스텐실 버퍼 처리로 인해 성능 저하나 호환성 문제를 일으킬 수 있음.

반응형