Skip to content

Instantly share code, notes, and snippets.

@inear
Created November 29, 2016 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inear/30a22a8d31a37fab4a8a1fa0003f84bd to your computer and use it in GitHub Desktop.
Save inear/30a22a8d31a37fab4a8a1fa0003f84bd to your computer and use it in GitHub Desktop.
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