所以我阅读了OpenGL信息页面,textureGrad
但它并没有真正解释任何事情。因此,您可以明确指定 P 相对于 X 和 Y 的偏导数
- 这实际上是做什么的?
- 当您在没有特定偏导数的情况下进行采样时,OpenGL 如何计算导数?
- 为什么纹理采样使用甚至需要导数?
我的心已经被震撼了。
所以我阅读了OpenGL信息页面,textureGrad
但它并没有真正解释任何事情。因此,您可以明确指定 P 相对于 X 和 Y 的偏导数
我的心已经被震撼了。
当您在 GPU 上调用纹理采样操作时,GPU 会执行以下操作:
现在,假设您有不同的相邻片段分支(例如由于某些材质或其他原因),因此在调用该着色器时,同时发出对不同纹理的采样请求。如果这些纹理的平铺率不同,您会遇到问题,这会破坏 MIP 选择(此未定义操作的不连贯性将导致渲染噪声)。解决方案是在分支外部使用 dFdx 和 dFdy 自己查询渐变,并在分支内使用textureGrad
函数,将正确的平铺乘数应用于渐变。