Tonemapping (톤 매핑)
Tonemapping (톤 매핑)
Unity Material의 Surface Type: Opaque와 Transparent 비교 정리
Unity에서 Material의 Surface Type은 Opaque(불투명) 와 Transparent(투명) 로 나뉩니다.
이 설정은 렌더링 파이프라인과 쉐이더에 따라 표면의 렌더링 방식을 결정합니다.
Surface Type이란?
- Surface Type은 Unity에서 Material의 표면 속성을 정의하는 속성입니다.
- 주로 Shader Graph, URP(Standard Shader), HDRP 등에서 사용됩니다.
- 표면의 광학 특성을 정의하여 렌더링 방식을 결정합니다.
1. Opaque (불투명)
특징
- 불투명한 표면으로 빛이 통과하지 않는 물체에 사용합니다.
- 광원에 의해 완전히 가려지거나 반사되는 특성을 가집니다.
- 깊이 테스트와 깊이 쓰기가 활성화되어 있어 Z-버퍼를 사용합니다.
- 렌더링 순서가 앞에서 뒤로 그려집니다.
- 렌더링 비용이 적고 성능이 우수합니다.
사용 예
- 벽, 바위, 지면 등 불투명하고 단단한 물체
- 캐릭터 모델이나 건물 등
장점
- 빠른 렌더링 속도
- 깊이 정렬이 잘 이루어져 Z-파이팅이 거의 발생하지 않음
주의점
- 투명도가 없는 재질이므로 반투명한 효과를 구현할 수 없음
2. Transparent (투명)
특징
- 투명하거나 반투명한 표면을 표현할 때 사용됩니다.
- 빛이 일부 통과하거나 굴절되는 재질을 표현합니다.
- 깊이 쓰기가 비활성화되어 있어 Z-정렬 문제가 발생할 수 있습니다.
- 렌더링 순서가 뒤에서 앞으로 그려집니다.
- 렌더링 비용이 높아 성능에 영향을 줄 수 있습니다.
사용 예
- 유리, 물, 안개, 투명한 캐릭터 등
- 입자 효과(Particles)
장점
- 투명도 표현이 가능하여 반투명, 반사 등을 자연스럽게 표현
- UI 요소나 물체 간 중첩 표현에 유리
주의점
- 렌더링 순서에 민감하여 Z-파이팅 문제가 발생할 수 있음
- 렌더링 성능 저하가 있을 수 있음
Opaque와 Transparent 비교
| 속성 | Opaque | Transparent |
|---|---|---|
| 표면 특성 | 불투명, 빛이 통과하지 않음 | 투명, 반투명, 빛이 일부 통과 |
| 렌더링 순서 | 앞에서 뒤로 | 뒤에서 앞으로 |
| 깊이 테스트 | 활성화 (ZWrite On) | 비활성화 (ZWrite Off) |
| 렌더링 성능 | 빠름 | 느림 (비용 증가) |
| 사용 예 | 벽, 건물, 캐릭터 | 유리, 물, 안개, 투명 캐릭터 |
| Z-정렬 문제 | 거의 없음 | 있음 (Z-파이팅 문제) |
속성 설명
2. 렌더링 순서 (Rendering Order)
- Unity에서 렌더링 순서는 표면의 깊이 정보를 사용하여 결정됩니다.
- Opaque: 앞에서 뒤로 렌더링
- Transparent: 뒤에서 앞으로 렌더링
3. 깊이 테스트 (Depth Testing)
- 렌더링할 픽셀의 깊이값을 검사하여 현재 픽셀이 기존 픽셀보다 앞에 있는지 확인하는 과정
- Opaque: 깊이 테스트 활성화 (ZWrite On)
- Transparent: 깊이 쓰기 비활성화 (ZWrite Off)
4. 렌더링 성능 (Rendering Performance)
- Opaque: 빠른 렌더링 속도
- Transparent: 렌더링 속도가 느림, 블렌딩 연산으로 성능 저하
정리
- Opaque는 불투명 재질로 성능이 우수하며 Z-정렬이 안정적입니다.
- Transparent는 투명 재질로 표현력이 높지만,
- Z-정렬 문제와 렌더링 성능 저하를 고려해야 합니다.
- 두 Surface Type을 적절히 활용하여
- 효과적인 성능 관리와 자연스러운 시각 효과를 구현할 수 있습니다.
- 표현할 객체의 특성과 렌더링 비용을 고려하여 Surface Type을 선택하는 것이 중요합니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.