increased terrain diffuse texture limit to 12, including normals

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7759 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
bre..ns 14 years ago
parent 619dd39e1c
commit d9c3df086d
  1. 166
      engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.frag
  2. 32
      engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md

@ -38,6 +38,18 @@ varying vec4 vnLightDir;
#ifdef DIFFUSEMAP_7 #ifdef DIFFUSEMAP_7
uniform sampler2D m_DiffuseMap_7; uniform sampler2D m_DiffuseMap_7;
#endif #endif
#ifdef DIFFUSEMAP_8
uniform sampler2D m_DiffuseMap_8;
#endif
#ifdef DIFFUSEMAP_9
uniform sampler2D m_DiffuseMap_9;
#endif
#ifdef DIFFUSEMAP_10
uniform sampler2D m_DiffuseMap_10;
#endif
#ifdef DIFFUSEMAP_11
uniform sampler2D m_DiffuseMap_11;
#endif
#ifdef DIFFUSEMAP_0_SCALE #ifdef DIFFUSEMAP_0_SCALE
@ -64,6 +76,18 @@ varying vec4 vnLightDir;
#ifdef DIFFUSEMAP_7_SCALE #ifdef DIFFUSEMAP_7_SCALE
uniform float m_DiffuseMap_7_scale; uniform float m_DiffuseMap_7_scale;
#endif #endif
#ifdef DIFFUSEMAP_8_SCALE
uniform float m_DiffuseMap_8_scale;
#endif
#ifdef DIFFUSEMAP_9_SCALE
uniform float m_DiffuseMap_9_scale;
#endif
#ifdef DIFFUSEMAP_10_SCALE
uniform float m_DiffuseMap_10_scale;
#endif
#ifdef DIFFUSEMAP_11_SCALE
uniform float m_DiffuseMap_11_scale;
#endif
#ifdef ALPHAMAP #ifdef ALPHAMAP
@ -100,6 +124,18 @@ varying vec4 vnLightDir;
#ifdef NORMALMAP_7 #ifdef NORMALMAP_7
uniform sampler2D m_NormalMap_7; uniform sampler2D m_NormalMap_7;
#endif #endif
#ifdef NORMALMAP_8
uniform sampler2D m_NormalMap_8;
#endif
#ifdef NORMALMAP_9
uniform sampler2D m_NormalMap_9;
#endif
#ifdef NORMALMAP_10
uniform sampler2D m_NormalMap_10;
#endif
#ifdef NORMALMAP_11
uniform sampler2D m_NormalMap_11;
#endif
#ifdef TRI_PLANAR_MAPPING #ifdef TRI_PLANAR_MAPPING
@ -160,6 +196,9 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#ifdef ALPHAMAP_1 #ifdef ALPHAMAP_1
vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy ); vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy );
#endif #endif
#ifdef ALPHAMAP_2
vec4 alphaBlend2 = texture2D( m_AlphaMap_2, texCoord.xy );
#endif
vec4 diffuseColor = texture2D(m_DiffuseMap, texCoord * m_DiffuseMap_0_scale); vec4 diffuseColor = texture2D(m_DiffuseMap, texCoord * m_DiffuseMap_0_scale);
diffuseColor *= alphaBlend.r; diffuseColor *= alphaBlend.r;
@ -185,6 +224,24 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#ifdef DIFFUSEMAP_7 #ifdef DIFFUSEMAP_7
vec4 diffuseColor7 = texture2D(m_DiffuseMap_7, texCoord * m_DiffuseMap_7_scale); vec4 diffuseColor7 = texture2D(m_DiffuseMap_7, texCoord * m_DiffuseMap_7_scale);
diffuseColor = mix( diffuseColor, diffuseColor7, alphaBlend1.a ); diffuseColor = mix( diffuseColor, diffuseColor7, alphaBlend1.a );
#ifdef ALPHAMAP_2
#ifdef DIFFUSEMAP_8
vec4 diffuseColor8 = texture2D(m_DiffuseMap_8, texCoord * m_DiffuseMap_8_scale);
diffuseColor = mix( diffuseColor, diffuseColor8, alphaBlend2.r );
#ifdef DIFFUSEMAP_9
vec4 diffuseColor9 = texture2D(m_DiffuseMap_9, texCoord * m_DiffuseMap_9_scale);
diffuseColor = mix( diffuseColor, diffuseColor9, alphaBlend2.g );
#ifdef DIFFUSEMAP_10
vec4 diffuseColor10 = texture2D(m_DiffuseMap_10, texCoord * m_DiffuseMap_10_scale);
diffuseColor = mix( diffuseColor, diffuseColor10, alphaBlend2.b );
#ifdef DIFFUSEMAP_11
vec4 diffuseColor11 = texture2D(m_DiffuseMap_11, texCoord * m_DiffuseMap_11_scale);
diffuseColor = mix( diffuseColor, diffuseColor11, alphaBlend2.a );
#endif
#endif
#endif
#endif
#endif
#endif #endif
#endif #endif
#endif #endif
@ -206,6 +263,9 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#ifdef ALPHAMAP_1 #ifdef ALPHAMAP_1
vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy ); vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy );
#endif #endif
#ifdef ALPHAMAP_2
vec4 alphaBlend2 = texture2D( m_AlphaMap_2, texCoord.xy );
#endif
#ifdef NORMALMAP #ifdef NORMALMAP
normalHeight = texture2D(m_NormalMap, texCoord * m_DiffuseMap_0_scale); normalHeight = texture2D(m_NormalMap, texCoord * m_DiffuseMap_0_scale);
@ -265,7 +325,7 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#endif #endif
#ifdef NORMALMAP_7 #ifdef NORMALMAP_7
normalHeight = texture2D(m_NormalMap_7, texCoord * m_DiffuseMap_67_scale); normalHeight = texture2D(m_NormalMap_7, texCoord * m_DiffuseMap_7_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0)); n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y)); n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y; n.y = -n.y;
@ -273,6 +333,40 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#endif #endif
#endif #endif
#ifdef ALPHAMAP_2
#ifdef NORMALMAP_8
normalHeight = texture2D(m_NormalMap_8, texCoord * m_DiffuseMap_8_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.r;
#endif
#ifdef NORMALMAP_9
normalHeight = texture2D(m_NormalMap_9, texCoord * m_DiffuseMap_9_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.g;
#endif
#ifdef NORMALMAP_10
normalHeight = texture2D(m_NormalMap_10, texCoord * m_DiffuseMap_10_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.b;
#endif
#ifdef NORMALMAP_11
normalHeight = texture2D(m_NormalMap_11, texCoord * m_DiffuseMap_11_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.a;
#endif
#endif
return normalize(normal); return normalize(normal);
} }
@ -329,12 +423,31 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
// blend the results of the 3 planar projections. // blend the results of the 3 planar projections.
vec4 tex7 = getTriPlanarBlend(coords, blending, m_DiffuseMap_7, m_DiffuseMap_7_scale); vec4 tex7 = getTriPlanarBlend(coords, blending, m_DiffuseMap_7, m_DiffuseMap_7_scale);
#endif #endif
#ifdef DIFFUSEMAP_8
// blend the results of the 3 planar projections.
vec4 tex8 = getTriPlanarBlend(coords, blending, m_DiffuseMap_8, m_DiffuseMap_8_scale);
#endif
#ifdef DIFFUSEMAP_9
// blend the results of the 3 planar projections.
vec4 tex9 = getTriPlanarBlend(coords, blending, m_DiffuseMap_9, m_DiffuseMap_9_scale);
#endif
#ifdef DIFFUSEMAP_10
// blend the results of the 3 planar projections.
vec4 tex10 = getTriPlanarBlend(coords, blending, m_DiffuseMap_10, m_DiffuseMap_10_scale);
#endif
#ifdef DIFFUSEMAP_11
// blend the results of the 3 planar projections.
vec4 tex11 = getTriPlanarBlend(coords, blending, m_DiffuseMap_11, m_DiffuseMap_11_scale);
#endif
vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy ); vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy );
#ifdef ALPHAMAP_1 #ifdef ALPHAMAP_1
vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy ); vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy );
#endif #endif
#ifdef ALPHAMAP_2
vec4 alphaBlend2 = texture2D( m_AlphaMap_2, texCoord.xy );
#endif
vec4 diffuseColor = tex0 * alphaBlend.r; vec4 diffuseColor = tex0 * alphaBlend.r;
#ifdef DIFFUSEMAP_1 #ifdef DIFFUSEMAP_1
@ -352,6 +465,20 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
diffuseColor = mix( diffuseColor, tex6, alphaBlend1.b ); diffuseColor = mix( diffuseColor, tex6, alphaBlend1.b );
#ifdef DIFFUSEMAP_7 #ifdef DIFFUSEMAP_7
diffuseColor = mix( diffuseColor, tex7, alphaBlend1.a ); diffuseColor = mix( diffuseColor, tex7, alphaBlend1.a );
#ifdef ALPHAMAP_2
#ifdef DIFFUSEMAP_8
diffuseColor = mix( diffuseColor, tex8, alphaBlend2.r );
#ifdef DIFFUSEMAP_9
diffuseColor = mix( diffuseColor, tex9, alphaBlend2.g );
#ifdef DIFFUSEMAP_10
diffuseColor = mix( diffuseColor, tex10, alphaBlend2.b );
#ifdef DIFFUSEMAP_11
diffuseColor = mix( diffuseColor, tex11, alphaBlend2.a );
#endif
#endif
#endif
#endif
#endif
#endif #endif
#endif #endif
#endif #endif
@ -379,6 +506,9 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#ifdef ALPHAMAP_1 #ifdef ALPHAMAP_1
vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy ); vec4 alphaBlend1 = texture2D( m_AlphaMap_1, texCoord.xy );
#endif #endif
#ifdef ALPHAMAP_2
vec4 alphaBlend2 = texture2D( m_AlphaMap_2, texCoord.xy );
#endif
vec3 normal = vec3(0,0,1); vec3 normal = vec3(0,0,1);
vec3 n = vec3(0,0,0); vec3 n = vec3(0,0,0);
@ -450,6 +580,40 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
#endif #endif
#endif #endif
#ifdef ALPHAMAP_2
#ifdef NORMALMAP_8
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_8, m_DiffuseMap_8_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.r;
#endif
#ifdef NORMALMAP_9
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_9, m_DiffuseMap_9_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.g;
#endif
#ifdef NORMALMAP_10
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_10, m_DiffuseMap_10_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.b;
#endif
#ifdef NORMALMAP_11
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_11, m_DiffuseMap_11_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend2.a;
#endif
#endif
return normalize(normal); return normalize(normal);
} }
#endif #endif

