[DX11] Sample Distribution Shadow Maps - Bug

Started by
0 comments, last by yoshi_lol 9 years, 6 months ago

Hey, first post! happy.png

I'm trying to implement a simple version of SDSMs in a Forward+ render-path, double checked everything but I keep running into this weird issue, where the output image looks all wrong (DevCtxt->Present):

Z97Ko.jpg

Here's what's strange to me: if I step through the DrawIndexed events using the VS2013 debugger it looks correct - only the last step (Present) seems to mess with the image. I was lucky enough to quickly grab one of the (occasional) correct images at runtime:

sMNnb.jpg

Has anyone ever encountered something similiar?

It's definitely a mistake on my part but I can't pinpoint it after 4 hours.

I've attached the vsglog2013 files, which includes the pipeline states and the HLSL shader source, so feel free to comment on that. wub.png

P.S.:

1) I'm not caching any shadow maps whatsoever - I am using the depth-buffer from the last frame to calculate the SDSM partitions though (avoids a z-prepass in my case).

2) The shader code was generated using a model-driven HLSL development framework, so the #includes might look a bit messy - but it works! :-)

UPDATE:

1) here's something weird I found out while debugging using the VS2013 graphics debugger:

the pixel shaders that do the final shading seem to fetch incorrect scale/bias values for the partitions (inside the shadow_fragment function). They differ from what the compute shaders output after the last (SDSM) Dispatch(1,1,1) call, which calculates the scale/bias values for each partition, by roughly ~0.1f, so it's not just a rounding error. Since the values of scale/bias can get quite large (e.g. scale.x=50.f), you can quickly tell that the shaders are accessing the right buffers ... it's just somehow slightly off.

Plus: everytime I manage to capture a correct output image, the values match, i.e. correct shadows. ATM I'm guessing that it's the debugger that is just showing me the wrong values in the PS for some reason ... how else could that error possibly happen when I don't touch those values after saving them to the buffer using Dispatch. That assumption however leads me back to square one ... HELP ME! :-D

"Some people use Singletons, some people are Simpletons." - Bill Gates
"Yum yum, I luv Cinnabon." - Mahatma Gandhi
Advertisement

Solved.

Apparently my driver was corrupt / outdated - idk! Reinstalled Catalyst 14.4 and it's magically working.

"Some people use Singletons, some people are Simpletons." - Bill Gates
"Yum yum, I luv Cinnabon." - Mahatma Gandhi

This topic is closed to new replies.

Advertisement