Created
November 29, 2016 15:02
-
-
Save inear/30a22a8d31a37fab4a8a1fa0003f84bd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var vertexShader = [ | |
'#define LAMBERT', | |
'varying vec3 vLightFront;', | |
'varying vec3 vPosition;', | |
'varying vec3 vNormal;', | |
'#ifdef DOUBLE_SIDED', | |
' varying vec3 vLightBack;', | |
'#endif', | |
THREE.ShaderChunk['common'], | |
THREE.ShaderChunk['uv_pars_vertex'], | |
THREE.ShaderChunk['uv2_pars_vertex'], | |
THREE.ShaderChunk['envmap_pars_vertex'], | |
THREE.ShaderChunk['bsdfs'], | |
THREE.ShaderChunk['lights_pars'], | |
THREE.ShaderChunk['color_pars_vertex'], | |
THREE.ShaderChunk['morphtarget_pars_vertex'], | |
THREE.ShaderChunk['skinning_pars_vertex'], | |
THREE.ShaderChunk['shadowmap_pars_vertex'], | |
THREE.ShaderChunk['logdepthbuf_pars_vertex'], | |
THREE.ShaderChunk['clipping_planes_pars_vertex'], | |
'void main() {', | |
THREE.ShaderChunk['uv_vertex'], | |
THREE.ShaderChunk['uv2_vertex'], | |
THREE.ShaderChunk['color_vertex'], | |
THREE.ShaderChunk['beginnormal_vertex'], | |
THREE.ShaderChunk['morphnormal_vertex'], | |
THREE.ShaderChunk['skinbase_vertex'], | |
THREE.ShaderChunk['skinnormal_vertex'], | |
THREE.ShaderChunk['defaultnormal_vertex'], | |
THREE.ShaderChunk['begin_vertex'], | |
THREE.ShaderChunk['morphtarget_vertex'], | |
THREE.ShaderChunk['skinning_vertex'], | |
THREE.ShaderChunk['project_vertex'], | |
THREE.ShaderChunk['logdepthbuf_vertex'], | |
THREE.ShaderChunk['clipping_planes_vertex'], | |
THREE.ShaderChunk['worldpos_vertex'], | |
THREE.ShaderChunk['envmap_vertex'], | |
THREE.ShaderChunk['lights_lambert_vertex'], | |
THREE.ShaderChunk['shadowmap_vertex'], | |
'vNormal = normalize( transformedNormal );', | |
'vPosition = mvPosition.xyz;', | |
'}' | |
].join('\n') | |
var fragmentShader = [ | |
'varying vec3 vNormal;', | |
'varying vec3 vLightFront;', | |
'varying vec3 vPosition;', | |
'uniform vec3 diffuse;', | |
'uniform vec3 emissive;', | |
'uniform float opacity;', | |
'#ifdef DOUBLE_SIDED', | |
' varying vec3 vLightBack;', | |
'#endif', | |
THREE.ShaderChunk['common'], | |
THREE.ShaderChunk['packing'], | |
THREE.ShaderChunk['color_pars_fragment'], | |
THREE.ShaderChunk['uv_pars_fragment'], | |
THREE.ShaderChunk['uv2_pars_fragment'], | |
THREE.ShaderChunk['map_pars_fragment'], | |
THREE.ShaderChunk['alphamap_pars_fragment'], | |
THREE.ShaderChunk['aomap_pars_fragment'], | |
THREE.ShaderChunk['lightmap_pars_fragment'], | |
THREE.ShaderChunk['emissivemap_pars_fragment'], | |
THREE.ShaderChunk['envmap_pars_fragment'], | |
THREE.ShaderChunk['bsdfs'], | |
THREE.ShaderChunk['lights_pars'], | |
THREE.ShaderChunk['fog_pars_fragment'], | |
THREE.ShaderChunk['shadowmap_pars_fragment'], | |
// THREE.ShaderChunk[ "shadowmask_pars_fragment"], | |
'float getShadowMask() {\n', | |
'float shadow = 1.0;\n', | |
'#ifdef USE_SHADOWMAP\n', | |
// "#if NUM_DIR_LIGHTS > 0\n", | |
//"DirectionalLight directionalLight;\n", | |
//"for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n", | |
// "directionalLight = directionalLights[ i ];\n", | |
// "shadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ 0 ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n", | |
//"}\n", | |
//"#endif\n", | |
'#if NUM_SPOT_LIGHTS > 0\n', | |
'SpotLight spotLight;\n', | |
'for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n', | |
'spotLight = spotLights[ i ];\n', | |
'shadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ 0 ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n', | |
'}\n', | |
'#endif\n', | |
///* "#if NUM_POINT_LIGHTS > 0\n", | |
//"PointLight pointLight;\n", | |
//"for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n", | |
// "pointLight = pointLights[ i ];\n", | |
// "shadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ 0 ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;\n", | |
//"}\n", | |
//"#endif\n", | |
'#endif\n', | |
'return shadow;\n', | |
'}\n', | |
THREE.ShaderChunk['specularmap_pars_fragment'], | |
THREE.ShaderChunk['logdepthbuf_pars_fragment'], | |
THREE.ShaderChunk['clipping_planes_pars_fragment'], | |
'void main() {', | |
THREE.ShaderChunk['clipping_planes_fragment'], | |
'vec4 diffuseColor = vec4( diffuse, opacity );', | |
'ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );', | |
'vec3 totalEmissiveRadiance = emissive;', | |
THREE.ShaderChunk['logdepthbuf_fragment'], | |
// map_fragment | |
'#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor = mix(vec4(0.0, 0.0, 0.0, 1.0), vec4(diffuseColor.rgb,1.0),1.0-texelColor.a);\n#endif\n', | |
THREE.ShaderChunk['color_fragment'], | |
THREE.ShaderChunk['alphamap_fragment'], | |
THREE.ShaderChunk['alphatest_fragment'], | |
THREE.ShaderChunk['specularmap_fragment'], | |
THREE.ShaderChunk['emissivemap_fragment'], | |
'reflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );', | |
THREE.ShaderChunk['lightmap_fragment'], | |
'reflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );', | |
'#ifdef DOUBLE_SIDED', | |
'reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;', | |
'#else', | |
'reflectedLight.directDiffuse = vLightFront;', | |
'#endif', | |
'reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();', | |
THREE.ShaderChunk['aomap_fragment'], | |
'vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;', | |
THREE.ShaderChunk['normal_flip'], | |
THREE.ShaderChunk['envmap_fragment'], | |
'gl_FragColor = vec4( outgoingLight, diffuseColor.a );', | |
THREE.ShaderChunk['premultiplied_alpha_fragment'], | |
THREE.ShaderChunk['tonemapping_fragment'], | |
THREE.ShaderChunk['encodings_fragment'], | |
THREE.ShaderChunk['fog_fragment'], | |
'gl_FragColor.xyz = gl_FragColor.xyz;', | |
'}' | |
].join('\n') | |
var uniforms = THREE.UniformsUtils.clone(THREE.ShaderLib['lambert'].uniforms) | |
uniforms['map'].value = assets.textures.eyes | |
uniforms['diffuse'].value.set(0x88888) | |
var defines = {} | |
defines['USE_MAP'] = ' ' | |
defines['USE_SHADOWMAP'] = ' ' | |
var internautFaceMaterial = new THREE.ShaderMaterial({ | |
defines: defines, | |
uniforms: uniforms, | |
vertexShader: vertexShader, | |
fragmentShader: fragmentShader, | |
shading: THREE.FlatShading, | |
skinning: true, | |
lights: true, | |
fog: true | |
}) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment