【问题标题】:how to add pcf to shadow maps如何将pcf添加到阴影贴图中
【发布时间】:2011-05-18 15:19:39
【问题描述】:

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

链接: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

我一定只是错过了一些简单的东西

感谢任何帮助

谢谢,

标记

【问题讨论】:

  • 如果删除偏移值会发生什么?
  • 必须将阴影贴图的纹理比较模式设置为GL_COMPARE_REF_TO_TEXTURE。这将为您提供硬件 PCF。这实际上在您链接的文章中进行了解释......

标签: maps shadow hlsl directx-9


【解决方案1】:

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

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

【讨论】:

  • 我发布的代码不是我的,是我在网上找到的示例代码。我设法锻炼了偏移量,它应该是纹理的 1/宽度。我现在明白了 pcf 是如何工作的。本质上,您所做的是在像素着色器中计算当前像素周围的区域中有多少像素处于阴影中。然后,您将该数字除以您测试的像素数量,并将阴影衰减设置为该值。我也在使用 HLSL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多