diff --git a/examples/js/effects/OutlineEffect.js b/examples/js/effects/OutlineEffect.js index 9def61441b10fdaabec5cc5de465be19139741a9..6a7d8e116cc281a386886e22948d1304054b9282 100644 --- a/examples/js/effects/OutlineEffect.js +++ b/examples/js/effects/OutlineEffect.js @@ -62,7 +62,7 @@ THREE.OutlineEffect = function ( renderer, parameters ) { MeshBasicMaterial: 'basic', MeshLambertMaterial: 'lambert', MeshPhongMaterial: 'phong', - MeshToonMaterial: 'toon', + MeshToonMaterial: 'phong', MeshStandardMaterial: 'physical', MeshPhysicalMaterial: 'physical' }; diff --git a/src/materials/MeshToonMaterial.js b/src/materials/MeshToonMaterial.js index c638195ab4639dbabb28c91274f82923f3935b77..39d46333b5f9b50d5e6dc4a275fda2f69c30bd64 100644 --- a/src/materials/MeshToonMaterial.js +++ b/src/materials/MeshToonMaterial.js @@ -55,6 +55,8 @@ function MeshToonMaterial( parameters ) { MeshPhongMaterial.call( this ); + this.defines = { 'TOON': '' }; + this.type = 'MeshToonMaterial'; this.gradientMap = null; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 80181a47f8442e1dda317b7dc0e1ece979c824bf..3b5f84d92e01ccb5c43fd8e42a190d1fb746ac49 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -623,7 +623,6 @@ function WebGLRenderer( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal ); if ( ! material.isMeshPhongMaterial && - ! material.isMeshToonMaterial && ! material.isMeshStandardMaterial && material.shading === FlatShading ) { @@ -1776,7 +1775,6 @@ function WebGLRenderer( parameters ) { if ( material.isShaderMaterial || material.isMeshPhongMaterial || - material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap ) { @@ -1792,7 +1790,6 @@ function WebGLRenderer( parameters ) { } if ( material.isMeshPhongMaterial || - material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || @@ -1865,7 +1862,6 @@ function WebGLRenderer( parameters ) { if ( material.isMeshBasicMaterial || material.isMeshLambertMaterial || material.isMeshPhongMaterial || - material.isMeshToonMaterial || material.isMeshStandardMaterial || material.isMeshDepthMaterial ) { diff --git a/src/renderers/shaders/ShaderChunk.js b/src/renderers/shaders/ShaderChunk.js index b36319d1bba3f4c935ce8e66e06354ab830a4af5..f3f27c78c9deb6d9bdd13ace638dc5c1201dee41 100644 --- a/src/renderers/shaders/ShaderChunk.js +++ b/src/renderers/shaders/ShaderChunk.js @@ -99,8 +99,6 @@ import meshphong_frag from './ShaderLib/meshphong_frag.glsl'; import meshphong_vert from './ShaderLib/meshphong_vert.glsl'; import meshphysical_frag from './ShaderLib/meshphysical_frag.glsl'; import meshphysical_vert from './ShaderLib/meshphysical_vert.glsl'; -import meshtoon_frag from './ShaderLib/meshtoon_frag.glsl'; -import meshtoon_vert from './ShaderLib/meshtoon_vert.glsl'; import normal_frag from './ShaderLib/normal_frag.glsl'; import normal_vert from './ShaderLib/normal_vert.glsl'; import points_frag from './ShaderLib/points_frag.glsl'; @@ -210,8 +208,6 @@ export var ShaderChunk = { meshphong_vert: meshphong_vert, meshphysical_frag: meshphysical_frag, meshphysical_vert: meshphysical_vert, - meshtoon_frag: meshtoon_frag, - meshtoon_vert: meshtoon_vert, normal_frag: normal_frag, normal_vert: normal_vert, points_frag: points_frag, diff --git a/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl b/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl index 91679b58289faae4fa48c75f817d6458e712d348..3eb44cdadebebbf7d56926b803f0f648bba002d6 100644 --- a/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl +++ b/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl @@ -1,6 +1,6 @@ #if NUM_CLIPPING_PLANES > 0 - #if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( TOON ) + #if ! defined( PHYSICAL ) && ! defined( PHONG ) varying vec3 vViewPosition; #endif diff --git a/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl b/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl index 219c502181ccbb638b48fbe745864134df46db0e..d83f96d56c19942712dde6633d2145cbaba30152 100644 --- a/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl +++ b/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl @@ -1,3 +1,3 @@ -#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( TOON ) +#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) varying vec3 vViewPosition; #endif diff --git a/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl b/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl index bbdfb399b59a4cec819dd1c84153ee74fb321856..d3fa83858ea6c48fcc2da50b82cf199f58560079 100644 --- a/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl +++ b/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl @@ -1,4 +1,4 @@ -#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( TOON ) +#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) vViewPosition = - mvPosition.xyz; #endif diff --git a/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl b/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl index 99de62aa5541619a09b11b70a2b2af080865d8a8..097196b19b422b866f955df611c8ea65278b6d14 100644 --- a/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl +++ b/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl @@ -1,6 +1,6 @@ #ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( TOON ) + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition ); diff --git a/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl b/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl index b9950d32cc1a936e9ad2a499a7ced46969eb6fe8..575800944abc0e8e1c0cb34cfeb1cfc9d007c8c5 100644 --- a/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl +++ b/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl @@ -5,7 +5,7 @@ #ifdef USE_ENVMAP - #if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( TOON ) ) + #if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) ) varying vec3 vWorldPosition; #endif @@ -16,7 +16,7 @@ #endif uniform float flipEnvMap; - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( TOON ) || defined( PHYSICAL ) + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL ) uniform float refractionRatio; #else varying vec3 vReflect; diff --git a/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl b/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl index 9b77fed79cd1e3bb311cb5fe9140f755c797359c..7feab7532e506d40cc11b36c2156444b0e3b87c5 100644 --- a/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl +++ b/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl @@ -1,6 +1,6 @@ #ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( TOON ) + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) varying vec3 vWorldPosition; #else diff --git a/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl b/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl index d0fa2cd76d090d933a98a0711550c2e5831c4164..ce32d52289562263b6f45128bd72d8a2e92abd79 100644 --- a/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl +++ b/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl @@ -1,6 +1,6 @@ #ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( TOON ) + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) vWorldPosition = worldPosition.xyz; diff --git a/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl b/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl index dc29a4e8036b2cf9a6f5616e079e2d5883a233e6..d1db3f9a04acebe9a888d0469ef83ce3cd6f269b 100644 --- a/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl +++ b/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl @@ -1,4 +1,4 @@ -#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( TOON ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP ) +#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP ) #ifdef USE_SKINNING diff --git a/src/renderers/shaders/ShaderLib.js b/src/renderers/shaders/ShaderLib.js index 2ac9256a03d06d7514b1f168afa0ab42861c0f34..99d7baf54723d183224939f56b9432888c324df0 100644 --- a/src/renderers/shaders/ShaderLib.js +++ b/src/renderers/shaders/ShaderLib.js @@ -54,6 +54,7 @@ var ShaderLib = { UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, + UniformsLib.gradientmap, UniformsLib.fog, UniformsLib.lights, { @@ -68,31 +69,6 @@ var ShaderLib = { }, - toon: { - - uniforms: Object.assign( {}, - UniformsLib.common, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.gradientmap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive : { value: new Color( 0x000000 ) }, - specular : { value: new Color( 0x111111 ) }, - shininess: { value: 30 } - } - ), - - vertexShader: ShaderChunk.meshtoon_vert, - fragmentShader: ShaderChunk.meshtoon_frag - - }, - standard: { uniforms: Object.assign( {}, diff --git a/src/renderers/shaders/ShaderLib/meshphong_frag.glsl b/src/renderers/shaders/ShaderLib/meshphong_frag.glsl index 5041e7a5f1949eaf701862414685e86c4b5742c5..4b909fc5de8f4e47532401c130429c5af75eea21 100644 --- a/src/renderers/shaders/ShaderLib/meshphong_frag.glsl +++ b/src/renderers/shaders/ShaderLib/meshphong_frag.glsl @@ -17,6 +17,7 @@ uniform float opacity; #include #include #include +#include #include #include #include diff --git a/src/renderers/shaders/ShaderLib/meshtoon_frag.glsl b/src/renderers/shaders/ShaderLib/meshtoon_frag.glsl deleted file mode 100644 index c6ca55369239e415605150ddd99837c98a3b6a9c..0000000000000000000000000000000000000000 --- a/src/renderers/shaders/ShaderLib/meshtoon_frag.glsl +++ /dev/null @@ -1,68 +0,0 @@ -#define TOON - -uniform vec3 diffuse; -uniform vec3 emissive; -uniform vec3 specular; -uniform float shininess; -uniform float opacity; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void main() { - - #include - - vec4 diffuseColor = vec4( diffuse, opacity ); - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - - #include - #include - #include - #include - #include - #include - #include - #include - #include - - // accumulation - #include - #include - - // modulation - #include - - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - - #include - - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - - #include - #include - #include - #include - -} diff --git a/src/renderers/shaders/ShaderLib/meshtoon_vert.glsl b/src/renderers/shaders/ShaderLib/meshtoon_vert.glsl deleted file mode 100644 index af5b01e0bb49d4f19fd38ddaff262f64ee639178..0000000000000000000000000000000000000000 --- a/src/renderers/shaders/ShaderLib/meshtoon_vert.glsl +++ /dev/null @@ -1,55 +0,0 @@ -#define TOON - -varying vec3 vViewPosition; - -#ifndef FLAT_SHADED - - varying vec3 vNormal; - -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void main() { - - #include - #include - #include - - #include - #include - #include - #include - #include - -#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED - - vNormal = normalize( transformedNormal ); - -#endif - - #include - #include - #include - #include - #include - #include - #include - - vViewPosition = - mvPosition.xyz; - - #include - #include - #include - -} diff --git a/src/renderers/webgl/WebGLPrograms.js b/src/renderers/webgl/WebGLPrograms.js index a6ea358315f98ed296de4c2cc82a97ab4d7d09e8..f15d6d856cb98dba09b4e99b6e72160c3c1353c5 100644 --- a/src/renderers/webgl/WebGLPrograms.js +++ b/src/renderers/webgl/WebGLPrograms.js @@ -15,7 +15,7 @@ function WebGLPrograms( renderer, capabilities ) { MeshBasicMaterial: 'basic', MeshLambertMaterial: 'lambert', MeshPhongMaterial: 'phong', - MeshToonMaterial: 'toon', + MeshToonMaterial: 'phong', MeshStandardMaterial: 'physical', MeshPhysicalMaterial: 'physical', LineBasicMaterial: 'basic',