提交 61c9e5f1 编写于 作者: A alteredq

Replaced basic shader with custom shader in deferred shading.

This is in anticipation of combining more geometry passes, need modifiable shader.
上级 55e8d364
......@@ -7,6 +7,88 @@
THREE.ShaderDeferred = {
"color" : {
uniforms: THREE.UniformsUtils.merge( [
THREE.UniformsLib[ "common" ],
THREE.UniformsLib[ "fog" ],
THREE.UniformsLib[ "shadowmap" ]
] ),
fragmentShader : [
"uniform vec3 diffuse;",
"uniform float opacity;",
THREE.ShaderChunk[ "color_pars_fragment" ],
THREE.ShaderChunk[ "map_pars_fragment" ],
THREE.ShaderChunk[ "lightmap_pars_fragment" ],
THREE.ShaderChunk[ "envmap_pars_fragment" ],
THREE.ShaderChunk[ "fog_pars_fragment" ],
THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
THREE.ShaderChunk[ "specularmap_pars_fragment" ],
"void main() {",
"gl_FragColor = vec4( diffuse, opacity );",
THREE.ShaderChunk[ "map_fragment" ],
THREE.ShaderChunk[ "alphatest_fragment" ],
THREE.ShaderChunk[ "specularmap_fragment" ],
THREE.ShaderChunk[ "lightmap_fragment" ],
THREE.ShaderChunk[ "color_fragment" ],
THREE.ShaderChunk[ "envmap_fragment" ],
THREE.ShaderChunk[ "shadowmap_fragment" ],
THREE.ShaderChunk[ "linear_to_gamma_fragment" ],
THREE.ShaderChunk[ "fog_fragment" ],
"}"
].join("\n"),
vertexShader : [
THREE.ShaderChunk[ "map_pars_vertex" ],
THREE.ShaderChunk[ "lightmap_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" ],
"void main() {",
THREE.ShaderChunk[ "map_vertex" ],
THREE.ShaderChunk[ "lightmap_vertex" ],
THREE.ShaderChunk[ "color_vertex" ],
"#ifdef USE_ENVMAP",
THREE.ShaderChunk[ "morphnormal_vertex" ],
THREE.ShaderChunk[ "skinbase_vertex" ],
THREE.ShaderChunk[ "skinnormal_vertex" ],
THREE.ShaderChunk[ "defaultnormal_vertex" ],
"#endif",
THREE.ShaderChunk[ "morphtarget_vertex" ],
THREE.ShaderChunk[ "skinning_vertex" ],
THREE.ShaderChunk[ "default_vertex" ],
THREE.ShaderChunk[ "worldpos_vertex" ],
THREE.ShaderChunk[ "envmap_vertex" ],
THREE.ShaderChunk[ "shadowmap_vertex" ],
"}"
].join("\n")
},
"clipDepth" : {
uniforms: { },
......
......@@ -109,7 +109,7 @@
// materials
var normalShader, bumpShader, clipDepthShader, lightShader, unlitShader, compositeShader;
var colorShader, normalShader, bumpShader, clipDepthShader, lightShader, unlitShader, compositeShader;
var matNormal, matClipDepth, matBasic, matUnlit;
// lights
......@@ -327,21 +327,19 @@
function initScene( object, y, scale ) {
var shader = THREE.ShaderLib[ "basic" ];
object.traverse( function( node ) {
if ( node.material ) {
// color material
var uniforms = THREE.UniformsUtils.clone( shader.uniforms );
var uniforms = THREE.UniformsUtils.clone( colorShader.uniforms );
var defines = { "USE_MAP": !!node.material.map, "GAMMA_INPUT": true };
var material = new THREE.ShaderMaterial( {
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
fragmentShader: colorShader.fragmentShader,
vertexShader: colorShader.vertexShader,
uniforms: uniforms,
defines: defines,
shading: node.material.shading
......@@ -464,6 +462,7 @@
// shader definitions
// -----------------------
colorShader = THREE.ShaderDeferred[ "color" ];
normalShader = THREE.ShaderDeferred[ "normals" ];
bumpShader = THREE.ShaderDeferred[ "bump" ];
clipDepthShader = THREE.ShaderDeferred[ "clipDepth" ];
......
......@@ -112,7 +112,7 @@
// materials
var compColor, compNormals, compDepth, compLightBuffer, compFinal, compEmitter, compositePass;
var colorShader, normalShader, bumpShader, clipDepthShader, lightShader, unlitShader, compositeShader;
var matNormal, matClipDepth, matBasic, matUnlit;
var numLights = 50;
......@@ -331,18 +331,24 @@
function initScene( object, y, scale ) {
var shader = THREE.ShaderLib[ "basic" ];
object.traverse( function( node ) {
if ( node.material ) {
// color material
var uniforms = THREE.UniformsUtils.clone( shader.uniforms );
var uniforms = THREE.UniformsUtils.clone( colorShader.uniforms );
var defines = { "USE_MAP": !!node.material.map, "GAMMA_INPUT": true };
var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, defines: defines } );
var material = new THREE.ShaderMaterial( {
fragmentShader: colorShader.fragmentShader,
vertexShader: colorShader.vertexShader,
uniforms: uniforms,
defines: defines
} );
uniforms.diffuse.value.copy( node.material.color );
uniforms.map.value = node.material.map;
......@@ -420,6 +426,7 @@
// shader definitions
// -----------------------
colorShader = THREE.ShaderDeferred[ "color" ];
normalShader = THREE.ShaderDeferred[ "normals" ];
bumpShader = THREE.ShaderDeferred[ "bump" ];
clipDepthShader = THREE.ShaderDeferred[ "clipDepth" ];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册