【问题标题】:Setting Up GLSL Ocean Water Shader Following Nvidia GPU Gems Chapter 1按照 Nvidia GPU Gems 第 1 章设置 GLSL 海洋水着色器
【发布时间】:2013-05-10 18:42:57
【问题描述】:

我正在关注Nvidia GPU Gems Chapter 1 关于使用着色器进行水模拟的内容。我正在尝试按照本章在 OpenGL es 2.0 (iOS) 中使用 glsl 创建海水着色器。

我可以创建本章中描述的几何波,但是在创建纹理法线贴图时我遇到了麻烦。本章对于实际渲染到纹理渲染目标的内容有些不清楚。我应该渲染法线贴图还是高度贴图?在文本中,它建议将法线作为 rgb 颜色渲染到目标,但同样,第 1.3 节“创作”下的图像 (b) 和 (d) 似乎表明应该将灰度高度图渲染到纹理目标.本章还讨论了使用查找纹理作为纹理的 u 坐标,但我不清楚这如何适合渲染到纹理。是否有 2 种不同的纹理可供渲染?如果有人能帮助澄清这些组件是如何组合在一起的,我将不胜感激!

【问题讨论】:

    标签: opengl-es glsl shader normals bump-mapping


    【解决方案1】:

    为什么要渲染到纹理?您可以轻松地在几何着色器中即时计算这些值。由于它们每帧都会改变,因此您每次都需要重复这些计算,所以我看不出渲染到纹理会带来什么。

    您确实需要计算两个值:高度位移(使用公式 3)和每个顶点的法线(使用公式 6b)。

    【讨论】:

    • 本教程建议在模拟中获得更高分辨率的波,您可以将法线值渲染到纹理目标。 “我们还将这项技术扩展到像素着色器领域,使用周期性波函数的总和来创建动态平铺凹凸贴图,以捕捉水面的更精细细节。” - 1.1 目标和范围。我有几何波和法线工作(在顶点着色器中“动态”创建),这是我无法创建的法线贴图。
    • paper 创建法线贴图的原因是因为它已经很老了。您可以只计算每个顶点的法线并将它们传递给片段着色器。这就是我在实现它时所做的,它运行良好:)
    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 2012-04-04
    • 1970-01-01
    • 2021-11-25
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多