提交 88604b4a 编写于 作者: A alteredq

Testing the impact of normalization of transformed normals in vertex shaders...

Testing the impact of normalization of transformed normals in vertex shaders (phong, normal, normalmap, skin simple).

It seems the effects on performance are minimal: in several random examples it's either not measurable, or just a tiny bit worse.

See #2613
上级 d5e032b9
...@@ -15626,7 +15626,7 @@ THREE.ShaderLib = { ...@@ -15626,7 +15626,7 @@ THREE.ShaderLib = {
"void main() {", "void main() {",
"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );", "vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
"vNormal = normalMatrix * normal;", "vNormal = normalize( normalMatrix * normal );",
"gl_Position = projectionMatrix * mvPosition;", "gl_Position = projectionMatrix * mvPosition;",
...@@ -15900,7 +15900,7 @@ THREE.ShaderLib = { ...@@ -15900,7 +15900,7 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "skinnormal_vertex" ], THREE.ShaderChunk[ "skinnormal_vertex" ],
THREE.ShaderChunk[ "defaultnormal_vertex" ], THREE.ShaderChunk[ "defaultnormal_vertex" ],
"vNormal = transformedNormal;", "vNormal = normalize( transformedNormal );",
THREE.ShaderChunk[ "morphtarget_vertex" ], THREE.ShaderChunk[ "morphtarget_vertex" ],
THREE.ShaderChunk[ "skinning_vertex" ], THREE.ShaderChunk[ "skinning_vertex" ],
...@@ -25754,19 +25754,19 @@ THREE.ShaderUtils = { ...@@ -25754,19 +25754,19 @@ THREE.ShaderUtils = {
"#ifdef USE_SKINNING", "#ifdef USE_SKINNING",
"vNormal = normalMatrix * skinnedNormal.xyz;", "vNormal = normalize( normalMatrix * skinnedNormal.xyz );",
"vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );", "vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );",
"vTangent = normalMatrix * skinnedTangent.xyz;", "vTangent = normalize( normalMatrix * skinnedTangent.xyz );",
"#else", "#else",
"vNormal = normalMatrix * normal;", "vNormal = normalize( normalMatrix * normal );",
"vTangent = normalMatrix * tangent.xyz;", "vTangent = normalize( normalMatrix * tangent.xyz );",
"#endif", "#endif",
"vBinormal = cross( vNormal, vTangent ) * tangent.w;", "vBinormal = normalize( cross( vNormal, vTangent ) * tangent.w );",
"vUv = uv * uRepeat + uOffset;", "vUv = uv * uRepeat + uOffset;",
......
此差异已折叠。
...@@ -323,7 +323,7 @@ THREE.ShaderSkin = { ...@@ -323,7 +323,7 @@ THREE.ShaderSkin = {
"vViewPosition = -mvPosition.xyz;", "vViewPosition = -mvPosition.xyz;",
"vNormal = normalMatrix * normal;", "vNormal = normalize( normalMatrix * normal );",
"vUv = uv * offsetRepeat.zw + offsetRepeat.xy;", "vUv = uv * offsetRepeat.zw + offsetRepeat.xy;",
......
...@@ -635,19 +635,19 @@ THREE.ShaderUtils = { ...@@ -635,19 +635,19 @@ THREE.ShaderUtils = {
"#ifdef USE_SKINNING", "#ifdef USE_SKINNING",
"vNormal = normalMatrix * skinnedNormal.xyz;", "vNormal = normalize( normalMatrix * skinnedNormal.xyz );",
"vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );", "vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );",
"vTangent = normalMatrix * skinnedTangent.xyz;", "vTangent = normalize( normalMatrix * skinnedTangent.xyz );",
"#else", "#else",
"vNormal = normalMatrix * normal;", "vNormal = normalize( normalMatrix * normal );",
"vTangent = normalMatrix * tangent.xyz;", "vTangent = normalize( normalMatrix * tangent.xyz );",
"#endif", "#endif",
"vBinormal = cross( vNormal, vTangent ) * tangent.w;", "vBinormal = normalize( cross( vNormal, vTangent ) * tangent.w );",
"vUv = uv * uRepeat + uOffset;", "vUv = uv * uRepeat + uOffset;",
......
...@@ -1937,7 +1937,7 @@ THREE.ShaderLib = { ...@@ -1937,7 +1937,7 @@ THREE.ShaderLib = {
"void main() {", "void main() {",
"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );", "vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
"vNormal = normalMatrix * normal;", "vNormal = normalize( normalMatrix * normal );",
"gl_Position = projectionMatrix * mvPosition;", "gl_Position = projectionMatrix * mvPosition;",
...@@ -2211,7 +2211,7 @@ THREE.ShaderLib = { ...@@ -2211,7 +2211,7 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "skinnormal_vertex" ], THREE.ShaderChunk[ "skinnormal_vertex" ],
THREE.ShaderChunk[ "defaultnormal_vertex" ], THREE.ShaderChunk[ "defaultnormal_vertex" ],
"vNormal = transformedNormal;", "vNormal = normalize( transformedNormal );",
THREE.ShaderChunk[ "morphtarget_vertex" ], THREE.ShaderChunk[ "morphtarget_vertex" ],
THREE.ShaderChunk[ "skinning_vertex" ], THREE.ShaderChunk[ "skinning_vertex" ],
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册