2012-01-23 27 views
5

以下教程将介绍如何使用高度贴图执行基本纹理溅射。JME3 - 溅射三个以上纹理

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

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

这是我的假设,你必须使用TerrainLighting.j3md。但是,这与NormalMap和DiffuseMap等参数结构非常不同,我无法找到任何文档/教程来解释它们究竟是什么。

回答

2

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

着色器是一个高级主题。您可以在SDK文档中找到关于shaders的介绍。但可能你想阅读关于"Materials, Light, Shadow"的完整文章。

JME3使用三个文件对它们进行管理:

  • 一个.vert文件与GLSL顶点着色器代码
  • 一个.frag文件与GLSL片段着色器代码
  • 一个.j3md文件与着色器程序定义

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

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

Texture2D tex4 

添加一个新的输入参数Terrain.frag

uniform sampler2D m_Tex4; 

并修改片段着色器的代码,只要你喜欢使用新的纹理参数。

3

最近,已经发布了用于纹理溅射的新材质定义,最多支持12个纹理,并可选择额外的发光和镜面纹理。

材料的名称是TerrainLighting.j3md,而this是一个(非常好的)使用它的例子。

+0

@RichardTingle thx,修复了链接 –