- Home /
Getting depth value from Shadow map in shader
I am trying to modify Internal-ScreenSpaceShadows.shader
and to achieve what I want, I need to be able to read the actual depth values from the Shadow map, rather than just doing depth testing to see if it is in shadow or not.
As I am using DirectX11, the shadow map that is defined in Internal-ScreenSpaceShadows
is as follows: UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture)
where #define UNITY_DECLARE_SHADOWMAP(tex) Texture2D tex : register(t15); SamplerComparisonState sampler##tex : register(s15);
. The SamplerComparisonState
allows it to do hardware PCF which returns a value, either 0 or 1, if is being occluded or not, however I am trying to sample the actual depth value instead.
I have tried:
(coord is a float4)
tex2D(_ShadowMapTexture, coord.xy) -> Error
tex2Dproj(_ShadowMapTexture, coord) -> Error
_ShadowMapTexture.Sample(sampler_ShadowMapTexture, coord.xy) -> Error
_ShadowMapTexture.Sample(sampler_ShadowMapTexture, coord) -> Error
I have also tried making a separate sampler2D and Texture2D (with SamplerState sampler) and then using command buffers to blit the current shadowmap to that texture, but it only gives me a depth of 0 (all black). However, if I blit the shadowmap into a seperate Texture2D and then use
UNITY_DECLARE_SHADOWMAP(_ShadowBlit); _ShadowBlit.SampleCmp(sampler_ShadowBlit, coord.xy, coord.z)
it then works because it is using PCF. Does anyone know how to get the actual depth value from the shadowmap? Any help will be greatly appreciated
Your answer
![](https://koobas.hobune.stream/wayback/20220612113916im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Shadows being received by non-shadow collectors that are depth culled by a shadow collector. 1 Answer
How to prevent holes in shadows without generating Shadow Acne? 1 Answer
Accessing other points in shadow map from shader 0 Answers
How to correctly sample a shadow map from a render texture? 1 Answer
Transparent objects and shadow 0 Answers