瀏覽代碼

add support for front/back/double to MeshNormalMaterial

Ben Houston 8 年之前
父節點
當前提交
df4876db4f
共有 2 個文件被更改,包括 17 次插入4 次删除
  1. 14 3
      examples/webgl_materials_channels.html
  2. 3 1
      src/renderers/shaders/ShaderLib/normal_frag.glsl

+ 14 - 3
examples/webgl_materials_channels.html

@@ -59,7 +59,8 @@
 
 			var params = {
 				material: 'normal',
-				camera: 'perspective'
+				camera: 'perspective',
+				side: 'double'
 			};
 
 			var cameraOrtho, cameraPerspective;
@@ -84,7 +85,7 @@
 				var gui = new dat.GUI();
 				gui.add( params, 'material', [ 'standard', 'normal', 'depthBasic', 'depthRGBA' ] );
 				gui.add( params, 'camera', [ 'perspective', 'ortho' ] );
-
+				gui.add( params, 'side', [ 'front', 'back', 'double' ] );
 			}
 
 			function init() {
@@ -188,7 +189,9 @@
 					side: THREE.DoubleSide
 				} );
 
-				materialNormal = new THREE.MeshNormalMaterial();
+				materialNormal = new THREE.MeshNormalMaterial( {
+					side: THREE.DoubleSide
+				} );
 
 				//
 
@@ -266,6 +269,14 @@
 
 					}
 
+					switch ( params.side ) {
+
+						case 'front': material.side = THREE.FrontSide; break;
+						case 'back': material.side = THREE.BackSide; break;
+						case 'double': material.side = THREE.DoubleSide; break;
+	
+					}
+
 					mesh.material = material;
 
 				}

+ 3 - 1
src/renderers/shaders/ShaderLib/normal_frag.glsl

@@ -9,7 +9,9 @@ varying vec3 vNormal;
 void main() {
 
 	#include <clipping_planes_fragment>
-	gl_FragColor = vec4( packNormalToRGB( vNormal ), opacity );
+	#include <normal_flip>
+   
+   	gl_FragColor = vec4( packNormalToRGB( vNormal * flipNormal ), opacity );
 
 	#include <logdepthbuf_fragment>