Unity ShaderLab: 컬링(Cull)
개요
컬링은 폴리곤이 카메라를 향하는 방향에 따라 GPU가 그려야 할 폴리곤을 설정하는 과정입니다. 이 과정을 통해 불필요한 그리기를 방지하고 렌더링 효율성을 향상시킬 수 있습니다. 기본적으로 GPU는 백페이스 컬링(Backface Culling)을 사용하여 사용자가 보는 방향과 반대 방향의 폴리곤은 렌더링하지 않습니다.
렌더 파이프라인 호환성
| 기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인 (URP) | 고해상도 렌더 파이프라인 (HDRP) | 커스텀 SRP |
|---|---|---|---|---|
| Cull | 지원 | 지원 | 지원 | 지원 |
사용법
컬링 커맨드는 Pass 블록이나 SubShader 블록에서 사용할 수 있습니다. 해당 블록의 렌더 상태를 변경하여 그리기 설정을 조정합니다.
예제 코드
1. 기본 사용 예제
Shader "Examples/CommandExample"
{
SubShader
{
// 서브셰이더에서 컬링 비활성화
Cull Off // 투명 객체 또는 양면 벽과 같은 효과에 사용됩니다.
Pass
{
// 패스에 대한 나머지 코드
}
}
}
2. 패스에서 컬링 비활성화
Shader "Examples/CommandExample"
{
SubShader
{
Pass
{
// 이 패스에 대해서는 컬링 비활성화
Cull Off
// 패스에 대한 나머지 코드
}
}
}
유효한 파라미터 값
| 파라미터 값 | 설명 |
|---|---|
| Back | 카메라를 등진 폴리곤을 컬링합니다 (기본값). |
| Front | 카메라를 향하는 폴리곤을 컬링합니다. |
| Off | 폴리곤의 방향에 관계없이 컬링하지 않습니다. |
추가 활용 예제
- 투명한 오브젝트: 컬링을 비활성화하여 쓰이는 작업 왜곡을 줄이고, 뒷면이 보이는 구조물로 원활한 시각적 효과를 낼 수 있습니다.
- 양면 벽: 두께가 없는 벽을 구현할 때, 컬링을 비활성화하여 양쪽에서 모두 볼 수 있도록 설정할 수 있습니다.
결론
컬링은 3D 렌더링에서 성능을 최적화하는 데 중요한 역할을 합니다. 필요에 따라 적절한 컬링 방법을 선택하여 최적의 렌더링 결과를 얻을 수 있습니다. ShaderLab 사용 시 위의 예제를 참고하여 적절한 컬링 설정을 적용해 보세요.