Last active
January 19, 2016 14:28
-
-
Save karimbeyrouti/6c97dec164a11ca16bf3 to your computer and use it in GitHub Desktop.
This file contains 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
import THREE from 'three'; | |
export class MeshBasicMaterialCopy extends THREE.ShaderMaterial { | |
constructor(parameters) { | |
parameters = parameters || {}; | |
var defines = {}; | |
var uniforms = THREE.UniformsUtils.merge( [ | |
THREE.UniformsLib[ "common" ], | |
THREE.UniformsLib[ "aomap" ], | |
THREE.UniformsLib[ "fog" ], | |
THREE.UniformsLib[ "shadowmap" ] | |
] ); | |
var vertexShader = [ | |
THREE.ShaderChunk[ "common" ], | |
THREE.ShaderChunk[ "uv_pars_vertex" ], | |
THREE.ShaderChunk[ "uv2_pars_vertex" ], | |
THREE.ShaderChunk[ "envmap_pars_vertex" ], | |
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" ], | |
"void main() {", | |
THREE.ShaderChunk[ "uv_vertex" ], | |
THREE.ShaderChunk[ "uv2_vertex" ], | |
THREE.ShaderChunk[ "color_vertex" ], | |
THREE.ShaderChunk[ "skinbase_vertex" ], | |
" #ifdef USE_ENVMAP", | |
THREE.ShaderChunk[ "beginnormal_vertex" ], | |
THREE.ShaderChunk[ "morphnormal_vertex" ], | |
THREE.ShaderChunk[ "skinnormal_vertex" ], | |
THREE.ShaderChunk[ "defaultnormal_vertex" ], | |
" #endif", | |
THREE.ShaderChunk[ "begin_vertex" ], | |
THREE.ShaderChunk[ "morphtarget_vertex" ], | |
THREE.ShaderChunk[ "skinning_vertex" ], | |
THREE.ShaderChunk[ "project_vertex" ], | |
THREE.ShaderChunk[ "logdepthbuf_vertex" ], | |
THREE.ShaderChunk[ "worldpos_vertex" ], | |
THREE.ShaderChunk[ "envmap_vertex" ], | |
THREE.ShaderChunk[ "shadowmap_vertex" ], | |
"}" | |
].join( "\n" ); | |
var fragmentShader = [ | |
"uniform vec3 diffuse;", | |
"uniform float opacity;", | |
THREE.ShaderChunk[ "common" ], | |
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[ "envmap_pars_fragment" ], | |
THREE.ShaderChunk[ "fog_pars_fragment" ], | |
THREE.ShaderChunk[ "shadowmap_pars_fragment" ], | |
THREE.ShaderChunk[ "specularmap_pars_fragment" ], | |
THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], | |
"void main() {", | |
" vec3 outgoingLight = vec3( 0.0 );", | |
" vec4 diffuseColor = vec4( diffuse, opacity );", | |
" vec3 totalAmbientLight = vec3( 1.0 );", // hardwired | |
" vec3 shadowMask = vec3( 1.0 );", | |
THREE.ShaderChunk[ "logdepthbuf_fragment" ], | |
THREE.ShaderChunk[ "map_fragment" ], | |
THREE.ShaderChunk[ "color_fragment" ], | |
THREE.ShaderChunk[ "alphamap_fragment" ], | |
THREE.ShaderChunk[ "alphatest_fragment" ], | |
THREE.ShaderChunk[ "specularmap_fragment" ], | |
THREE.ShaderChunk[ "aomap_fragment" ], | |
THREE.ShaderChunk[ "shadowmap_fragment" ], | |
" outgoingLight = diffuseColor.rgb * totalAmbientLight * shadowMask;", | |
THREE.ShaderChunk[ "envmap_fragment" ], | |
THREE.ShaderChunk[ "linear_to_gamma_fragment" ], | |
THREE.ShaderChunk[ "fog_fragment" ], | |
" gl_FragColor = vec4( outgoingLight, diffuseColor.a );", | |
"}" | |
].join( "\n" ); | |
super({ | |
vertexShader:vertexShader, | |
fragmentShader:fragmentShader, | |
uniforms:uniforms, | |
defines:defines | |
}); | |
this.setValues( parameters ); | |
} | |
set map( v ){ | |
this.uniforms.offsetRepeat.value.set( v.offset.x, v.offset.y, v.repeat.x, v.repeat.y ); | |
this.uniforms.map.value = v;//THREE.ImageUtils.loadTexture(texture) | |
} | |
get map(){ | |
return this.uniforms.map.value; | |
} | |
set color( v ){ | |
this.uniforms.diffuse.value = v; | |
} | |
get color( ){ | |
return this.uniforms.diffuse.value; | |
} | |
set opacity( v ){ | |
if ( this.uniforms ){ | |
this.uniforms.opacity.value = v; | |
} else { | |
super.opacity = v; | |
} | |
} | |
get opacity( ){ | |
return this.uniforms.opacity.value; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment