opengl-es - 遵循 Nvidia GPU Gems 第 1 章设置 GLSL 海洋水着色器

标签 opengl-es glsl shader normals bump-mapping

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

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

最佳答案

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

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

关于opengl-es - 遵循 Nvidia GPU Gems 第 1 章设置 GLSL 海洋水着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577837/

相关文章:

opengl - 附加了分割着色器时,glDrawArrays失败

c - 应用计算着色器后纹理不会更新

shader - 你如何在 blender 循环节点着色器中添加时间关系?

c++ - 设置 opengl View 和投影转换

ipad - OpenGL ES 性能 2.0 与 1.1 (iPad)

java - 如何为 android 3D 游戏框架创建更新方法?

ios - 解决奇怪的行为 re : glsl/metal shader.(无意的坐标翻转)

glsl - GLSL 和 GLSL ES 2 之间的差异

android - 从分屏到全屏后出现幻影

android - 将纹理快速加载到 OpenGL 2.0