Browse Source

Added begin_vertex.glsl

Mr.doob 10 years ago
parent
commit
90a51821df

+ 1 - 0
src/renderers/shaders/ShaderChunk/begin_vertex.glsl

@@ -0,0 +1 @@
+vec3 transformed = vec3( position );

+ 2 - 5
src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl

@@ -1,12 +1,9 @@
 #ifdef USE_MORPHNORMALS
 
-	vec3 morphedNormal = vec3( 0.0 );
-
+	vec3 morphedNormal = vec3( normal );
 	morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];
 	morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];
 	morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];
 	morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];
 
-	morphedNormal += normal;
-
-#endif
+#endif

+ 9 - 12
src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl

@@ -1,20 +1,17 @@
 #ifdef USE_MORPHTARGETS
 
-	vec3 morphed = vec3( 0.0 );
-	morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];
-	morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];
-	morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];
-	morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];
+	transformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];
+	transformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];
+	transformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];
+	transformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];
 
 	#ifndef USE_MORPHNORMALS
 
-	morphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];
-	morphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];
-	morphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];
-	morphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];
+	transformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];
+	transformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];
+	transformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];
+	transformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];
 
 	#endif
 
-	morphed += position;
-
-#endif
+#endif

+ 1 - 5
src/renderers/shaders/ShaderChunk/project_vertex.glsl

@@ -2,13 +2,9 @@
 
 	vec4 mvPosition = modelViewMatrix * skinned;
 
-#elif defined( USE_MORPHTARGETS )
-
-	vec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );
-
 #else
 
-	vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
+	vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );
 
 #endif
 

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

@@ -1,14 +1,6 @@
 #ifdef USE_SKINNING
 
-	#ifdef USE_MORPHTARGETS
-
-	vec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );
-
-	#else
-
-	vec4 skinVertex = bindMatrix * vec4( position, 1.0 );
-
-	#endif
+	vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
 
 	vec4 skinned = vec4( 0.0 );
 	skinned += boneMatX * skinVertex * skinWeight.x;

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

@@ -4,13 +4,9 @@
 
 		vec4 worldPosition = modelMatrix * skinned;
 
-	#elif defined( USE_MORPHTARGETS )
-
-		vec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );
-
 	#else
 
-		vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
+		vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
 
 	#endif
 

+ 7 - 0
src/renderers/shaders/ShaderLib.js

@@ -47,6 +47,7 @@ THREE.ShaderLib = {
 
 			"	#endif",
 
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],
@@ -158,6 +159,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
 				THREE.ShaderChunk[ "defaultnormal_vertex" ],
 
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],
@@ -300,6 +302,7 @@ THREE.ShaderLib = {
 
 			"#endif",
 
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],
@@ -554,6 +557,7 @@ THREE.ShaderLib = {
 
 			"void main() {",
 
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],
 				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
@@ -614,6 +618,7 @@ THREE.ShaderLib = {
 
 			"	vNormal = normalize( normalMatrix * normal );",
 
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],
 				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
@@ -773,6 +778,8 @@ THREE.ShaderLib = {
 			"void main() {",
 
 				THREE.ShaderChunk[ "skinbase_vertex" ],
+
+				THREE.ShaderChunk[ "begin_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "project_vertex" ],

+ 1 - 0
utils/build/includes/common.json

@@ -101,6 +101,7 @@
 	"src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/color_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/common.glsl",
+	"src/renderers/shaders/ShaderChunk/begin_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/project_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl",