@@ -14,7 +14,7 @@ varying vec3 eyeVec;
14
14
varying vec3 lightVec;
15
15
varying vec3 tsEyeVec;
16
16
varying vec3 tsLightVec;
17
- varying float generate_heightmaps ;
17
+ varying float area_enable_parallax ;
18
18
19
19
const float e = 2.718281828459 ;
20
20
const float BS = 10.0 ;
@@ -35,12 +35,16 @@ float smoothTriangleWave(float x)
35
35
void main(void )
36
36
{
37
37
gl_TexCoord [0 ] = gl_MultiTexCoord0 ;
38
- gl_TexCoord [0 ].y += 0.008 ;
39
-
38
+ // TODO: make offset depending on view angle and parallax uv displacement
39
+ // thats for textures that doesnt align vertically, like dirt with grass
40
+ // gl_TexCoord[0].y += 0.008;
41
+
42
+ // Allow parallax/relief mapping only for certain kind of nodes
43
+ // Variable is also used to control area of the effect
40
44
#if ((DRAW_TYPE == NDT_NORMAL || DRAW_TYPE == NDT_LIQUID || DRAW_TYPE == NDT_FLOWINGLIQUID) && GENERATE_NORMALMAPS)
41
- generate_heightmaps = 1.0 ;
45
+ area_enable_parallax = 1.0 ;
42
46
#else
43
- generate_heightmaps = 0.0 ;
47
+ area_enable_parallax = 0.0 ;
44
48
#endif
45
49
46
50
#if ((MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER)
@@ -89,9 +93,9 @@ void main(void)
89
93
worldPosition = (mWorld * gl_Vertex ).xyz;
90
94
91
95
// Don't generate heightmaps when too far from the eye
92
- float dist = distance (worldPosition, eyePosition );
93
- if (dist > 100.00 ) {
94
- generate_heightmaps = 0.0 ;
96
+ float dist = distance (vec3 ( 0.0 , 0.0 , 0.0 ), vPosition );
97
+ if (dist > 100.0 ) {
98
+ area_enable_parallax = 0.0 ;
95
99
}
96
100
97
101
vec3 sunPosition = vec3 (0.0 , eyePosition.y * BS + 900.0 , 0.0 );
0 commit comments