在OpenGL上进行PCF过滤

时间:2017-03-21 15:37:47

标签: opengl shadows pcf

我正在阅读ARB_shadow的文档,他们暗示OpenGL可以自由地在纹理采样器中实现PCF(Percentage Closer Filtering),但他们无法在规范中谈论它。

首先他们说:

  
      
  • 如何实施双线性或三线性过滤?
  •   
     

解决方案:我们建议实施行为,但留下   细节直到实施。这里的差异相当于   阴影边缘的质量和柔软度。具体的过滤算法   可以通过分层扩展来表达。我们故意模糊不清   这里是为了避免知识产权和专利问题。

然后是:

  

如果TEXTURE_MAG_FILTER不是NEAREST或者TEXTURE_MIN_FILTER不是   然后可以通过比较来计算NEAREST或NEAREST_MIPMAP_NEAREST   纹理R坐标的多个深度纹理值。该   这个细节是依赖于实现的,但r应该是一个值   在[0,1]的范围内,其与比较的数量成比例   传球或失败。

而且...... 那个PCF

问题

第一个问题是:它有效吗?当您使用LINEAR过滤器对深度纹理进行采样时,有多少供应商真正使用PCF?

第二个(也是最重要的)问题是:如何通过ARB_shadow检测硬件PCF过滤是否有效?如果它不存在,我想回到着色器中的软件PCF。

备注

  • 我注意到ARB_shadow与ARB_fragment_program_shadow齐头并进(至少在我可以访问的显卡上)。 ARB_fragment_program_shadow是着色器中PCF的低级硬件支持。这是答案的线索,即。如果两个扩展都存在,那么当我说出神奇的词时,硬件PCF会出现吗?

  • 使用简单的二进制结果实现ARB_shadow将是愚蠢的。我假设在驱动程序中实现ARB_shadow的重点是做PCF,即使文档不允许这样说。仅存在ARB_shadow是否意味着硬件PCF?

0 个答案:

没有答案