diff --git a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md index f8df2ab02..cc4dae1bb 100644 --- a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md +++ b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md @@ -8,6 +8,9 @@ MaterialDef Terrain Lighting { // Use ward specular instead of phong Boolean WardIso + // Are we rendering TerrainGrid + Boolean isTerrainGrid + // Ambient color Color Ambient @@ -113,6 +116,7 @@ MaterialDef Terrain Lighting { Defines { TRI_PLANAR_MAPPING : useTriPlanarMapping + TERRAIN_GRID : isTerrainGrid WARDISO : WardIso DIFFUSEMAP : DiffuseMap diff --git a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert index f77eedb1e..648289e66 100644 --- a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert +++ b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert @@ -36,8 +36,6 @@ varying vec4 SpecularSum; varying vec3 wNormal; #endif - - // JME3 lights in world space void lightComputeDir(in vec3 worldPos, in vec4 color, in vec4 position, out vec4 lightDir){ float posLight = step(0.5, color.w); @@ -52,7 +50,11 @@ void lightComputeDir(in vec3 worldPos, in vec4 color, in vec4 position, out vec4 void main(){ vec4 pos = vec4(inPosition, 1.0); gl_Position = g_WorldViewProjectionMatrix * pos; + #ifdef TERRAIN_GRID + texCoord = inTexCoord * 2.0; + #else texCoord = inTexCoord; + #endif vec3 wvPosition = (g_WorldViewMatrix * pos).xyz; vec3 wvNormal = normalize(g_NormalMatrix * inNormal); diff --git a/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java b/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java index 8a0261bb0..c662dd79c 100644 --- a/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java +++ b/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java @@ -87,6 +87,7 @@ public class TerrainGridAlphaMapTest extends SimpleApplication { // TERRAIN TEXTURE material matRock = new Material(assetManager, "Common/MatDefs/Terrain/TerrainLighting.j3md"); matRock.setBoolean("useTriPlanarMapping", false); + matRock.setBoolean("isTerrainGrid", true); // GRASS texture Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); @@ -189,7 +190,7 @@ public class TerrainGridAlphaMapTest extends SimpleApplication { } public void tileAttached(Vector3f cell, TerrainQuad quad) { - Texture alpha = assetManager.loadTexture("Scenes/TerrainAlphaTest/alphamap_" + Math.abs((int) (cell.x % 2)) * 512 + "_" + Math.abs((int) (cell.y % 2) * 512) + ".png"); + Texture alpha = assetManager.loadTexture("Scenes/TerrainAlphaTest/alphamap_" + Math.abs((int) (cell.x % 2)) * 512 + "_" + Math.abs((int) (cell.z % 2) * 512) + ".png"); quad.getMaterial().setTexture("AlphaMap", alpha); if (usePhysics) { quad.addControl(new RigidBodyControl(new HeightfieldCollisionShape(quad.getHeightMap(), terrain.getLocalScale()), 0));