@ -60,6 +60,26 @@ MaterialDef Terrain Lighting {
Float DiffuseMap_7_scale Float DiffuseMap_7_scale
Texture2D NormalMap_7 Texture2D NormalMap_7
// Texture map #8
Texture2D DiffuseMap_8
Float DiffuseMap_8_scale
Texture2D NormalMap_8
// Texture map #9
Texture2D DiffuseMap_9
Float DiffuseMap_9_scale
Texture2D NormalMap_9
// Texture map #10
Texture2D DiffuseMap_10
Float DiffuseMap_10_scale
Texture2D NormalMap_10
// Texture map #11
Texture2D DiffuseMap_11
Float DiffuseMap_11_scale
Texture2D NormalMap_11
// Specular/gloss map // Specular/gloss map
Texture2D SpecularMap Texture2D SpecularMap
@ -103,6 +123,10 @@ MaterialDef Terrain Lighting {
DIFFUSEMAP_5 : DiffuseMap_5 DIFFUSEMAP_5 : DiffuseMap_5
DIFFUSEMAP_6 : DiffuseMap_6 DIFFUSEMAP_6 : DiffuseMap_6
DIFFUSEMAP_7 : DiffuseMap_7 DIFFUSEMAP_7 : DiffuseMap_7
DIFFUSEMAP_8 : DiffuseMap_8
DIFFUSEMAP_9 : DiffuseMap_9
DIFFUSEMAP_10 : DiffuseMap_10
DIFFUSEMAP_11 : DiffuseMap_11
NORMALMAP : NormalMap NORMALMAP : NormalMap
NORMALMAP_1 : NormalMap_1 NORMALMAP_1 : NormalMap_1
NORMALMAP_2 : NormalMap_2 NORMALMAP_2 : NormalMap_2
@ -111,6 +135,10 @@ MaterialDef Terrain Lighting {
NORMALMAP_5 : NormalMap_5 NORMALMAP_5 : NormalMap_5
NORMALMAP_6 : NormalMap_6 NORMALMAP_6 : NormalMap_6
NORMALMAP_7 : NormalMap_7 NORMALMAP_7 : NormalMap_7
NORMALMAP_8 : NormalMap_8
NORMALMAP_9 : NormalMap_9
NORMALMAP_10 : NormalMap_10
NORMALMAP_11 : NormalMap_11
SPECULARMAP : SpecularMap SPECULARMAP : SpecularMap
ALPHAMAP : AlphaMap ALPHAMAP : AlphaMap
ALPHAMAP_1 : AlphaMap_1 ALPHAMAP_1 : AlphaMap_1
@ -123,6 +151,10 @@ MaterialDef Terrain Lighting {
DIFFUSEMAP_5_SCALE : DiffuseMap_5_scale DIFFUSEMAP_5_SCALE : DiffuseMap_5_scale
DIFFUSEMAP_6_SCALE : DiffuseMap_6_scale DIFFUSEMAP_6_SCALE : DiffuseMap_6_scale
DIFFUSEMAP_7_SCALE : DiffuseMap_7_scale DIFFUSEMAP_7_SCALE : DiffuseMap_7_scale
DIFFUSEMAP_8_SCALE : DiffuseMap_8_scale
DIFFUSEMAP_9_SCALE : DiffuseMap_9_scale
DIFFUSEMAP_10_SCALE : DiffuseMap_10_scale
DIFFUSEMAP_11_SCALE : DiffuseMap_11_scale
} }
} }

Loading…
Cancel
Save