【问题标题】:Writing a HLSL shader for rescaling floating point textures编写用于重新缩放浮点纹理的 HLSL 着色器
【发布时间】:2015-09-19 18:51:36
【问题描述】:

当我的Texture2D 使用HalfSingle/Single 格式时,XNA 抱怨必须将采样设置为PointClamp,这使我的纹理看起来参差不齐。我实际上是使用它来将深度数据传递给着色器,因此我试图获得比简单地使用 RGBA 灰度值更好的动态范围。

如果我用Color或者Bgra,那么我基本上只有255个关卡。如果我将深度值编码为颜色像素,那么我可以启用抗锯齿,但是它不能正确工作,因为采样器在 lerping 时会分别处理每个字节/半字节。

问题:

有没有办法告诉 HLSL 使用抗锯齿过滤器对我的浮点纹理进行采样,还是我需要自己编写着色器?

【问题讨论】:

    标签: c# xna shader hlsl texture2d


    【解决方案1】:

    原来有两种方法可以解决这个问题:

    1. 使用我自己的转换方法将 .NET 32 位浮点数打包成 RGBA,或者

    2. 使用SurfaceFormat.Rg32 将两个 16 位浮点数打包成 RGBA(此格式支持纹理过滤)。

    我选择了第一种方法。

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      相关资源
      最近更新 更多