From df4876db4fc16bc7dbc42b7df5c2a2a6ee4df4ba Mon Sep 17 00:00:00 2001 From: Ben Houston Date: Sat, 10 Dec 2016 20:35:15 -0500 Subject: [PATCH] add support for front/back/double to MeshNormalMaterial --- examples/webgl_materials_channels.html | 17 ++++++++++++++--- .../shaders/ShaderLib/normal_frag.glsl | 4 +++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/webgl_materials_channels.html b/examples/webgl_materials_channels.html index 475df2a545..8407f2f526 100644 --- a/examples/webgl_materials_channels.html +++ b/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; } diff --git a/src/renderers/shaders/ShaderLib/normal_frag.glsl b/src/renderers/shaders/ShaderLib/normal_frag.glsl index e5519cdd89..69540c5289 100644 --- a/src/renderers/shaders/ShaderLib/normal_frag.glsl +++ b/src/renderers/shaders/ShaderLib/normal_frag.glsl @@ -9,7 +9,9 @@ varying vec3 vNormal; void main() { #include - gl_FragColor = vec4( packNormalToRGB( vNormal ), opacity ); + #include + + gl_FragColor = vec4( packNormalToRGB( vNormal * flipNormal ), opacity ); #include -- GitLab