diff --git a/build/Three.js b/build/Three.js index 5952817d..8b6b091d 100644 --- a/build/Three.js +++ b/build/Three.js @@ -112,8 +112,8 @@ this.combine=b.combine!==void 0?b.combine:THREE.MultiplyOperation;this.reflectiv b.wireframeLinejoin!==void 0?b.wireframeLinejoin:"round";this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:!1};THREE.MeshPhongMaterial.prototype=new THREE.Material;THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial; THREE.MeshDepthMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1};THREE.MeshDepthMaterial.prototype=new THREE.Material;THREE.MeshDepthMaterial.prototype.constructor=THREE.MeshDepthMaterial; THREE.MeshNormalMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.shading=b.shading?b.shading:THREE.FlatShading;this.wireframe=b.wireframe?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth?b.wireframeLinewidth:1};THREE.MeshNormalMaterial.prototype=new THREE.Material;THREE.MeshNormalMaterial.prototype.constructor=THREE.MeshNormalMaterial;THREE.MeshFaceMaterial=function(){}; -THREE.MeshShaderMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.fragmentShader=b.fragmentShader!==void 0?b.fragmentShader:"void main() {}";this.vertexShader=b.vertexShader!==void 0?b.vertexShader:"void main() {}";this.uniforms=b.uniforms!==void 0?b.uniforms:{};this.attributes=b.attributes;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.fog= -b.fog!==void 0?b.fog:!1;this.lights=b.lights!==void 0?b.lights:!1;this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:!1};THREE.MeshShaderMaterial.prototype=new THREE.Material;THREE.MeshShaderMaterial.prototype.constructor=THREE.MeshShaderMaterial; +THREE.ShaderMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.fragmentShader=b.fragmentShader!==void 0?b.fragmentShader:"void main() {}";this.vertexShader=b.vertexShader!==void 0?b.vertexShader:"void main() {}";this.uniforms=b.uniforms!==void 0?b.uniforms:{};this.attributes=b.attributes;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.fog=b.fog!== +void 0?b.fog:!1;this.lights=b.lights!==void 0?b.lights:!1;this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:!1};THREE.ShaderMaterial.prototype=new THREE.Material;THREE.ShaderMaterial.prototype.constructor=THREE.ShaderMaterial; THREE.ParticleBasicMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.map=b.map!==void 0?b.map:null;this.size=b.size!==void 0?b.size:1;this.sizeAttenuation=b.sizeAttenuation!==void 0?b.sizeAttenuation:!0;this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.fog=b.fog!==void 0?b.fog:!0};THREE.ParticleBasicMaterial.prototype=new THREE.Material;THREE.ParticleBasicMaterial.prototype.constructor=THREE.ParticleBasicMaterial; THREE.ParticleCanvasMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.program=b.program!==void 0?b.program:function(){}};THREE.ParticleCanvasMaterial.prototype=new THREE.Material;THREE.ParticleCanvasMaterial.prototype.constructor=THREE.ParticleCanvasMaterial;THREE.ParticleDOMMaterial=function(b){THREE.Material.call(this);this.domElement=b}; THREE.Texture=function(b,c,e,f,h,m){this.id=THREE.TextureCount++;this.image=b;this.mapping=c!==void 0?c:new THREE.UVMapping;this.wrapS=e!==void 0?e:THREE.ClampToEdgeWrapping;this.wrapT=f!==void 0?f:THREE.ClampToEdgeWrapping;this.magFilter=h!==void 0?h:THREE.LinearFilter;this.minFilter=m!==void 0?m:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.needsUpdate=!1}; @@ -235,8 +235,8 @@ f.color,n.opacity.value=f.opacity,n.size.value=f.size,n.scale.value=za.height/2, ha[e],n.shadowMap.texture[e]=R.shadowMap[e];n.shadowDarkness.value=R.shadowMapDarkness;n.shadowBias.value=R.shadowMapBias}for(var O in n)if(t=h.uniforms[O])if(c=n[O],u=c.type,e=c.value,u=="i")o.uniform1i(t,e);else if(u=="f")o.uniform1f(t,e);else if(u=="v2")o.uniform2f(t,e.x,e.y);else if(u=="v3")o.uniform3f(t,e.x,e.y,e.z);else if(u=="v4")o.uniform4f(t,e.x,e.y,e.z,e.w);else if(u=="c")o.uniform3f(t,e.r,e.g,e.b);else if(u=="fv1")o.uniform1fv(t,e);else if(u=="fv")o.uniform3fv(t,e);else if(u=="v3v"){if(!c._array)c._array= new Float32Array(3*e.length);u=0;for(w=e.length;u=0)o.bindBuffer(o.ARRAY_BUFFER,h.__webglVertexBuffer),o.vertexAttribPointer(b.position,3,o.FLOAT,!1,0,0);else if(m.morphTargetBase){c=k.program.attributes;m.morphTargetBase!==-1?(o.bindBuffer(o.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[m.morphTargetBase]),o.vertexAttribPointer(c.position,3,o.FLOAT,!1,0,0)):c.position>=0&& (o.bindBuffer(o.ARRAY_BUFFER,h.__webglVertexBuffer),o.vertexAttribPointer(c.position,3,o.FLOAT,!1,0,0));if(m.morphTargetForcedOrder.length)for(var f=0,t=m.morphTargetForcedOrder,p=m.morphTargetInfluences;fu&&(v=w,u=p[v]);o.bindBuffer(o.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[v]);o.vertexAttribPointer(c["morphTarget"+f],3,o.FLOAT,!1,0,0);m.__webglMorphTargetInfluences[f]=u;t[v]=1;u=-1;f++}}k.program.uniforms.morphTargetInfluences!==null&&o.uniform1fv(k.program.uniforms.morphTargetInfluences,m.__webglMorphTargetInfluences)}if(h.__webglCustomAttributes)for(n in h.__webglCustomAttributes)b[n]>=0&&(c=h.__webglCustomAttributes[n], @@ -271,8 +271,8 @@ console.error(e),null;return c}function U(b){switch(b){case THREE.NearestFilter: case THREE.LinearFilter:return o.LINEAR;case THREE.LinearMipMapNearestFilter:return o.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return o.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return o.BYTE;case THREE.UnsignedByteType:return o.UNSIGNED_BYTE;case THREE.ShortType:return o.SHORT;case THREE.UnsignedShortType:return o.UNSIGNED_SHORT;case THREE.IntType:return o.INT;case THREE.UnsignedShortType:return o.UNSIGNED_INT;case THREE.FloatType:return o.FLOAT;case THREE.AlphaFormat:return o.ALPHA; case THREE.RGBFormat:return o.RGB;case THREE.RGBAFormat:return o.RGBA;case THREE.LuminanceFormat:return o.LUMINANCE;case THREE.LuminanceAlphaFormat:return o.LUMINANCE_ALPHA}return 0}var R=this,o,pa=[],T=null,la=null,aa=null,na=null,ja=null,ka=null,ea=null,Z=null,ga=null,Y=null,ma=0,ia=0,sa=0,O=0,da=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],ua=new THREE.Matrix4,ta=new Float32Array(16),ra=new Float32Array(16),wa=new THREE.Vector4,Ca= {ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},za=b.canvas!==void 0?b.canvas:document.createElement("canvas"),Aa=b.stencil!==void 0?b.stencil:!0,Ea=b.preserveDrawingBuffer!==void 0?b.preserveDrawingBuffer:!1,L=b.antialias!==void 0?b.antialias:!1,P=b.clearColor!==void 0?new THREE.Color(b.clearColor):new THREE.Color(0),fa=b.clearAlpha!==void 0?b.clearAlpha:0;_maxLights=b.maxLights!==void 0?b.maxLights:4;this.data={vertices:0, -faces:0,drawCalls:0};this.maxMorphTargets=8;this.domElement=za;this.sortObjects=this.autoClear=!0;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=!0;var $,ha=[],b=THREE.ShaderLib.depthRGBA,qa=THREE.UniformsUtils.clone(b.uniforms),ya=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader, -uniforms:qa}),xa=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:qa,morphTargets:!0});ya._shadowPass=!0;xa._shadowPass=!0;try{if(!(o=za.getContext("experimental-webgl",{antialias:L,stencil:Aa,preserveDrawingBuffer:Ea})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+o.getParameter(o.VERSION)+" | "+o.getParameter(o.VENDOR)+" | "+o.getParameter(o.RENDERER)+" | "+o.getParameter(o.SHADING_LANGUAGE_VERSION))}catch(oa){console.error(oa)}o.clearColor(0, +faces:0,drawCalls:0};this.maxMorphTargets=8;this.domElement=za;this.sortObjects=this.autoClear=!0;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=!0;var $,ha=[],b=THREE.ShaderLib.depthRGBA,qa=THREE.UniformsUtils.clone(b.uniforms),ya=new THREE.ShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader, +uniforms:qa}),xa=new THREE.ShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:qa,morphTargets:!0});ya._shadowPass=!0;xa._shadowPass=!0;try{if(!(o=za.getContext("experimental-webgl",{antialias:L,stencil:Aa,preserveDrawingBuffer:Ea})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+o.getParameter(o.VERSION)+" | "+o.getParameter(o.VENDOR)+" | "+o.getParameter(o.RENDERER)+" | "+o.getParameter(o.SHADING_LANGUAGE_VERSION))}catch(oa){console.error(oa)}o.clearColor(0, 0,0,1);o.clearDepth(1);o.clearStencil(0);o.enable(o.DEPTH_TEST);o.depthFunc(o.LEQUAL);o.frontFace(o.CCW);o.cullFace(o.BACK);o.enable(o.CULL_FACE);o.enable(o.BLEND);o.blendEquation(o.FUNC_ADD);o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA);o.clearColor(P.r,P.g,P.b,fa);this.context=o;var Fa=o.getParameter(o.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0,X={};X.vertices=new Float32Array(16);X.faces=new Uint16Array(6);i=0;X.vertices[i++]=-1;X.vertices[i++]=-1;X.vertices[i++]=0;X.vertices[i++]=1;X.vertices[i++]=1; X.vertices[i++]=-1;X.vertices[i++]=1;X.vertices[i++]=1;X.vertices[i++]=1;X.vertices[i++]=1;X.vertices[i++]=1;X.vertices[i++]=0;X.vertices[i++]=-1;X.vertices[i++]=1;X.vertices[i++]=0;i=X.vertices[i++]=0;X.faces[i++]=0;X.faces[i++]=1;X.faces[i++]=2;X.faces[i++]=0;X.faces[i++]=2;X.faces[i++]=3;X.vertexBuffer=o.createBuffer();X.elementBuffer=o.createBuffer();o.bindBuffer(o.ARRAY_BUFFER,X.vertexBuffer);o.bufferData(o.ARRAY_BUFFER,X.vertices,o.STATIC_DRAW);o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,X.elementBuffer); o.bufferData(o.ELEMENT_ARRAY_BUFFER,X.faces,o.STATIC_DRAW);X.program=o.createProgram();o.attachShader(X.program,M("fragment",THREE.ShaderLib.sprite.fragmentShader));o.attachShader(X.program,M("vertex",THREE.ShaderLib.sprite.vertexShader));o.linkProgram(X.program);X.attributes={};X.uniforms={};X.attributes.position=o.getAttribLocation(X.program,"position");X.attributes.uv=o.getAttribLocation(X.program,"uv");X.uniforms.uvOffset=o.getUniformLocation(X.program,"uvOffset");X.uniforms.uvScale=o.getUniformLocation(X.program, @@ -299,7 +299,7 @@ u(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),f(c,I,qa,E,O,$)}fo function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=b.__objectsAdded[0],f=b,h=void 0,k=void 0,m=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups== void 0&&N(k),k.geometryGroups){m=k.geometryGroups[h];if(!m.__webglVertexBuffer){var n=m;n.__webglVertexBuffer=o.createBuffer();n.__webglNormalBuffer=o.createBuffer();n.__webglTangentBuffer=o.createBuffer();n.__webglColorBuffer=o.createBuffer();n.__webglUVBuffer=o.createBuffer();n.__webglUV2Buffer=o.createBuffer();n.__webglSkinVertexABuffer=o.createBuffer();n.__webglSkinVertexBBuffer=o.createBuffer();n.__webglSkinIndicesBuffer=o.createBuffer();n.__webglSkinWeightsBuffer=o.createBuffer();n.__webglFaceBuffer= o.createBuffer();n.__webglLineBuffer=o.createBuffer();if(n.numMorphTargets){var t=void 0,p=void 0;n.__webglMorphTargetsBuffers=[];t=0;for(p=n.numMorphTargets;t0||x.faceVertexUvs.length>0)n.__uvArray=new Float32Array(p*2);if(x.faceUvs.length>1||x.faceVertexUvs.length> 1)n.__uv2Array=new Float32Array(p*2)}if(t.geometry.skinWeights.length&&t.geometry.skinIndices.length)n.__skinVertexAArray=new Float32Array(p*4),n.__skinVertexBArray=new Float32Array(p*4),n.__skinIndexArray=new Float32Array(p*4),n.__skinWeightArray=new Float32Array(p*4);n.__faceArray=new Uint16Array(y*3+(t.geometry.edgeFaces?t.geometry.edgeFaces.length*6:0));n.__lineArray=new Uint16Array(fa*2);if(n.numMorphTargets){n.__morphTargetsArrays=[];x=0;for(L=n.numMorphTargets;x1&&(W=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(S,W);object.name=p;object.position.set(G[0],G[1],G[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;T.scene.addObject(object);T.objects[p]=object;E.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),T.scene.collisions.colliders.push(b)); +THREE.SceneLoader.prototype={load:function(b,c){var e=this,f=new Worker(b);f.postMessage(0);var h=THREE.Loader.prototype.extractUrlbase(b);f.onmessage=function(b){function f(b,c){return c=="relativeToHTML"?b:h+"/"+b}function n(){for(p in M.objects)if(!T.objects[p])if(E=M.objects[p],E.geometry!==void 0){if(S=T.geometries[E.geometry]){var b=!1;W=[];for(aa=0;aa1&&(W=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(S,W);object.name=p;object.position.set(G[0],G[1],G[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;T.scene.addObject(object);T.objects[p]=object;E.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),T.scene.collisions.colliders.push(b)); if(E.castsShadow)b=new THREE.ShadowVolume(S),T.scene.addChild(b),b.position=object.position,b.rotation=object.rotation,b.scale=object.scale;E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},T.triggers[object.name]=b)}}else G=E.position,r=E.rotation,q=E.quaternion,s=E.scale,q=0,object=new THREE.Object3D,object.name=p,object.position.set(G[0],G[1],G[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0], s[1],s[2]),object.visible=E.visible!==void 0?E.visible:!1,T.scene.addObject(object),T.objects[p]=object,T.empties[p]=object,E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},T.triggers[object.name]=b)}function u(b){return function(c){T.geometries[b]=c;n();V-=1;e.onLoadComplete();w()}}function v(b){return function(c){T.geometries[b]=c}}function w(){e.callbackProgress({totalModels:o,totalTextures:pa,loadedModels:o-V,loadedTextures:pa-R},T);e.onLoadProgress();V==0&&R==0&&c(T)} var t,x,p,y,z,A,C,E,G,H,N,S,J,I,K,W,D,M,U,V,R,o,pa,T;M=b.data;K=new THREE.BinaryLoader;U=new THREE.JSONLoader;R=V=0;T={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};b=!1;for(p in M.objects)if(E=M.objects[p],E.meshCollider){b=!0;break}if(b)T.scene.collisions=new THREE.CollisionSystem;if(M.transform){b=M.transform.position;H=M.transform.rotation;var la=M.transform.scale;b&&T.scene.position.set(b[0],b[1],b[2]);H&&T.scene.rotation.set(H[0], @@ -616,7 +616,7 @@ R;for(C in M.textures){t=M.textures[C];if(t.mapping!=void 0&&THREE[t.mapping]!=v if(t.repeat[0]!=1)K.wrapS=THREE.RepeatWrapping;if(t.repeat[1]!=1)K.wrapT=THREE.RepeatWrapping}t.offset&&K.offset.set(t.offset[0],t.offset[1]);if(t.wrap){U={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(U[t.wrap[0]]!==void 0)K.wrapS=U[t.wrap[0]];if(U[t.wrap[1]]!==void 0)K.wrapT=U[t.wrap[1]]}}T.textures[C]=K}for(x in M.materials){C=M.materials[x];for(N in C.parameters)if(N=="envMap"||N=="map"||N=="lightMap")C.parameters[N]=T.textures[C.parameters[N]];else if(N=="shading")C.parameters[N]= C.parameters[N]=="flat"?THREE.FlatShading:THREE.SmoothShading;else if(N=="blending")C.parameters[N]=THREE[C.parameters[N]]?THREE[C.parameters[N]]:THREE.NormalBlending;else if(N=="combine")C.parameters[N]=C.parameters[N]=="MixOperation"?THREE.MixOperation:THREE.MultiplyOperation;else if(N=="vertexColors")if(C.parameters[N]=="face")C.parameters[N]=THREE.FaceColors;else if(C.parameters[N])C.parameters[N]=THREE.VertexColors;if(C.parameters.opacity!==void 0&&C.parameters.opacity<1)C.parameters.transparent= !0;if(C.parameters.normalMap){t=THREE.ShaderUtils.lib.normal;b=THREE.UniformsUtils.clone(t.uniforms);K=C.parameters.color;U=C.parameters.specular;A=C.parameters.ambient;I=C.parameters.shininess;b.tNormal.texture=T.textures[C.parameters.normalMap];if(C.parameters.normalMapFactor)b.uNormalScale.value=C.parameters.normalMapFactor;if(C.parameters.map)b.tDiffuse.texture=C.parameters.map,b.enableDiffuse.value=!0;if(C.parameters.lightMap)b.tAO.texture=C.parameters.lightMap,b.enableAO.value=!0;if(C.parameters.specularMap)b.tSpecular.texture= -T.textures[C.parameters.specularMap],b.enableSpecular.value=!0;b.uDiffuseColor.value.setHex(K);b.uSpecularColor.value.setHex(U);b.uAmbientColor.value.setHex(A);b.uShininess.value=I;if(C.parameters.opacity)b.uOpacity.value=C.parameters.opacity;C=new THREE.MeshShaderMaterial({fragmentShader:t.fragmentShader,vertexShader:t.vertexShader,uniforms:b,lights:!0,fog:!0})}else C=new THREE[C.type](C.parameters);T.materials[x]=C}n();e.callbackSync(T)}},constructor:THREE.SceneLoader};THREE.UTF8Loader=function(){}; +T.textures[C.parameters.specularMap],b.enableSpecular.value=!0;b.uDiffuseColor.value.setHex(K);b.uSpecularColor.value.setHex(U);b.uAmbientColor.value.setHex(A);b.uShininess.value=I;if(C.parameters.opacity)b.uOpacity.value=C.parameters.opacity;C=new THREE.ShaderMaterial({fragmentShader:t.fragmentShader,vertexShader:t.vertexShader,uniforms:b,lights:!0,fog:!0})}else C=new THREE[C.type](C.parameters);T.materials[x]=C}n();e.callbackSync(T)}},constructor:THREE.SceneLoader};THREE.UTF8Loader=function(){}; THREE.UTF8Loader.prototype=new THREE.UTF8Loader;THREE.UTF8Loader.prototype.constructor=THREE.UTF8Loader; THREE.UTF8Loader.prototype.load=function(b){var c=new XMLHttpRequest,e=b.model,f=b.callback,h=b.scale!==void 0?b.scale:1,m=b.offsetX!==void 0?b.offsetX:0,k=b.offsetY!==void 0?b.offsetY:0,n=b.offsetZ!==void 0?b.offsetZ:0;c.onreadystatechange=function(){c.readyState==4?c.status==200||c.status==0?THREE.UTF8Loader.prototype.createModel(c.responseText,f,h,m,k,n):alert("Couldn't load ["+e+"] ["+c.status+"]"):c.readyState!=3&&c.readyState==2&&c.getResponseHeader("Content-Length")};c.open("GET",e,!0);c.send(null)}; THREE.UTF8Loader.prototype.decompressMesh=function(b){var c=b.charCodeAt(0);c>=57344&&(c-=2048);c++;for(var e=new Float32Array(8*c),f=1,h=0;h<8;h++){for(var m=0,k=0;k>1^-(n&1);e[8*k+h]=m}f+=c}c=b.length-f;m=new Uint16Array(c);for(h=k=0;h + @@ -35,6 +36,7 @@ + @@ -48,7 +50,7 @@ - + @@ -66,7 +68,6 @@ - @@ -85,6 +86,11 @@ + + + + + @@ -93,11 +99,6 @@ - - - - - @@ -109,8 +110,9 @@ - + + diff --git a/examples/js/postprocessing/BloomPass.js b/examples/js/postprocessing/BloomPass.js index bf45e08c..20689977 100644 --- a/examples/js/postprocessing/BloomPass.js +++ b/examples/js/postprocessing/BloomPass.js @@ -24,7 +24,7 @@ THREE.BloomPass = function( strength, kernelSize, sigma, resolution ) { this.screenUniforms[ "opacity" ].value = strength; - this.materialScreen = new THREE.MeshShaderMaterial( { + this.materialScreen = new THREE.ShaderMaterial( { uniforms: this.screenUniforms, vertexShader: screenShader.vertexShader, @@ -43,7 +43,7 @@ THREE.BloomPass = function( strength, kernelSize, sigma, resolution ) { this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurx; this.convolutionUniforms[ "cKernel" ].value = THREE.ShaderExtras.buildKernel( sigma ); - this.materialConvolution = new THREE.MeshShaderMaterial( { + this.materialConvolution = new THREE.ShaderMaterial( { uniforms: this.convolutionUniforms, vertexShader: "#define KERNEL_SIZE " + kernelSize + ".0\n" + convolutionShader.vertexShader, diff --git a/examples/js/postprocessing/DotScreenPass.js b/examples/js/postprocessing/DotScreenPass.js index 61661c99..ebaf2720 100644 --- a/examples/js/postprocessing/DotScreenPass.js +++ b/examples/js/postprocessing/DotScreenPass.js @@ -14,7 +14,7 @@ THREE.DotScreenPass = function( center, angle, scale ) { if ( angle !== undefined ) this.uniforms[ "angle"].value = angle; if ( scale !== undefined ) this.uniforms[ "scale"].value = scale; - this.material = new THREE.MeshShaderMaterial( { + this.material = new THREE.ShaderMaterial( { uniforms: this.uniforms, vertexShader: shader.vertexShader, diff --git a/examples/js/postprocessing/FilmPass.js b/examples/js/postprocessing/FilmPass.js index eebbf60f..d0e9634b 100644 --- a/examples/js/postprocessing/FilmPass.js +++ b/examples/js/postprocessing/FilmPass.js @@ -8,7 +8,7 @@ THREE.FilmPass = function( noiseIntensity, scanlinesIntensity, scanlinesCount, g this.uniforms = THREE.UniformsUtils.clone( shader.uniforms ); - this.material = new THREE.MeshShaderMaterial( { + this.material = new THREE.ShaderMaterial( { uniforms: this.uniforms, vertexShader: shader.vertexShader, diff --git a/examples/js/postprocessing/ShaderPass.js b/examples/js/postprocessing/ShaderPass.js index c8a3d325..a144c23b 100644 --- a/examples/js/postprocessing/ShaderPass.js +++ b/examples/js/postprocessing/ShaderPass.js @@ -8,7 +8,7 @@ THREE.ShaderPass = function( shader, textureID ) { this.uniforms = THREE.UniformsUtils.clone( shader.uniforms ); - this.material = new THREE.MeshShaderMaterial( { + this.material = new THREE.ShaderMaterial( { uniforms: this.uniforms, vertexShader: shader.vertexShader, diff --git a/examples/js/postprocessing/TexturePass.js b/examples/js/postprocessing/TexturePass.js index 008934f8..c298e49a 100644 --- a/examples/js/postprocessing/TexturePass.js +++ b/examples/js/postprocessing/TexturePass.js @@ -11,7 +11,7 @@ THREE.TexturePass = function( texture, opacity ) { this.uniforms[ "opacity" ].value = ( opacity !== undefined ) ? opacity : 1.0; this.uniforms[ "tDiffuse" ].texture = texture; - this.material = new THREE.MeshShaderMaterial( { + this.material = new THREE.ShaderMaterial( { uniforms: this.uniforms, vertexShader: shader.vertexShader, diff --git a/examples/webgl_custom_attributes.html b/examples/webgl_custom_attributes.html index e825a6dc..fcf7724f 100644 --- a/examples/webgl_custom_attributes.html +++ b/examples/webgl_custom_attributes.html @@ -122,7 +122,7 @@ uniforms.texture.texture.wrapS = uniforms.texture.texture.wrapT = THREE.RepeatWrapping; - var shaderMaterial = new THREE.MeshShaderMaterial( { + var shaderMaterial = new THREE.ShaderMaterial( { uniforms: uniforms, attributes: attributes, diff --git a/examples/webgl_custom_attributes_particles.html b/examples/webgl_custom_attributes_particles.html index 7e3f8997..db2d3707 100644 --- a/examples/webgl_custom_attributes_particles.html +++ b/examples/webgl_custom_attributes_particles.html @@ -117,7 +117,7 @@ }; - var shaderMaterial = new THREE.MeshShaderMaterial( { + var shaderMaterial = new THREE.ShaderMaterial( { uniforms: uniforms, attributes: attributes, diff --git a/examples/webgl_custom_attributes_particles2.html b/examples/webgl_custom_attributes_particles2.html index 788a17c8..b74dca5c 100644 --- a/examples/webgl_custom_attributes_particles2.html +++ b/examples/webgl_custom_attributes_particles2.html @@ -115,7 +115,7 @@ uniforms.texture.texture.wrapS = uniforms.texture.texture.wrapT = THREE.RepeatWrapping; - var shaderMaterial = new THREE.MeshShaderMaterial( { + var shaderMaterial = new THREE.ShaderMaterial( { uniforms: uniforms, attributes: attributes, diff --git a/examples/webgl_custom_attributes_particles3.html b/examples/webgl_custom_attributes_particles3.html index 3abd76b0..0d165d07 100644 --- a/examples/webgl_custom_attributes_particles3.html +++ b/examples/webgl_custom_attributes_particles3.html @@ -123,7 +123,7 @@ uniforms.texture.texture.wrapS = uniforms.texture.texture.wrapT = THREE.RepeatWrapping; - var shaderMaterial = new THREE.MeshShaderMaterial( { + var shaderMaterial = new THREE.ShaderMaterial( { uniforms: uniforms, attributes: attributes, diff --git a/examples/webgl_flycamera_earth.html b/examples/webgl_flycamera_earth.html index bed568ed..88417dd2 100644 --- a/examples/webgl_flycamera_earth.html +++ b/examples/webgl_flycamera_earth.html @@ -138,7 +138,7 @@ uniforms[ "uShininess" ].value = 30; var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true, fog: true }; - var materialNormalMap = new THREE.MeshShaderMaterial( parameters ); + var materialNormalMap = new THREE.ShaderMaterial( parameters ); // planet diff --git a/examples/webgl_hdr.html b/examples/webgl_hdr.html index 57a3763f..96f644cc 100644 --- a/examples/webgl_hdr.html +++ b/examples/webgl_hdr.html @@ -43,7 +43,9 @@ + + @@ -131,7 +139,7 @@ texture.minFilter = THREE.LinearFilter; texture.magFilter = THREE.NearestFilter; - materialHDR = new THREE.MeshShaderMaterial( { + materialHDR = new THREE.ShaderMaterial( { uniforms: { tDiffuse: { type: "t", value: 0, texture: texture }, @@ -208,18 +216,6 @@ } - function is_browser_compatible() { - - // WebGL support - - try { var test = new Float32Array(1); } catch(e) { return false; } - - // Web workers - - return !!window.Worker; - - } - diff --git a/examples/webgl_materials_cars.html b/examples/webgl_materials_cars.html index 7691842b..18c58562 100644 --- a/examples/webgl_materials_cars.html +++ b/examples/webgl_materials_cars.html @@ -198,10 +198,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, diff --git a/examples/webgl_materials_cars_anaglyph.html b/examples/webgl_materials_cars_anaglyph.html index aee0a944..08852253 100644 --- a/examples/webgl_materials_cars_anaglyph.html +++ b/examples/webgl_materials_cars_anaglyph.html @@ -197,7 +197,7 @@ var shader = THREE.ShaderUtils.lib["cube"]; shader.uniforms["tCube"].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, diff --git a/examples/webgl_materials_cubemap.html b/examples/webgl_materials_cubemap.html index d3eedf4b..22824c77 100644 --- a/examples/webgl_materials_cubemap.html +++ b/examples/webgl_materials_cubemap.html @@ -17,7 +17,7 @@ a:hover { color: #0080ff; } canvas { pointer-events:none; z-index:10; } - #log { position:absolute; top:50px; text-align:left; display:block; z-index:100; pointer-events:none; } + #d { text-align:center; margin:1em 0 -7.5em 0; z-index:1000; position:relative; display:block } .button { background:orange; color:#fff; padding:0.2em 0.5em; cursor:pointer } .inactive { background:#999; color:#eee } @@ -34,8 +34,6 @@

Texture by Humus -


-
 		
 
 		
@@ -90,11 +88,12 @@
 				scene.add( pointLight );
 
 				// light representation
+
 				sphere = new THREE.SphereGeometry( 100, 16, 8 );
-				lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color:0xffaa00 } ) );
+				lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color: 0xffaa00 } ) );
 				lightMesh.position = pointLight.position;
 				lightMesh.scale.x = lightMesh.scale.y = lightMesh.scale.z = 0.05;
-				scene.add(lightMesh);
+				scene.add( lightMesh );
 
 				var path = "textures/cube/SwedishRoyalCastle/";
 				var format = '.jpg';
@@ -114,10 +113,10 @@
 
 				// Skybox
 
-				var shader = THREE.ShaderUtils.lib["cube"];
-				shader.uniforms["tCube"].texture = reflectionCube;
+				var shader = THREE.ShaderUtils.lib[ "cube" ];
+				shader.uniforms[ "tCube" ].texture = reflectionCube;
 
-				var material = new THREE.MeshShaderMaterial( {
+				var material = new THREE.ShaderMaterial( {
 
 					fragmentShader: shader.fragmentShader,
 					vertexShader: shader.vertexShader,
@@ -213,12 +212,6 @@
 
 			}
 
-			function log(text) {
-
-				var e = document.getElementById("log");
-				e.innerHTML = text + "
" + e.innerHTML; - - } diff --git a/examples/webgl_materials_cubemap_balls_reflection.html b/examples/webgl_materials_cubemap_balls_reflection.html index c43061de..e4b2c31f 100644 --- a/examples/webgl_materials_cubemap_balls_reflection.html +++ b/examples/webgl_materials_cubemap_balls_reflection.html @@ -20,7 +20,7 @@ font-family:Monospace; font-size:13px; text-align:center; - z-index:1000; + z-index:1000; } a { @@ -105,10 +105,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, diff --git a/examples/webgl_materials_cubemap_balls_reflection_anaglyph.html b/examples/webgl_materials_cubemap_balls_reflection_anaglyph.html index b8736c75..7299a2a0 100644 --- a/examples/webgl_materials_cubemap_balls_reflection_anaglyph.html +++ b/examples/webgl_materials_cubemap_balls_reflection_anaglyph.html @@ -20,7 +20,7 @@ font-family:Monospace; font-size:13px; text-align:center; - z-index:1000; + z-index:1000; } a { @@ -101,10 +101,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, diff --git a/examples/webgl_materials_cubemap_balls_refraction.html b/examples/webgl_materials_cubemap_balls_refraction.html index d31e7b1a..bbd0a078 100644 --- a/examples/webgl_materials_cubemap_balls_refraction.html +++ b/examples/webgl_materials_cubemap_balls_refraction.html @@ -20,7 +20,7 @@ font-family:Monospace; font-size:13px; text-align:center; - z-index:1000; + z-index:1000; } a { @@ -104,10 +104,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, diff --git a/examples/webgl_materials_cubemap_balls_refraction_crosseyed.html b/examples/webgl_materials_cubemap_balls_refraction_crosseyed.html index 1b4ffe4d..4942475b 100644 --- a/examples/webgl_materials_cubemap_balls_refraction_crosseyed.html +++ b/examples/webgl_materials_cubemap_balls_refraction_crosseyed.html @@ -20,7 +20,7 @@ font-family:Monospace; font-size:13px; text-align:center; - z-index:1000; + z-index:1000; } a { @@ -103,10 +103,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, @@ -137,10 +137,10 @@ function onKeyDown ( event ) { switch( event.keyCode ) { - + /* O */ case 79: webglRenderer.separation -= 0.5; break; - + /* P */ case 80: webglRenderer.separation += 0.5; break; diff --git a/examples/webgl_materials_cubemap_escher.html b/examples/webgl_materials_cubemap_escher.html index 4410d283..112f57b3 100644 --- a/examples/webgl_materials_cubemap_escher.html +++ b/examples/webgl_materials_cubemap_escher.html @@ -15,8 +15,8 @@ } a { color: #ff0080; text-decoration: none; } a:hover { color: #0080ff; } - #log { position:absolute; top:50px; text-align:left; display:block; z-index:100; pointer-events:none; } - #d { text-align:center; margin:1em auto -9.0em; z-index:1000; position:relative; display:block; + + #d { text-align:center; margin:1em auto -9.0em; z-index:1000; position:relative; display:block; background:rgba(0,0,0,0.75); padding:0.25em; width:300px; border-radius:10px; -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,0.5) } #oldie { margin-top:15em !important } @@ -29,8 +29,6 @@

Texture by Mark VandeWettering -


-
 		
 
 		
@@ -75,8 +73,8 @@
 
 				var r = "textures/cube/Escher/";
 
-				var urls = [ r + "px.jpg", r + "nx.jpg", 
-							 r + "py.jpg", r + "ny.jpg", 
+				var urls = [ r + "px.jpg", r + "nx.jpg",
+							 r + "py.jpg", r + "ny.jpg",
 							 r + "pz.jpg", r + "nz.jpg" ];
 
 				var textureCube = THREE.ImageUtils.loadTextureCube( urls );
@@ -89,10 +87,10 @@
 
 				// Skybox
 
-				var shader = THREE.ShaderUtils.lib["cube"];
-				shader.uniforms["tCube"].texture = textureCube;
+				var shader = THREE.ShaderUtils.lib[ "cube" ];
+				shader.uniforms[ "tCube" ].texture = textureCube;
 
-				var material = new THREE.MeshShaderMaterial( {
+				var material = new THREE.ShaderMaterial( {
 
 					fragmentShader: shader.fragmentShader,
 					vertexShader: shader.vertexShader,
@@ -148,13 +146,6 @@
 
 			}
 
-			function log(text) {
-
-				var e = document.getElementById("log");
-				e.innerHTML = text + "
" + e.innerHTML; - - } - diff --git a/examples/webgl_materials_cubemap_refraction.html b/examples/webgl_materials_cubemap_refraction.html index 40fb599e..e113546a 100644 --- a/examples/webgl_materials_cubemap_refraction.html +++ b/examples/webgl_materials_cubemap_refraction.html @@ -17,8 +17,8 @@ a:hover { color: #0080ff; } canvas { pointer-events:none; z-index:10; } - #log { position:absolute; top:50px; text-align:left; display:block; z-index:100; pointer-events:none; } - #d { text-align:center; margin:1em auto -9.5em; z-index:200; position:relative; display:block; + + #d { text-align:center; margin:1em auto -9.5em; z-index:200; position:relative; display:block; background:rgba(0,0,0,0.5); padding:0.5em; width:400px; border-radius:15px; -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,0.5) } #oldie { margin-top:15em !important } @@ -33,8 +33,6 @@

Texture by Humus -


-
 		
 
 		
@@ -99,8 +97,8 @@
 
 				var r = "textures/cube/Park3Med/";
 
-				var urls = [ r + "px.jpg", r + "nx.jpg", 
-							 r + "py.jpg", r + "ny.jpg", 
+				var urls = [ r + "px.jpg", r + "nx.jpg",
+							 r + "py.jpg", r + "ny.jpg",
 							 r + "pz.jpg", r + "nz.jpg" ];
 
 				var textureCube = THREE.ImageUtils.loadTextureCube( urls, new THREE.CubeRefractionMapping() );
@@ -111,10 +109,10 @@
 
 				// Skybox
 
-				var shader = THREE.ShaderUtils.lib["cube"];
-				shader.uniforms["tCube"].texture = textureCube;
+				var shader = THREE.ShaderUtils.lib[ "cube" ];
+				shader.uniforms[ "tCube" ].texture = textureCube;
 
-				var material = new THREE.MeshShaderMaterial( {
+				var material = new THREE.ShaderMaterial( {
 
 					fragmentShader: shader.fragmentShader,
 					vertexShader: shader.vertexShader,
@@ -211,12 +209,6 @@
 
 			}
 
-			function log(text) {
-
-				var e = document.getElementById("log");
-				e.innerHTML = text + "
" + e.innerHTML; - - } diff --git a/examples/webgl_materials_normalmap.html b/examples/webgl_materials_normalmap.html index 67b4014a..f3b88683 100644 --- a/examples/webgl_materials_normalmap.html +++ b/examples/webgl_materials_normalmap.html @@ -140,7 +140,7 @@ uniforms[ "uShininess" ].value = shininess; var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true }; - var material1 = new THREE.MeshShaderMaterial( parameters ); + var material1 = new THREE.ShaderMaterial( parameters ); var material2 = new THREE.MeshPhongMaterial( { color: diffuse, specular: specular, ambient: ambient, shininess: shininess } ); diff --git a/examples/webgl_materials_normalmap2.html b/examples/webgl_materials_normalmap2.html index 104bca69..cb62443e 100644 --- a/examples/webgl_materials_normalmap2.html +++ b/examples/webgl_materials_normalmap2.html @@ -35,13 +35,10 @@ #vt, #vt a { color:orange; } .code { } - #log { position:absolute; top:50px; text-align:left; display:block; z-index:100 } -

-
 		
three.js - webgl normalmap demo. Lee Perry-Smith head. @@ -115,7 +112,7 @@ var shader = THREE.ShaderUtils.lib[ "normal" ]; var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); - + uniforms[ "tNormal" ].texture = THREE.ImageUtils.loadTexture( "obj/leeperrysmith/Infinite-Level_02_Tangent_SmoothUV.jpg" ); uniforms[ "uNormalScale" ].value = - 0.75; @@ -132,7 +129,7 @@ uniforms[ "uShininess" ].value = shininess; var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true }; - var material = new THREE.MeshShaderMaterial( parameters ); + var material = new THREE.ShaderMaterial( parameters ); loader = new THREE.JSONLoader( true ); document.body.appendChild( loader.statusDomElement ); @@ -203,13 +200,6 @@ } - function log( text ) { - - var e = document.getElementById("log"); - e.innerHTML = text + "
" + e.innerHTML; - - } - diff --git a/examples/webgl_materials_shaders_fresnel.html b/examples/webgl_materials_shaders_fresnel.html index 9c6ac114..3f6f34bf 100644 --- a/examples/webgl_materials_shaders_fresnel.html +++ b/examples/webgl_materials_shaders_fresnel.html @@ -20,20 +20,16 @@ font-family:Monospace; font-size:13px; text-align:center; - z-index:1000; + z-index:1000; } - a { - color: #ffffff; - } - #log { position:absolute; top:50px; text-align:left; display:block; z-index:100 } + a { color: #ffffff; } #oldie a { color:#0b0 } -

 
 		
three.js - webgl cube Fresnel shader demo. texture by Humus
@@ -98,7 +94,7 @@ uniforms["tCube"].texture = textureCube; var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms }; - var material = new THREE.MeshShaderMaterial( parameters ); + var material = new THREE.ShaderMaterial( parameters ); for ( var i = 0; i < 500; i ++ ) { @@ -117,10 +113,10 @@ // Skybox - var shader = THREE.ShaderUtils.lib["cube"]; - shader.uniforms["tCube"].texture = textureCube; + var shader = THREE.ShaderUtils.lib[ "cube" ]; + shader.uniforms[ "tCube" ].texture = textureCube; - var material = new THREE.MeshShaderMaterial( { + var material = new THREE.ShaderMaterial( { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, @@ -183,13 +179,6 @@ } - function log( text ) { - - var e = document.getElementById("log"); - e.innerHTML = text + "
" + e.innerHTML; - - } - diff --git a/examples/webgl_materials_skin.html b/examples/webgl_materials_skin.html index ba36e3a9..c0f661d1 100644 --- a/examples/webgl_materials_skin.html +++ b/examples/webgl_materials_skin.html @@ -139,8 +139,8 @@ var parametersUV = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShaderUV, uniforms: uniformsUV, lights: true }; - material = new THREE.MeshShaderMaterial( parameters ); - var materialUV = new THREE.MeshShaderMaterial( parametersUV ); + material = new THREE.ShaderMaterial( parameters ); + var materialUV = new THREE.ShaderMaterial( parametersUV ); // LOADER diff --git a/examples/webgl_particles_shapes.html b/examples/webgl_particles_shapes.html index 6263c336..d7757288 100644 --- a/examples/webgl_particles_shapes.html +++ b/examples/webgl_particles_shapes.html @@ -321,7 +321,7 @@ } - var shaderMaterial = new THREE.MeshShaderMaterial( { + var shaderMaterial = new THREE.ShaderMaterial( { uniforms: uniforms, attributes: attributes, diff --git a/examples/webgl_postprocessing.html b/examples/webgl_postprocessing.html index 61b88c6b..c9b8acc6 100644 --- a/examples/webgl_postprocessing.html +++ b/examples/webgl_postprocessing.html @@ -139,7 +139,7 @@ sceneBG = new THREE.Scene(); - materialColor = new THREE.MeshShaderMaterial( { + materialColor = new THREE.ShaderMaterial( { uniforms: { time: { type: "f", value: 0.0 } }, vertexShader: getText( 'vs-generic' ), @@ -354,7 +354,7 @@ uniforms[ "uShininess" ].value = shininess; var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true }; - var mat2 = new THREE.MeshShaderMaterial( parameters ); + var mat2 = new THREE.ShaderMaterial( parameters ); mesh = new THREE.Mesh( geometry, mat2 ); mesh.position.set( 0, -50, 0 ); diff --git a/examples/webgl_postprocessing_dof.html b/examples/webgl_postprocessing_dof.html index ad1bf71d..0daa1e6e 100644 --- a/examples/webgl_postprocessing_dof.html +++ b/examples/webgl_postprocessing_dof.html @@ -250,7 +250,7 @@ postprocessing.bokeh_uniforms[ "focus" ].value = 1.1; postprocessing.bokeh_uniforms[ "aspect" ].value = window.innerWidth / height; - postprocessing.materialBokeh = new THREE.MeshShaderMaterial( { + postprocessing.materialBokeh = new THREE.ShaderMaterial( { uniforms: postprocessing.bokeh_uniforms, vertexShader: bokeh_shader.vertexShader, diff --git a/examples/webgl_rtt.html b/examples/webgl_rtt.html index b6beb2ff..980def2e 100644 --- a/examples/webgl_rtt.html +++ b/examples/webgl_rtt.html @@ -130,7 +130,7 @@ rtTexture = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter, format: THREE.RGBFormat } ); - material = new THREE.MeshShaderMaterial( { + material = new THREE.ShaderMaterial( { uniforms: { time: { type: "f", value: 0.0 } }, vertexShader: document.getElementById( 'vertexShader' ).textContent, @@ -138,7 +138,7 @@ } ); - var materialScreen = new THREE.MeshShaderMaterial( { + var materialScreen = new THREE.ShaderMaterial( { uniforms: { tDiffuse: { type: "t", value: 0, texture: rtTexture } }, vertexShader: document.getElementById( 'vertexShader' ).textContent, diff --git a/examples/webgl_sandbox.html b/examples/webgl_sandbox.html index fdd7f93d..5c471c0d 100644 --- a/examples/webgl_sandbox.html +++ b/examples/webgl_sandbox.html @@ -45,6 +45,7 @@ + @@ -54,6 +55,7 @@ + @@ -67,7 +69,7 @@ - + @@ -85,7 +87,6 @@ - @@ -104,6 +105,11 @@ + + + + + @@ -112,11 +118,6 @@ - - - - - @@ -128,8 +129,9 @@ - + + @@ -190,7 +192,7 @@ new THREE.MeshBasicMaterial( { map: texture, fog: false } ), new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg' ) } ), new THREE.MeshBasicMaterial( { map: texture2, envMap: THREE.ImageUtils.loadTexture( 'textures/envmap.png', new THREE.SphericalReflectionMapping() ) } ), - new THREE.MeshShaderMaterial( { uniforms: uniforms, vertexShader: vertexShader, fragmentShader: fragmentShader } ) + new THREE.ShaderMaterial( { uniforms: uniforms, vertexShader: vertexShader, fragmentShader: fragmentShader } ) /* new THREE.MeshLambertMaterial( { color: 0xdddddd, shading: THREE.FlatShading } ), @@ -203,7 +205,7 @@ new THREE.MeshBasicMaterial( { envMap: texture2, fog: false } ), new THREE.MeshLambertMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg' ) } ), new THREE.MeshLambertMaterial( { map: texture2, envMap: ImageUtils.loadTexture( 'textures/envmap.png', new THREE.SphericalReflectionMapping() ) } ), - new THREE.MeshShaderMaterial( { uniforms: uniforms, vertexShader: vertexShader, fragmentShader: fragmentShader } ) + new THREE.ShaderMaterial( { uniforms: uniforms, vertexShader: vertexShader, fragmentShader: fragmentShader } ) */ ]; diff --git a/examples/webgl_shader.html b/examples/webgl_shader.html index 8235c91a..11f37c19 100644 --- a/examples/webgl_shader.html +++ b/examples/webgl_shader.html @@ -32,8 +32,8 @@ -
-
three.js - shader demo. featuring Monjori by Mic
+
+
three.js - shader demo. featuring Monjori by Mic
@@ -117,7 +117,7 @@ resolution: { type: "v2", value: new THREE.Vector2() } }; - material = new THREE.MeshShaderMaterial( { + material = new THREE.ShaderMaterial( { uniforms: uniforms, vertexShader: document.getElementById( 'vertexShader' ).textContent, diff --git a/examples/webgl_shader2.html b/examples/webgl_shader2.html index fdc3b3f0..168156af 100644 --- a/examples/webgl_shader2.html +++ b/examples/webgl_shader2.html @@ -218,7 +218,7 @@ for( var i = 0; i < params.length; i++ ) { - material = new THREE.MeshShaderMaterial( { + material = new THREE.ShaderMaterial( { uniforms: params[ i ][ 1 ], vertexShader: document.getElementById( 'vertexShader' ).textContent, diff --git a/examples/webgl_shader_lava.html b/examples/webgl_shader_lava.html index 879e6496..b633952e 100644 --- a/examples/webgl_shader_lava.html +++ b/examples/webgl_shader_lava.html @@ -163,7 +163,7 @@ var size = 0.65; - material = new THREE.MeshShaderMaterial( { + material = new THREE.ShaderMaterial( { uniforms: uniforms, vertexShader: document.getElementById( 'vertexShader' ).textContent, diff --git a/examples/webgl_shadowmap.html b/examples/webgl_shadowmap.html index 9fdad2c6..8e070614 100644 --- a/examples/webgl_shadowmap.html +++ b/examples/webgl_shadowmap.html @@ -143,7 +143,7 @@ var shader = THREE.ShaderExtras[ "screen" ]; var uniforms = new THREE.UniformsUtils.clone( shader.uniforms ); - hudMaterial = new THREE.MeshShaderMaterial( { vertexShader: shader.vertexShader, fragmentShader: shader.fragmentShader, uniforms: uniforms } ); + hudMaterial = new THREE.ShaderMaterial( { vertexShader: shader.vertexShader, fragmentShader: shader.fragmentShader, uniforms: uniforms } ); var hudGeo = new THREE.PlaneGeometry( SHADOW_MAP_WIDTH / 2, SHADOW_MAP_HEIGHT / 2 ); var hudMesh = new THREE.Mesh( hudGeo, hudMaterial ); diff --git a/examples/webgl_trackballcamera_earth.html b/examples/webgl_trackballcamera_earth.html index 4005d6af..6d72d28b 100644 --- a/examples/webgl_trackballcamera_earth.html +++ b/examples/webgl_trackballcamera_earth.html @@ -153,7 +153,7 @@ uniforms[ "uShininess" ].value = 30; - var materialNormalMap = new THREE.MeshShaderMaterial({ + var materialNormalMap = new THREE.ShaderMaterial({ fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, diff --git a/src/extras/loaders/Loader.js b/src/extras/loaders/Loader.js index a0211b0b..edc09bf6 100644 --- a/src/extras/loaders/Loader.js +++ b/src/extras/loaders/Loader.js @@ -83,7 +83,7 @@ THREE.Loader.prototype = { m = scope.materials[ i ][ 0 ]; - if ( m instanceof THREE.MeshShaderMaterial ) return true; + if ( m instanceof THREE.ShaderMaterial ) return true; } @@ -356,7 +356,7 @@ THREE.Loader.prototype = { var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true, fog: true }; - material = new THREE.MeshShaderMaterial( parameters ); + material = new THREE.ShaderMaterial( parameters ); } else { diff --git a/src/extras/loaders/SceneLoader.js b/src/extras/loaders/SceneLoader.js index 32195f24..e93a180c 100644 --- a/src/extras/loaders/SceneLoader.js +++ b/src/extras/loaders/SceneLoader.js @@ -139,7 +139,7 @@ THREE.SceneLoader.prototype = { materials[ i ] = result.materials[ o.materials[i] ]; - hasNormals = materials[ i ] instanceof THREE.MeshShaderMaterial; + hasNormals = materials[ i ] instanceof THREE.ShaderMaterial; } @@ -741,7 +741,7 @@ THREE.SceneLoader.prototype = { var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true, fog: true }; - material = new THREE.MeshShaderMaterial( parameters ); + material = new THREE.ShaderMaterial( parameters ); } else { @@ -764,7 +764,7 @@ THREE.SceneLoader.prototype = { }; }, - + constructor : THREE.SceneLoader }; diff --git a/src/extras/renderers/AnaglyphWebGLRenderer.js b/src/extras/renderers/AnaglyphWebGLRenderer.js index 77b6bb62..6508b7f3 100644 --- a/src/extras/renderers/AnaglyphWebGLRenderer.js +++ b/src/extras/renderers/AnaglyphWebGLRenderer.js @@ -5,7 +5,7 @@ if ( THREE.WebGLRenderer ) { - THREE.AnaglyphWebGLRenderer = function ( parameters ) { + THREE.AnaglyphWebGLRenderer = function ( parameters ) { THREE.WebGLRenderer.call( this, parameters ); @@ -15,7 +15,7 @@ if ( THREE.WebGLRenderer ) { eyeLeft = new THREE.Matrix4(), focalLength = 125, aspect, near, fov; - + _cameraL.useTarget = _cameraR.useTarget = false; _cameraL.matrixAutoUpdate = _cameraR.matrixAutoUpdate = false; @@ -25,7 +25,7 @@ if ( THREE.WebGLRenderer ) { var _camera = new THREE.Camera( 53, 1, 1, 10000 ); _camera.position.z = 2; - _material = new THREE.MeshShaderMaterial( { + _material = new THREE.ShaderMaterial( { uniforms: { @@ -85,23 +85,23 @@ if ( THREE.WebGLRenderer ) { }; /* - * Renderer now uses an asymmetric perspective projection (http://paulbourke.net/miscellaneous/stereographics/stereorender/). + * Renderer now uses an asymmetric perspective projection (http://paulbourke.net/miscellaneous/stereographics/stereorender/). * Each camera is offset by the eye seperation and its projection matrix is also skewed asymetrically back to converge on the same - * projection plane. Added a focal length parameter to, this is where the parallax is equal to 0. + * projection plane. Added a focal length parameter to, this is where the parallax is equal to 0. */ - this.render = function ( scene, camera, renderTarget, forceClear ) { - - + this.render = function ( scene, camera, renderTarget, forceClear ) { + + camera.update( null, true ); - + var hasCameraChanged = aspect !== camera.aspect || near !== camera.near || fov !== camera.fov; - + if( hasCameraChanged ) { - + aspect = camera.aspect; near = camera.near; - fov = camera.fov; - + fov = camera.fov; + var projectionMatrix = camera.projectionMatrix.clone(), eyeSep = focalLength / 30 * 0.5, eyeSepOnProjection = eyeSep * near / focalLength, @@ -111,23 +111,23 @@ if ( THREE.WebGLRenderer ) { //translate xOffset eyeRight.n14 = eyeSep; eyeLeft.n14 = -eyeSep; - + //For left eye xmin = -ymax * aspect + eyeSepOnProjection; xmax = ymax * aspect + eyeSepOnProjection; projectionMatrix.n11 = 2 * near / ( xmax - xmin ); projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin ); _cameraL.projectionMatrix = projectionMatrix.clone(); - - //for right eye + + //for right eye xmin = -ymax * aspect - eyeSepOnProjection; xmax = ymax * aspect - eyeSepOnProjection; projectionMatrix.n11 = 2 * near / ( xmax - xmin ); projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin ); _cameraR.projectionMatrix = projectionMatrix.clone(); - - } - + + } + _cameraL.matrix = camera.matrixWorld.clone().multiplySelf( eyeLeft ); _cameraL.update(null, true); _cameraL.position.copy( camera.position ); @@ -141,11 +141,11 @@ if ( THREE.WebGLRenderer ) { _cameraR.near = near; _cameraR.far = camera.far; _render.call( _this, scene, _cameraR, _renderTargetR, true ); - + _render.call( _this, _scene, _camera ); }; }; - + } diff --git a/src/materials/MeshShaderMaterial.js b/src/materials/ShaderMaterial.js similarity index 90% rename from src/materials/MeshShaderMaterial.js rename to src/materials/ShaderMaterial.js index a4f396b6..47eb9edb 100644 --- a/src/materials/MeshShaderMaterial.js +++ b/src/materials/ShaderMaterial.js @@ -4,16 +4,16 @@ * parameters = { * fragmentShader: , * vertexShader: , - + * uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } }, - + * shading: THREE.SmoothShading, * blending: THREE.NormalBlending, * depthTest: , - + * wireframe: , * wireframeLinewidth: , - + * lights: , * vertexColors: , * skinning: , @@ -21,7 +21,7 @@ * } */ -THREE.MeshShaderMaterial = function ( parameters ) { +THREE.ShaderMaterial = function ( parameters ) { THREE.Material.call( this, parameters ); @@ -45,5 +45,5 @@ THREE.MeshShaderMaterial = function ( parameters ) { }; -THREE.MeshShaderMaterial.prototype = new THREE.Material(); -THREE.MeshShaderMaterial.prototype.constructor = THREE.MeshShaderMaterial; +THREE.ShaderMaterial.prototype = new THREE.Material(); +THREE.ShaderMaterial.prototype.constructor = THREE.ShaderMaterial; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 13c8a8ad..d6c5c4a9 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -105,9 +105,9 @@ THREE.WebGLRenderer = function ( parameters ) { var depthShader = THREE.ShaderLib[ "depthRGBA" ]; var depthUniforms = THREE.UniformsUtils.clone( depthShader.uniforms ); - var _depthMaterial = new THREE.MeshShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms } ); + var _depthMaterial = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms } ); - var _depthMaterialMorph = new THREE.MeshShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true } ); + var _depthMaterialMorph = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true } ); _depthMaterial._shadowPass = true; _depthMaterialMorph._shadowPass = true; @@ -2762,7 +2762,7 @@ THREE.WebGLRenderer = function ( parameters ) { // load material specific uniforms // (shader material also gets them for the sake of genericity) - if ( material instanceof THREE.MeshShaderMaterial || + if ( material instanceof THREE.ShaderMaterial || material instanceof THREE.MeshPhongMaterial || material.envMap ) { @@ -2774,7 +2774,7 @@ THREE.WebGLRenderer = function ( parameters ) { } - if ( material instanceof THREE.MeshShaderMaterial || + if ( material instanceof THREE.ShaderMaterial || material.envMap || material.skinning || object.receiveShadow ) { @@ -2789,7 +2789,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( material instanceof THREE.MeshPhongMaterial || material instanceof THREE.MeshLambertMaterial || - material instanceof THREE.MeshShaderMaterial || + material instanceof THREE.ShaderMaterial || material.skinning ) { if( p_uniforms.viewMatrix !== null ) { @@ -5537,7 +5537,7 @@ THREE.WebGLRenderer = function ( parameters ) { m = materials[ i ]; - if ( m.map || m.lightMap || m instanceof THREE.MeshShaderMaterial ) { + if ( m.map || m.lightMap || m instanceof THREE.ShaderMaterial ) { return true; diff --git a/utils/build.py b/utils/build.py index aee08cee..5ec07c36 100644 --- a/utils/build.py +++ b/utils/build.py @@ -46,7 +46,7 @@ COMMON_FILES = [ 'materials/MeshDepthMaterial.js', 'materials/MeshNormalMaterial.js', 'materials/MeshFaceMaterial.js', -'materials/MeshShaderMaterial.js', +'materials/ShaderMaterial.js', 'materials/ParticleBasicMaterial.js', 'materials/ParticleCanvasMaterial.js', 'materials/ParticleDOMMaterial.js', @@ -280,7 +280,7 @@ WEBGL_FILES = [ 'materials/MeshDepthMaterial.js', 'materials/MeshNormalMaterial.js', 'materials/MeshFaceMaterial.js', -'materials/MeshShaderMaterial.js', +'materials/ShaderMaterial.js', 'materials/ParticleBasicMaterial.js', 'textures/Texture.js', 'textures/DataTexture.js',