728x90
SamplerState 는 텍스처를 샘플링할 때 사용되는 설정을 정의하는데 사용되는 객체이다.
이 객체는 그래픽 파이프라인에서 텍스처 샘플링 작업에 영향을 미치며, 색상, 레벨등에 다양한 샘플링 매개변수를 제어할 수 있도록 도와준다.
주로 택스처 필터링, 주소모드 및 텍스처의 래핑을 구성하는데 사용된다.
주요역할
- 텍스처 필터링 설정
- 텍스처를 확대 또는 축소할때 어떻게 보간할지 결졍할 수 있다.
- 텍스처가 화면에 확대 또는 축소될 때 부드럽게 나타나게 하거나, 텍스처의 뾰족한 가장자리를 제어할 수 있다.
- 우리가 흔히 아는 안티엘리어싱을 말한다.
- 주소모드 설정 ( UV좌표 설정)
- 텍스처 를 벗어나는 텍스처 좌표를 처리하는 방법을 지정할 수 있다.
- 텍스처가 반복되거나( 타일맵 )
- 경계 텍셀에서 클램핑 되거나 ( 선형보간 )
- 로 처리방식을 지정한다.
- Mipmap 레벨 설정
- 텍스처의 다양한 해상도 버전을 이야기한다.
- 거리가 멀 시 해당 객체의 버텍스의 개수를 낮추거나 가까울때 더 많게하여 자세히 표현하게 하는 정도의 최적화를 이야기한다.
- 비선형 필터링 및 비선형 왜곡
- 비선형 필터링 및 왜곡 보정을 통해 텍스처가 가까이 다가갔을때 주변 픽셀과 일정값을 보정하여 흐릿하게 보이게 하거나. 보정을 하지 않고 딱딱 끊어지는 도트타입의 픽셀을 보이게 할 수 있다.
SamplerState::SamplerState()
{
// 안티엘리어싱 할 때 어떤식으로 처리할것인지.
/*
D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
선형보간으로 이미지의 픽셀 주변이 흐릿하게 처리해줌. 안티엘리어싱
D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
픽셀마다 딱딱 끊기게 흐릿하게 보간하지 않는다.
3D에서는 리니어를 많이씀
2D에서는 포인트를 많이씀
D3D11_TEXTURE_ADDRESS_WRAP
uv가 넘쳤을 때. 0에서 1까지 인데, 0부터 10까지 잡아서 넘치게 되었을 때
*/
desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
desc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
desc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
desc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;;
desc.ComparisonFunc = D3D11_COMPARISON_NEVER;
desc.MinLOD = 0;
desc.MaxLOD = D3D11_FLOAT32_MAX;
//LOD(Level Of Detail) : 카메라의 거리에 따라서 퀄리티를 다르게 하는 것
// 최적화 기법중 하나임
/*
D3D11_TEXTURE_ADDRESS_WRAP = 1,
타일맵처럼 여러개를 찍어준다.
D3D11_TEXTURE_ADDRESS_MIRROR = 2,
// 거울처럼 뒤집어주는것. uv가 넘어가면 뒤집어준다.
D3D11_TEXTURE_ADDRESS_CLAMP = 3,
// 끝에서 끊어서 다시 역순으로 uv를 밀어넣어준다.
D3D11_TEXTURE_ADDRESS_BORDER = 4,
D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5
*/
Changed();
}
위와같은 설정을 제공함으로써. 더 효율적인 동작을 보장한다.
728x90
'컴퓨터 용어 정리' 카테고리의 다른 글
DirectX Proejction행렬 (0) | 2023.10.27 |
---|---|
DirectX RasterizerSate (0) | 2023.10.19 |
HeightMap (0) | 2023.10.19 |
참조에 의한 호출 ( Call by Reference ) (0) | 2023.10.12 |
값에 의한 호출 ( Call by Value ) (0) | 2023.10.12 |