Unity 보수적 래스터화 (Conservative Rasterization) 가이드
개요
Unity의 보수적 래스터화는 렌더링에서 삼각형에 의해 부분적으로 덮혀 있는 픽셀을 무조건적으로 래스터화하는 기술입니다. 이 기술은 오클루전 컬링, 충돌 검사, 가시성 검사와 같이 확실성을 요구하는 상황에서 매우 유용합니다.
기본 개념
- 래스터화: 삼각형으로 덮이는 픽셀을 인식하여 벡터 데이터를 픽셀 데이터로 변환하는 과정입니다.
- 보수적 래스터화: GPU가 픽셀이 커버리지와 관계없이 삼각형에 의해 부분적으로 덮일 때 래스터화를 적용합니다.
장단점
| 장점 | 단점 |
|---|---|
| 확실한 렌더링 결과 제공 | GPU 프레임 시간이 증가할 수 있음 |
| 다양한 활용 가능 | 더 많은 프래그먼트 생성 |
렌더 파이프라인 호환성
보수적 래스터화는 여러 렌더 파이프라인에서 지원됩니다:
| 기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인 (URP) | 고해상도 렌더 파이프라인 (HDRP) | 커스텀 SRP |
|---|---|---|---|---|
| Conservative | 지원 | 지원 | 지원 | 지원 |
사용법
보수적 래스터화는 Pass 블록 및 SubShader 블록에서 다음과 같이 사용할 수 있습니다.
구문
Conservative <enabled>
예제
- 보수적 래스터화를 활성화하는 예제:
Shader "Examples/CommandExample"
{
SubShader
{
// SubShader 정의 코드가 들어갑니다.
Pass
{
// 이 Pass에서 보수적 래스터화 활성화
Conservative True
// 이 Pass의 나머지 코드
}
}
}
- SubShader에서 보수적 래스터화를 활성화하는 예제:
Shader "Examples/CommandExample"
{
SubShader
{
// 이 SubShader에서 보수적 래스터화 활성화
Conservative True
// SubShader 정의 코드가 들어갑니다.
Pass
{
// 이 Pass의 나머지 코드
}
}
}
하드웨어 지원 확인
하드웨어가 보수적 래스터화를 지원하는지 확인하려면 SystemInfo.supportsConservativeRasterAPI 프로퍼티를 사용할 수 있습니다. 지원하지 않는 하드웨어에서는 이 커맨드가 무시됩니다.
마무리
보수적 래스터화는 특정 상황에서 렌더링의 신뢰성을 높이고, 연산의 정확성을 보장할 수 있는 강력한 도구입니다. 이를 활용해 다양한 렌더링 개선을 시도할 수 있습니다.