DX10에서는 그림자맵 샘플링을 위한 쉐이더 함수를 제공한다. 바로 SampleCmp() 이다.
http://msdn.microsoft.com/en-us/library/bb509696(v=vs.85).aspx
일반적인 텍스쳐 샘플과는 다르게 샘플러를 SamplerState 대신 SamplerComparisonState 를 사용해야 한다.
http://msdn.microsoft.com/en-us/library/bb509644(v=vs.85).aspx
SamplerComparisonState g_ShadowSampler
{
// sampler state
Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
AddressU = MIRROR;
AddressV = MIRROR;
// sampler comparison state
ComparisonFunc = LESS;
};
이런 식으로 설정하는데,
MSDN 예제 코드를 보면,
SamplerComparisonState ShadowSampler { // sampler state Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = MIRROR; AddressV = MIRROR; // sampler comparison state ComparisonFunc = LESS; ComparisonFilter = COMPARISON_ MIN_MAG_LINEAR_MIP_POINT; };
이렇게 되있는데 제대로 동작하지 않는다. ComparisonFilter은 존재하지 않는다. 그냥 Filter을 설정하면 되는데 대신 COMPARISON 이 붙은 놈으로 설정해주어야 한다.
필터링을 사용하면 좀 더 나은 결과를 얻을 수 있다. 구린건 매한가지긴 하지만...

'DirectX 10' 카테고리의 다른 글
Render Target, Depth/Stencil Buffer Clear (0) | 2011.07.23 |
---|---|
공유 텍스쳐 설정 (0) | 2011.06.16 |
텍스쳐 해제 (0) | 2011.06.13 |
Rendering to multi window in DX10 (0) | 2011.03.13 |
쉐이더 파일 내에서 Render State 설정 (0) | 2010.11.20 |