0

我最近在我一直从事的一个项目中重写了照明引擎,并注意到我在纹理上出现了条带,并且每个面仅在一个方向上。

照明引擎现在是延迟渲染,因此它由 3 个作为场景数据处理的纹理组成。这可能是纹理条带的原因吗?

这是一个屏幕截图: 带状纹理

它似乎只发生在靠近照明的地方。

如果有帮助,我的 3 个纹理采用以下格式:

World fragment position: GL_RGBA16F - GL_FLOAT
World normal direction: GL_RGBA16F - GL_FLOAT
Fragment diffuse texture: GL_RGBA - GL_UNSIGNED_INT
4

1 回答 1

1

感谢棘轮怪胎和 Andon M. Coleman。

棘轮怪胎指出,这可能是光线照射到表面的角度存在舍入误差(导致法线和方向之间的点积较低)。

原因是法线方向纹理的内部格式设置为 GL_RGBA16F - 16 位浮点数,导致舍入。将格式设置为 GL_RGBA32F 通过保持 32 位浮点数来固定舍入。

Andon M. Coleman 指出我应该停止使用 GL_RGBA 作为内部格式,因为它不明确并且 GL_RGBA8 是合适的

于 2014-01-05T02:01:58.420 回答