Jump to content

  • Log In with Google      Sign In   
  • Create Account

SampleCmpLevelZero just returns black!


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 five1mon   Members   -  Reputation: 152

Like
0Likes
Like

Posted 06 June 2012 - 05:39 AM

Hey
I've started using a new engine and am going to modify the shadow generation. I'm currently strugling with implementing hardware PCF in the shader. SampleCmpLevelZero is always returning 0 and the screen goes black. The code used to work before I optimized. I'm calling SampleCmpLevelZero with the same uv and depth that functioned well with the unoptimized code and I'm using following sampler state:

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;
};



The same that I found in the documentation. I had a look at what format the texture resource, depth stencil view and shader resource view were using and it seemed to be the same that worked in the cascade shadow sample that comes with the directx SDK (DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT). What I could see all other settings were identical.

When I view the process in PerfStudio the depth map seems valid (and it workes if I just call Sample). What can be the reason for this behaviour. Has anybody experienced the same or know what I should check?


Thanks a lot :-)

Edited by five1mon, 06 June 2012 - 05:45 AM.


Sponsor:

#2 MJP   Moderators   -  Reputation: 11774

Like
0Likes
Like

Posted 06 June 2012 - 10:51 PM

I don't use effects so I might be wrong about this, but I don't think that there's a "ComparisonFilter" member. According the docs there's only "Filter". So you should try setting Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT and see if that works. This would also be consistent with how it works if you set up a sampler desc structure in C++.

#3 five1mon   Members   -  Reputation: 152

Like
0Likes
Like

Posted 07 June 2012 - 08:38 AM

Thanks MJP. Maybe you're right, I've seen examples of both implementations?

However that didn't solve my problem but I found another solution. It turned out that I had to set the sampler on the application side (PSSetSamplers). This was only the case for
SamplerComparisonState, all other samplers worked fine when declared in the shader. The reason I didn't try that sooner was that it got a little tricky to do that in our engine framework. I don't know why this is happening but maybe there's some minor driver bug? I'm using ATI hardware.

Edited by five1mon, 07 June 2012 - 08:38 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS