DirectX 10

그림자맵 샘플링

공대나온남자 2011. 6. 18. 17:11

 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