Browse Source

Displacement Map: add morph normal support

jaxry 8 years ago
parent
commit
4768ca0d7e

+ 6 - 2
src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl

@@ -1,7 +1,11 @@
 #ifdef FLIP_SIDED
 #ifdef FLIP_SIDED
 
 
-	objectNormal = -objectNormal;
+	vec3 transformedNormal = - normalMatrix * objectNormal;
+
+#else
+
+	vec3 transformedNormal = normalMatrix * objectNormal;
 
 
 #endif
 #endif
 
 
-vec3 transformedNormal = normalMatrix * objectNormal;
+

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

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

+ 2 - 10
src/renderers/shaders/ShaderChunk/project_vertex.glsl

@@ -1,11 +1,3 @@
-#ifdef USE_SKINNING
+vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );
 
 
-	vec4 mvPosition = modelViewMatrix * skinned;
-
-#else
-
-	vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );
-
-#endif
-
-gl_Position = projectionMatrix * mvPosition;
+gl_Position = projectionMatrix * mvPosition;

+ 2 - 1
src/renderers/shaders/ShaderChunk/skinning_vertex.glsl

@@ -7,6 +7,7 @@
 	skinned += boneMatY * skinVertex * skinWeight.y;
 	skinned += boneMatY * skinVertex * skinWeight.y;
 	skinned += boneMatZ * skinVertex * skinWeight.z;
 	skinned += boneMatZ * skinVertex * skinWeight.z;
 	skinned += boneMatW * skinVertex * skinWeight.w;
 	skinned += boneMatW * skinVertex * skinWeight.w;
-	skinned  = bindMatrixInverse * skinned;
+
+	transformed = ( bindMatrixInverse * skinned ).xyz;
 
 
 #endif
 #endif

+ 1 - 9
src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl

@@ -1,13 +1,5 @@
 #if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )
 #if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )
 
 
-	#ifdef USE_SKINNING
-
-		vec4 worldPosition = modelMatrix * skinned;
-
-	#else
-
-		vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
-
-	#endif
+	vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
 
 
 #endif
 #endif

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

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

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

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

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

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

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

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