2011-05-09 82 views
0

我找到了这个链接,它解释了一些关于pcf阴影贴图。我查看了提供的代码示例,并且无法确定偏移量数组是什么。我假设它是一个float2数组,并且我知道它会将像素偏移给邻居。我只是不知道应该设置偏移量。如何将pcf添加到阴影贴图

链接:http://www.gamerendering.com/2008/11/15/percentage-closer-filtering-for-shadow-mapping/

下面是代码

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 

我必须只是失去了一些东西简单

任何帮助表示赞赏

谢谢

马克

+0

如果你删除偏移值会发生什么? – Jay 2011-05-18 07:20:37

+0

您必须将阴影贴图的纹理比较模式设置为“GL_COMPARE_REF_TO_TEXTURE”。这会给你硬件PCF。这实际上是在你链接的文章中解释的... – Tara 2015-12-15 11:43:38

回答

1

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

祝你好运伙伴我在这也是新的,所以我知道这是如何:)

+0

我在那里发布的代码不是我的,这是我在网上找到的示例代码。我设法锻炼了它应该是1 /纹理宽度的偏移量。我现在明白pcf是如何工作的。基本上你所做的就是锻炼像素着色器中当前像素周围区域的阴影中有多少像素。然后,将该数字除以您测试的像素数量,并将阴影衰减设置为该值。我也在使用HLSL。 – MulletDevil 2011-05-28 15:17:05

+0

很高兴为你做伴侣:) – Jay 2011-06-29 05:10:40