OSDN Git Service

Fix: fixed a bug when using alphamaps with TerrainGrid
authoranthyon@gmail.com <anthyon@gmail.com@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Fri, 22 Jul 2011 21:45:48 +0000 (21:45 +0000)
committeranthyon@gmail.com <anthyon@gmail.com@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Fri, 22 Jul 2011 21:45:48 +0000 (21:45 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7904 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md
engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert
engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java

index f8df2ab..cc4dae1 100644 (file)
@@ -8,6 +8,9 @@ MaterialDef Terrain Lighting {
         // Use ward specular instead of phong\r
         Boolean WardIso\r
 \r
+        // Are we rendering TerrainGrid\r
+        Boolean isTerrainGrid\r
+\r
         // Ambient color\r
         Color Ambient\r
 \r
@@ -113,6 +116,7 @@ MaterialDef Terrain Lighting {
 \r
         Defines {\r
             TRI_PLANAR_MAPPING : useTriPlanarMapping\r
+            TERRAIN_GRID : isTerrainGrid\r
             WARDISO   : WardIso\r
 \r
             DIFFUSEMAP : DiffuseMap\r
index f77eedb..648289e 100644 (file)
@@ -36,8 +36,6 @@ varying vec4 SpecularSum;
   varying vec3 wNormal;\r
 #endif\r
 \r
-\r
-\r
 // JME3 lights in world space\r
 void lightComputeDir(in vec3 worldPos, in vec4 color, in vec4 position, out vec4 lightDir){\r
     float posLight = step(0.5, color.w);\r
@@ -52,7 +50,11 @@ void lightComputeDir(in vec3 worldPos, in vec4 color, in vec4 position, out vec4
 void main(){\r
     vec4 pos = vec4(inPosition, 1.0);\r
     gl_Position = g_WorldViewProjectionMatrix * pos;\r
+    #ifdef TERRAIN_GRID\r
+    texCoord = inTexCoord * 2.0;\r
+    #else\r
     texCoord = inTexCoord;\r
+    #endif\r
 \r
     vec3 wvPosition = (g_WorldViewMatrix * pos).xyz;\r
     vec3 wvNormal  = normalize(g_NormalMatrix * inNormal);\r
index 8a0261b..c662dd7 100644 (file)
@@ -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));