UE5

[CG] 레스터라이저 상태(Rasterizer State)

검정색필통 2025. 1. 15. 13:16

레스터라이저 상태(Rasterizer State)

  • 3D 그래픽스 파이프라인에서 렌더링 단계의 중요한 설정 중 하나로, 레스터라이제이션(Rasterization) 과정을 제어하는 설정을 말함
  • 레스터라이제이션3D 객체를 2D 화면에 픽셀로 변환하는 과정
  • 이 과정에서 각 픽셀에 대해 깊이, 면 방향, 채우기 방식 등을 결정하는데, 이를 레스터라이저 상태로 제어

 

레스터라이저 상태가 제어하는 것들

  • 컬링 (Culling)
    • 컬링은 어떤 면을 렌더링에서 제외할지 결정하는 설정
    • 3D 모델은 면(Face)으로 이루어져 있으며, 면의 방향(정점의 순서)에 따라 앞면(Front Face)과 뒷면(Back Face)이 결정됨
  • 폴리곤 채우기 모드 (Polygon Fill Mode)
    • 폴리곤을 어떻게 화면에 렌더링할지를 결정
  • 깊이 바이어스 (Depth Bias)
    • 깊이 값을 미세하게 조정하는 설정
    • 레스터화된 픽셀의 깊이 값(Depth)이 다른 픽셀과 너무 가까워 Z-fighting 문제가 발생할 수 있는데, 이를 방지하기 위해 깊이 바이어스를 사용
  • 스캔라인 방식 (Scissor Test)
    • 화면의 특정 영역(Rectangle)만 렌더링되도록 제한하는 기능
    • Scissor Test가 활성화되면, 지정된 영역 밖의 픽셀은 렌더링되지 않음
  • 안티앨리어싱 (Anti-aliasing)
    • 레스터라이제이션 과정에서 계단현상(Aliasing)을 줄이기 위해 안티앨리어싱을 설정할 수 있음
  • 클리핑 (Clipping)
    • 카메라 뷰포트 밖에 있는 픽셀을 잘라내는(Clip) 기능
    • 클리핑은 화면에 보이지 않는 부분을 렌더링하지 않도록 최적화하는데 사용
D3D11_RASTERIZER_DESC rasterDesc;
rasterDesc.FillMode = D3D11_FILL_SOLID;      // 폴리곤을 Solid 모드로 채움
rasterDesc.CullMode = D3D11_CULL_BACK;       // 뒷면 컬링
rasterDesc.DepthBias = 0;                    // 깊이 바이어스 없음
rasterDesc.ScissorEnable = true;             // 스캔라인 테스트 활성화
rasterDesc.AntialiasedLineEnable = true;     // 안티앨리어싱 활성화

 

 

왜 레스터라이저 상태가 중요한가?

  • 퍼포먼스 최적화
    • 보이지 않는 면을 렌더링하지 않도록 컬링을 설정하면 렌더링 속도가 빨라짐
  • 렌더링 품질 개선
    • 폴리곤 채우기 모드와 안티앨리어싱 설정을 통해 화면의 품질을 높일 수 있음
  • Z-Fighting 문제 해결
    • 깊이 바이어스를 조정하여 Z-Fighting 문제를 해결할 수 있음