3D Graphics
3D Graphics Sampler State에 대해 알아보자
hunhun4949
2024. 8. 21. 15:50
Sampler State가 뭔가?
Sampler State는 텍스처 데이터를 샘플링할 때, 샘플링 방식과 텍스처 좌표 처리 방식을 제어하기 위해 사용된다.
주로 Direct3D나 OpenGL과 같은 그래픽 API에서 사용되며, 렌더링 시 픽셀 셰이더 또는 텍스처 데이터를 사용하는 다른 셰이더가 텍스처를 읽는 방식을 설정하는데 필수적으로 사용된다.
Sampler State를 사용하는 상황
- 텍스처 필터링 제어
- 텍스처를 화면에 렌더링할 때, 텍스처 좌표가 픽셀에 정확하게 일치하지 않을수 있다. SamplerState에서 이런 일치하지 않는 픽셀과 텍스처를 어떻게 필터링할지 정한다. 필터링 방식은 포인트 필터, 선형 필터, 비등방성 필터 등 다양하다.
- 아래 그림은 선형 필터, 포인트 필터, 비등방성 필터 적용시 출력결과를 보여준다
- 포인트 필터
- 작동 원리 : 텍스처의 각 픽셀에 대해 가장 가까운 텍셀(텍스처의 픽셀)의 색상 값을 사용한다.
- 장점 : 계산이 빠르고 단순하다, 하드웨어 요구 사항이 낮다.
- 단점 : 이미지 품질이 낮을 수 있다. 특히 텍스처를 확대할 때 픽셀화(계단 현상)가 나타난다. 텍스처를 축소할 때 앨리어싱 현상이 발생할 수 있다.
- 사용 사례 :
- 픽셀 아트 스타일의 게임이나 그래픽에서 의도적으로 사용될 수 있다.
- 성능이 중요하고 이미지 품질이 덜 중요한 경우 사용된다.
- 선형 필터링
- 작동 원리 : 텍스처의 인접한 4개의 텍셀 값을 사용해서 보간한다.
- 장점 : 포인트 필터링보다 부드러운 결과를 제공한다. 계산 비용이 적당하다.
- 단점 : 텍스처를 크게 확대할 떄 흐릿해질 수 있다. 텍스처를 축소할 때 여전히 일부 앨리어싱이 발생할 수 있다.
- 사용 사례 :
- 대부분 실시간 3D 그래픽스 애플리케이션에서 기본적으로 사용된다.
- 중간 정도의 품질과 성능이 요구되는 경우 적합하다.
- 비등방성 필터링
- 작동 원리 : 텍스처를 보는 각도와 거리에 따라 다른 수준의 필터링을 적용한다. 텍스처의 기울어진 방향을 고려해서 샘플링 패턴은 조정한다.
- 장점 : 텍스처를 비스듬히 볼 떄도 높은 품질의 이미지를 제공하고 원거리 텍스처의 디테일을 더 잘 보존한다.
- 단점 : 계산 비용이 높다. 하드웨어 지원이 필요하며, 메모리 대역폭을 많이 사용한다.
- 사용 사례 :
- 고품질 그래픽이 요구되는 게임이나 시뮬레이션에서 사용된다.
- 특히 지면 텍스처나 먼 거리의 객체에 효과적이다.
- 텍스처 좌표 범위 처리
- 텍스처 좌표가 [0, 1] 범위를 벗어날 때, 텍스처 좌표를 어떻게 처리할지를 제어한다. 처리방법은 Wrap, Mirror, Clamp, Border 이렇게 네개가 있다.
- Wrap
- Mirror
- Clamp
- Border
- MIP 레벨 제어
- 텍스처 샘플링 시 MIP맵(Multum In Parvo 맵)을 사용해, 원본 텍스처의 축소판을 샐플링할 수 있다. MIP맵은 원본 텍스처의 축소된 버전으로, 거리에 따른 텍스처 품질 저하를 막는데 사용된다.
- 예시 : MinLOD(minimus Level of Detail)와 MaxLOD는 샘플링할 MIP맵 레벨의 범위를 정의하며, 이를 통해 턱스처의 세부 사항을 제어할 수 있다.
- 그림자 매핑 또는 비교 샘플링
- 샘플러 스테이트는 그림자 매핑이나 깊이 텍스처를 사용하는 효과에서 텍스처 값을 비교하는데 사용된다. 이런 경우, 샘플링된 값과 참조 값간의 비교를 통해 그림자 효과를 생성할 수 있다.
결론
샘플러 스테이트는 텍스처를 화면에 어떻게 적용할지 결정하는 중요한 도구다. 이를 통해 텍스처가 어떻게 보일지, 어떤 품질로 표시될지, 그리고 텍스처 좌표가 어떻게 처리될지를 제어할 수 있다.