3d 在不禁用硬件PCF的情况下从阴影贴图采样深度

3d 在不禁用硬件PCF的情况下从阴影贴图采样深度,3d,directx,shader,hlsl,shadow-mapping,3d,Directx,Shader,Hlsl,Shadow Mapping,我有一个启用了硬件百分比过滤的阴影贴图。但我还需要获得阴影贴图中存储的深度值,以便使用它在像素着色器中实现其他技术。问题是所有采样函数(tex2D、tex2Dproj)都返回深度比较的最终结果。它工作得很好,但我无法获得深度值本身 是否可以为阴影映射保留硬件PCF并对深度值本身进行采样 但是有一个限制,我无法处理应用程序创建阴影贴图的方式,我只能编辑着色器。如果您可以找到未使用的/采样器状态/采样器2D绑定槽,您应该能够在那里声明一个,并将其与通用示例/

我有一个启用了硬件百分比过滤的阴影贴图。但我还需要获得阴影贴图中存储的深度值,以便使用它在像素着色器中实现其他技术。问题是所有采样函数(tex2D、tex2Dproj)都返回深度比较的最终结果。它工作得很好,但我无法获得深度值本身

是否可以为阴影映射保留硬件PCF对深度值本身进行采样


但是有一个限制,我无法处理应用程序创建阴影贴图的方式,我只能编辑着色器。

如果您可以找到未使用的
/
采样器状态
/
采样器2D
绑定槽,您应该能够在那里声明一个,并将其与通用
示例
/
操作一起使用。由于采样器状态插槽未被应用程序绑定,因此驱动程序应使用默认的点采样设置。如果深度缓冲区支持这种类型的访问,它应该返回前PCF值。

如果您可以找到一个未使用的
SamplerState
/
Sample2D
绑定插槽,您应该能够在那里声明一个,并将其与通用
Sample
/
tex2D
操作一起使用。由于采样器状态插槽未被应用程序绑定,因此驱动程序应使用默认的点采样设置。如果深度缓冲区支持这种类型的访问,它应该返回pre-PCF值。

我自己也尝试过这个想法,但不幸的是,它似乎不起作用。我不是100%确定,因为我找不到好的文档,但硬件PCF似乎很棘手,当满足某些条件时,它会自动开始工作。它似乎也适用于其他采样器,因为纹理本身是以正确的方式声明的。看来我什么都试过了。无论我做什么,我都会得到深度测试的结果。我自己也尝试过这个想法,但不幸的是,它似乎不起作用。我不是100%确定,因为我找不到好的文档,但硬件PCF似乎很棘手,当满足某些条件时,它会自动开始工作。它似乎也适用于其他采样器,因为纹理本身是以正确的方式声明的。看来我什么都试过了。无论我做什么,我都会得到深度测试的结果。