JME3 - 喷涂三种以上的纹理

jza*_*ruk 5 java jmonkeyengine

以下教程介绍了如何使用高度贴图执行基本纹理喷涂.

http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_terrain

我能够按照本教程和练习获得优异的成绩.但是,我想知道如何添加三个以上的纹理.我在Terrain.j3md文件的材料参数只有三个纹理层看到:Tex1,TEX2,Tex3所以我不相信你可以使用Terrain.j3md做到这一点.

我假设您必须使用TerrainLighting.j3md.但是,它的结构与NormalMap和DiffuseMap等参数的结构完全不同,我找不到任何文档/教程来解释它们到底是什么.

Jua*_*ado 2

JME3 是一个基于 OpenGL 的库,使用GLSL 着色器进行渲染。您必须编写自定义着色器或修改现有着色器才能执行自定义渲染。

着色器是一个高级主题。您可以在 SDK 文档中找到着色器的介绍。但您可能想阅读有关“材质、光、阴影”的完整文章。

JME3 使用三个文件来管理它们:

  • .vert包含 GLSL 顶点着色器代码的文件
  • .frag包含 GLSL 片段着色器代码的文件
  • .j3md包含着色器程序定义的文件

顶点着色器和片段着色器都只是使用 GLSL 语言的一段代码。顶点着色器对视图中的每个顶点执行一次以计算屏幕坐标。片段着色器对屏幕上的每个像素执行一次以计算颜色。.j3md 文件具有有关输入参数(材质)、技术(着色器)等的定义。

参数的数量和类型是固定的。但您可以修改Terrain.j3m以添加新的纹理参数:

Texture2D tex4
Run Code Online (Sandbox Code Playgroud)

添加新的输入参数Terrain.frag

uniform sampler2D m_Tex4;
Run Code Online (Sandbox Code Playgroud)

并根据需要修改片段着色器代码以使用新的纹理参数。