Browse Source

Displacement Map: displace before morphing/skinning

jaxry 8 years ago
parent
commit
bdd12d1f0c

+ 10 - 1
src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl

@@ -1,5 +1,14 @@
 #ifdef USE_DISPLACEMENTMAP
 
-	transformed += objectNormal * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );
+	#ifdef USE_MORPHNORMALS
+
+		transformed += morphNormal * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );
+
+	#else
+
+		transformed += normal * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );
+
+	#endif
+
 
 #endif

+ 6 - 0
src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl

@@ -5,4 +5,10 @@
 	objectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];
 	objectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];
 
+	#ifdef USE_DISPLACEMENTMAP
+
+		vec3 morphNormal = normalize(objectNormal);
+
+	#endif
+
 #endif

+ 1 - 1
src/renderers/shaders/ShaderLib/depth_vert.glsl

@@ -13,9 +13,9 @@ void main() {
 	#include <skinbase_vertex>
 
 	#include <begin_vertex>
+	#include <displacementmap_vertex>
 	#include <morphtarget_vertex>
 	#include <skinning_vertex>
-	#include <displacementmap_vertex>
 	#include <project_vertex>
 	#include <logdepthbuf_vertex>
 	#include <clipping_planes_vertex>

+ 1 - 1
src/renderers/shaders/ShaderLib/meshphong_vert.glsl

@@ -40,9 +40,9 @@ void main() {
 #endif
 
 	#include <begin_vertex>
+	#include <displacementmap_vertex>
 	#include <morphtarget_vertex>
 	#include <skinning_vertex>
-	#include <displacementmap_vertex>
 	#include <project_vertex>
 	#include <logdepthbuf_vertex>
 	#include <clipping_planes_vertex>

+ 1 - 1
src/renderers/shaders/ShaderLib/meshphysical_vert.glsl

@@ -39,9 +39,9 @@ void main() {
 #endif
 
 	#include <begin_vertex>
+	#include <displacementmap_vertex>
 	#include <morphtarget_vertex>
 	#include <skinning_vertex>
-	#include <displacementmap_vertex>
 	#include <project_vertex>
 	#include <logdepthbuf_vertex>
 	#include <clipping_planes_vertex>

+ 1 - 1
src/renderers/shaders/ShaderLib/normal_vert.glsl

@@ -35,9 +35,9 @@ void main() {
 #endif
 
 	#include <begin_vertex>
+	#include <displacementmap_vertex>
 	#include <morphtarget_vertex>
 	#include <skinning_vertex>
-	#include <displacementmap_vertex>
 	#include <project_vertex>
 	#include <logdepthbuf_vertex>