Maps 如何将pcf添加到阴影贴图

Maps 如何将pcf添加到阴影贴图,maps,shadow,hlsl,directx-9,Maps,Shadow,Hlsl,Directx 9,我找到了这个链接,它解释了一些关于pcf阴影映射的内容。我查看了提供的代码示例,但无法确定偏移量数组是什么。我假设它是一个float2数组,我知道它会偏移像素以得到相邻的像素。我就是不知道应该设置什么偏移量 链接: 这是密码 float result; result = shadow2DProj(shadowMap,texCoord+offset[0]); result += shadow2DProj(shadowMap,texCoord+offset[1]); result += shadow

我找到了这个链接,它解释了一些关于pcf阴影映射的内容。我查看了提供的代码示例,但无法确定偏移量数组是什么。我假设它是一个float2数组,我知道它会偏移像素以得到相邻的像素。我就是不知道应该设置什么偏移量

链接:

这是密码

float result;
result = shadow2DProj(shadowMap,texCoord+offset[0]);
result += shadow2DProj(shadowMap,texCoord+offset[1]);
result += shadow2DProj(shadowMap,texCoord+offset[2]);
result += shadow2DProj(shadowMap,texCoord+offset[3]);
result /= 4.0; // now result will hold the average shading
我一定是错过了一些简单的事情

谢谢你的帮助

谢谢,


Mark

我注意到您正在使用shadow2DProj,据我所知,这是一个GLSL函数,HLSL/CGSL中的等效函数是tex2Dproj。如果您得到的是一个空白屏幕,那么这可能会使您更接近,因为您应该能够临时删除偏移值


祝你好运,伙计,我也是新手,所以我知道这是怎么回事:)

如果删除偏移值会发生什么?必须将阴影贴图的纹理比较模式设置为
GL\u compare\u REF\u to\u texture
。这将为您提供硬件PCF。这实际上是在你链接的文章中解释的……我在那里发布的代码不是我在网上找到的示例代码。我设法计算了偏移量,它应该是纹理宽度的1/2。我现在更了解pcf的工作原理。基本上,您要做的是计算在“像素着色器”(pixel shader)中当前像素周围区域的阴影中有多少像素。然后将该数字除以测试的像素量,并将阴影衰减设置为该值。我也在使用HLSL。