From 648ee61ae84216d0236e0dbc211addc13b2cfa3a Mon Sep 17 00:00:00 2001 From: Kris Kowal Date: Fri, 6 Jul 2012 11:52:06 -0700 Subject: Expand tabs --- js/lib/rdge/materials/bump-metal-material.js | 154 ++--- js/lib/rdge/materials/cloud-material.js | 704 +++++++++++----------- js/lib/rdge/materials/deform-material.js | 88 +-- js/lib/rdge/materials/flag-material.js | 160 ++--- js/lib/rdge/materials/flat-material.js | 60 +- js/lib/rdge/materials/fly-material.js | 136 ++--- js/lib/rdge/materials/julia-material.js | 128 ++-- js/lib/rdge/materials/keleidoscope-material.js | 136 ++--- js/lib/rdge/materials/linear-gradient-material.js | 214 +++---- js/lib/rdge/materials/mandel-material.js | 130 ++-- js/lib/rdge/materials/material-parser.js | 4 +- js/lib/rdge/materials/material.js | 574 +++++++++--------- js/lib/rdge/materials/plasma-material.js | 160 ++--- js/lib/rdge/materials/pulse-material.js | 308 +++++----- js/lib/rdge/materials/radial-blur-material.js | 84 +-- js/lib/rdge/materials/radial-gradient-material.js | 170 +++--- js/lib/rdge/materials/relief-tunnel-material.js | 84 +-- js/lib/rdge/materials/square-tunnel-material.js | 84 +-- js/lib/rdge/materials/star-material.js | 100 +-- js/lib/rdge/materials/taper-material.js | 56 +- js/lib/rdge/materials/tunnel-material.js | 86 +-- js/lib/rdge/materials/twist-material.js | 84 +-- js/lib/rdge/materials/twist-vert-material.js | 290 ++++----- js/lib/rdge/materials/uber-material.js | 262 ++++---- js/lib/rdge/materials/water-material.js | 272 ++++----- js/lib/rdge/materials/z-invert-material.js | 102 ++-- js/lib/rdge/texture.js | 600 +++++++++--------- 27 files changed, 2615 insertions(+), 2615 deletions(-) (limited to 'js/lib/rdge') diff --git a/js/lib/rdge/materials/bump-metal-material.js b/js/lib/rdge/materials/bump-metal-material.js index 3db3df1d..bcc092f9 100755 --- a/js/lib/rdge/materials/bump-metal-material.js +++ b/js/lib/rdge/materials/bump-metal-material.js @@ -40,62 +40,62 @@ var BumpMetalMaterial = function BumpMetalMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "Bump Metal"; - this._shaderName = "bumpMetal"; + this._name = "Bump Metal"; + this._shaderName = "bumpMetal"; this._defaultDiffuseTexture = "assets/images/metal.png"; this._defaultSpecularTexture = "assets/images/silver.png"; - this._defaultNormalTexture = "assets/images/normalMap.png"; + this._defaultNormalTexture = "assets/images/normalMap.png"; // array textures indexed by shader uniform name this._glTextures = []; - this._speed = 1.0; + this._speed = 1.0; /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - this.isAnimated = function() { return true; }; - this.getShaderDef = function() { return bumpMetalMaterialDef; }; + this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return bumpMetalMaterialDef; }; /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this._propNames = ["u_light0Diff", "u_colMap", "u_normalMap", "u_glowMap" ]; - this._propLabels = ["Diffuse Color", "Diffuse Map", "Bump Map", "Specular Map" ]; - this._propTypes = ["color", "file", "file", "file" ]; - this._propValues = []; + this._propNames = ["u_light0Diff", "u_colMap", "u_normalMap", "u_glowMap" ]; + this._propLabels = ["Diffuse Color", "Diffuse Map", "Bump Map", "Specular Map" ]; + this._propTypes = ["color", "file", "file", "file" ]; + this._propValues = []; - this._propValues[ this._propNames[0] ] = [0.3, 0.3, 0.3, 1.0]; - this._propValues[ this._propNames[1] ] = this._defaultDiffuseTexture.slice(0); - this._propValues[ this._propNames[2] ] = this._defaultNormalTexture.slice(0); - this._propValues[ this._propNames[3] ] = this._defaultSpecularTexture.slice(0); + this._propValues[ this._propNames[0] ] = [0.3, 0.3, 0.3, 1.0]; + this._propValues[ this._propNames[1] ] = this._defaultDiffuseTexture.slice(0); + this._propValues[ this._propNames[2] ] = this._defaultNormalTexture.slice(0); + this._propValues[ this._propNames[3] ] = this._defaultSpecularTexture.slice(0); /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// - this.init = function( world ) - { - // save the world - if (world) { - this.setWorld( world ); + this.init = function( world ) + { + // save the world + if (world) { + this.setWorld( world ); } - // set up the shader - this._shader = new RDGE.jshader(); - this._shader.def = bumpMetalMaterialDef; - this._shader.init(); + // set up the shader + this._shader = new RDGE.jshader(); + this._shader.def = bumpMetalMaterialDef; + this._shader.init(); - // set up the material node - this._materialNode = RDGE.createMaterialNode( this.getShaderName() + "_" + world.generateUniqueNodeID() ); - this._materialNode.setShader(this._shader); + // set up the material node + this._materialNode = RDGE.createMaterialNode( this.getShaderName() + "_" + world.generateUniqueNodeID() ); + this._materialNode.setShader(this._shader); - this.setShaderValues(); - this.update(0); - }; + this.setShaderValues(); + this.update(0); + }; }; /////////////////////////////////////////////////////////////////////////////////////// @@ -104,28 +104,28 @@ var BumpMetalMaterial = function BumpMetalMaterial() { // shader spec (can also be loaded from a .JSON file, or constructed at runtime) var bumpMetalMaterialDef = bumpMetalShaderDef = { - 'shaders': - { - // this shader is being referenced by file - 'defaultVShader':"assets/shaders/test_vshader.glsl", - 'defaultFShader':"assets/shaders/test_fshader.glsl", + 'shaders': + { + // this shader is being referenced by file + 'defaultVShader':"assets/shaders/test_vshader.glsl", + 'defaultFShader':"assets/shaders/test_fshader.glsl", - // this shader is inline - 'dirLightVShader': "\ - uniform mat4 u_mvMatrix;\ - uniform mat4 u_normalMatrix;\ - uniform mat4 u_projMatrix;\ - uniform mat4 u_worldMatrix;\ - attribute vec3 a_pos;\ - attribute vec3 a_nrm;\ - varying vec3 vNormal;\ - varying vec3 vPos;\ - void main() {\ - vNormal.xyz = (u_normalMatrix*vec4(a_nrm, 0.0)).xyz;\ - gl_Position = u_projMatrix * u_mvMatrix * vec4(a_pos,1.0);\ - vPos = (u_worldMatrix * vec4(a_pos,1.0)).xyz;\ - }", - 'dirLightFShader': "\ + // this shader is inline + 'dirLightVShader': "\ + uniform mat4 u_mvMatrix;\ + uniform mat4 u_normalMatrix;\ + uniform mat4 u_projMatrix;\ + uniform mat4 u_worldMatrix;\ + attribute vec3 a_pos;\ + attribute vec3 a_nrm;\ + varying vec3 vNormal;\ + varying vec3 vPos;\ + void main() {\ + vNormal.xyz = (u_normalMatrix*vec4(a_nrm, 0.0)).xyz;\ + gl_Position = u_projMatrix * u_mvMatrix * vec4(a_pos,1.0);\ + vPos = (u_worldMatrix * vec4(a_pos,1.0)).xyz;\ + }", + 'dirLightFShader': "\ precision highp float;\ uniform vec4 u_light1Diff;\ uniform vec3 u_light1Pos;\ @@ -142,29 +142,29 @@ var bumpMetalMaterialDef = bumpMetalShaderDef = float alpha2 = max(0.0, 1.0 - ( (light2.x*light2.x)/range + (light2.y*light2.y)/range + (light2.z*light2.z)/range));\ gl_FragColor = vec4((u_light2Diff*alpha2 + u_light1Diff*alpha1).rgb, 1.0);\ }" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_light0Diff' : { 'type' : 'vec4' }, - 'u_colMap': { 'type' : 'tex2d' }, - 'u_normalMap': { 'type' : 'tex2d' }, - 'u_glowMap': { 'type' : 'tex2d' } - }, + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_light0Diff' : { 'type' : 'vec4' }, + 'u_colMap': { 'type' : 'tex2d' }, + 'u_normalMap': { 'type' : 'tex2d' }, + 'u_glowMap': { 'type' : 'tex2d' } + }, // render states 'states' : @@ -172,7 +172,7 @@ var bumpMetalMaterialDef = bumpMetalShaderDef = 'depthEnable' : true, 'offset':[1.0, 0.1] } - }, + }, { // light pass 'vshader' : 'dirLightVShader', 'fshader' : 'dirLightFShader', @@ -195,9 +195,9 @@ var bumpMetalMaterialDef = bumpMetalShaderDef = "srcBlend" : "SRC_ALPHA", "dstBlend" : "DST_ALPHA" } - } // light pass - ] - } // techniques + } // light pass + ] + } // techniques }; BumpMetalMaterial.prototype = new Material(); diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 4e2a1a7c..873059bc 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -28,12 +28,12 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialParser; -var Material = require("js/lib/rdge/materials/material").Material; -var GLWorld = require("js/lib/drawing/world").World; -var Texture = require("js/lib/rdge/texture").Texture; -var ElementMediator = require("js/mediators/element-mediator").ElementMediator; -var TagTool = require("js/tools/TagTool").TagTool; +var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialParser; +var Material = require("js/lib/rdge/materials/material").Material; +var GLWorld = require("js/lib/drawing/world").World; +var Texture = require("js/lib/rdge/texture").Texture; +var ElementMediator = require("js/mediators/element-mediator").ElementMediator; +var TagTool = require("js/tools/TagTool").TagTool; /////////////////////////////////////////////////////////////////////// // Class GLMaterial @@ -47,33 +47,33 @@ var CloudMaterial = function CloudMaterial() this._name = "Cloud"; this._shaderName = "cloud"; - this._texMap = 'assets/images/cloud10.png'; + this._texMap = 'assets/images/cloud10.png'; this._texMap = 'assets/images/cloud2.jpg'; - //this._texMap = 'assets/images/CL13.png'; - //this._texMap = 'assets/images/material_paint.png'; - //this._texMap = 'assets/images/us_flag.png'; - //this._texMap = 'assets/images/cubelight.png'; + //this._texMap = 'assets/images/CL13.png'; + //this._texMap = 'assets/images/material_paint.png'; + //this._texMap = 'assets/images/us_flag.png'; + //this._texMap = 'assets/images/cubelight.png'; this._diffuseColor = [0.5, 0.5, 0.5, 0.5]; - // base size of cloud polygons. Random adjustments made to each quad - this._cloudSize = 40; + // base size of cloud polygons. Random adjustments made to each quad + this._cloudSize = 40; this._time = 0.0; this._dTime = 0.01; - // parameter initial values - this._time = 0.0; - this._surfaceAlpha = 0.5; -// this._zmin = 2.0; -// this._zmax = 5.0; - this._zmin = 5.0; - this._zmax = 10.0; + // parameter initial values + this._time = 0.0; + this._surfaceAlpha = 0.5; +// this._zmin = 2.0; +// this._zmax = 5.0; + this._zmin = 5.0; + this._zmax = 10.0; - // the adjusted zMin and zMax values are - // what get sent to the shader. They are initialized - // in buildGeometry - this._adjustedZMin = this._zmin; - this._adjustedZMax = this._zmax; + // the adjusted zMin and zMax values are + // what get sent to the shader. They are initialized + // in buildGeometry + this._adjustedZMin = this._zmin; + this._adjustedZMax = this._zmax; @@ -132,68 +132,68 @@ var CloudMaterial = function CloudMaterial() /**************************************************************/ this.init = function (world) { - var GLWorld = require("js/lib/drawing/world").World, - NJUtils = require("js/lib/NJUtils").NJUtils; - - // save the world - if (world) this.setWorld( world ); - var dstWorld = world; - - // create a canvas to render into - var dstCanvas = this.getWorld().getCanvas(); - var doc = this.getWorld().getCanvas().ownerDocument; - var canvasID = "__canvas__"; - //this._srcCanvas = doc.createElement(canvasID); - this._srcCanvas = NJUtils.makeNJElement("canvas", canvasID, "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); - srcCanvas = this._srcCanvas; - srcCanvas.width = dstCanvas.width; - srcCanvas.height = dstCanvas.height; - - ////////////////////////////////////////////////////////////////////////////////// - // IS THIS NECESSARY?? + var GLWorld = require("js/lib/drawing/world").World, + NJUtils = require("js/lib/NJUtils").NJUtils; + + // save the world + if (world) this.setWorld( world ); + var dstWorld = world; + + // create a canvas to render into + var dstCanvas = this.getWorld().getCanvas(); + var doc = this.getWorld().getCanvas().ownerDocument; + var canvasID = "__canvas__"; + //this._srcCanvas = doc.createElement(canvasID); + this._srcCanvas = NJUtils.makeNJElement("canvas", canvasID, "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); + srcCanvas = this._srcCanvas; + srcCanvas.width = dstCanvas.width; + srcCanvas.height = dstCanvas.height; + + ////////////////////////////////////////////////////////////////////////////////// + // IS THIS NECESSARY?? // var elementModel = TagTool.makeElement(~~srcCanvas.width, ~~srcCanvas.height, // Matrix.I(4), [0,0,0], srcCanvas); // ElementMediator.addElement(srcCanvas, elementModel.data, true); - ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// - // build the source. - // the source being the world/canvas/geometry of the clouds. - // the source is used to create a texture map that is then used by - // the destimation. - this.buildSource(); + // build the source. + // the source being the world/canvas/geometry of the clouds. + // the source is used to create a texture map that is then used by + // the destimation. + this.buildSource(); - // set up the shader - this._shader = new RDGE.jshader(); - this._shader.def = cloudMapMaterialDef; - this._shader.init(); + // set up the shader + this._shader = new RDGE.jshader(); + this._shader.def = cloudMapMaterialDef; + this._shader.init(); - // set up the material node - this._materialNode = RDGE.createMaterialNode("cloudMapMaterial" + "_" + world.generateUniqueNodeID()); - this._materialNode.setShader(this._shader); + // set up the material node + this._materialNode = RDGE.createMaterialNode("cloudMapMaterial" + "_" + world.generateUniqueNodeID()); + this._materialNode.setShader(this._shader); - // initialize the time - this._time = 0; + // initialize the time + this._time = 0; - // create the texture to map the source cloud generation world/canvas to the destination - var wrap = 'REPEAT', mips = true; - this._glTex = new Texture( world, this._srcCanvas, wrap, mips ); + // create the texture to map the source cloud generation world/canvas to the destination + var wrap = 'REPEAT', mips = true; + this._glTex = new Texture( world, this._srcCanvas, wrap, mips ); - // set the shader values in the shader - this.updateTexture(); - this.update( 0 ); + // set the shader values in the shader + this.updateTexture(); + this.update( 0 ); }; - /**************************************************************/ + /**************************************************************/ this.updateTexture = function () - { + { var material = this._materialNode; if (material) - { + { var technique = material.shaderProgram['default']; var saveContext = RDGE.globals.engine.getContext(); - var renderer = RDGE.globals.engine.getContext().renderer; + var renderer = RDGE.globals.engine.getContext().renderer; if (renderer && technique) - { + { var texMapName = this._propValues[this._propNames[0]]; var wrap = 'REPEAT', mips = true; if (this._glTex) @@ -201,236 +201,236 @@ var CloudMaterial = function CloudMaterial() this._glTex.render(); var tex = this._glTex.getTexture(); - if (tex) - technique.u_tex0.set( tex ); + if (tex) + technique.u_tex0.set( tex ); + } + } + + // restore the context + RDGE.globals.engine.setContext( saveContext.id ); + } + }; + + this.updateColor = function() + { + } + + this.update = function( time ) + { + if (this._srcWorld) + { + //this._srcWorld.update(); + this._srcWorld.draw(); + RDGE.globals.engine.setContext( this.getWorld()._canvas.rdgeid ); + } + + var technique, renderer, tex; + + // update the cloud map material + var material = this._materialNode; + if (material) + { + technique = material.shaderProgram['default']; + renderer = RDGE.globals.engine.getContext().renderer; + if (renderer && technique) + { + if (this._glTex) + { + this._glTex.render(); + tex = this._glTex.getTexture(); + technique.u_tex0.set( tex ); } } + } - // restore the context - RDGE.globals.engine.setContext( saveContext.id ); + // update the source material + material = this._srcMaterialNode; + if (material) + { + technique = material.shaderProgram['default']; + renderer = RDGE.globals.engine.getContext().renderer; + if (renderer && technique) + { + technique.u_time.set( [this._time] ); + this._time += this._dTime; + } } }; - this.updateColor = function() - { - } - - this.update = function( time ) - { - if (this._srcWorld) - { - //this._srcWorld.update(); - this._srcWorld.draw(); - RDGE.globals.engine.setContext( this.getWorld()._canvas.rdgeid ); - } - - var technique, renderer, tex; - - // update the cloud map material - var material = this._materialNode; - if (material) - { - technique = material.shaderProgram['default']; - renderer = RDGE.globals.engine.getContext().renderer; - if (renderer && technique) - { - if (this._glTex) - { - this._glTex.render(); - tex = this._glTex.getTexture(); - technique.u_tex0.set( tex ); - } - } - } - - // update the source material - material = this._srcMaterialNode; - if (material) - { - technique = material.shaderProgram['default']; - renderer = RDGE.globals.engine.getContext().renderer; - if (renderer && technique) - { - technique.u_time.set( [this._time] ); - this._time += this._dTime; - } - } - }; - - this.buildSource = function() - { - // save the current RDGE context so we can reset it later - var saveContext = RDGE.globals.engine.getContext(); - this.getWorld().stop(); - - // build a world to do the rendering - if (!GLWorld) GLWorld = require("js/lib/drawing/world").World; - this._srcWorld = new GLWorld( this._srcCanvas, true, true ); - var srcWorld = this._srcWorld; - if (!this._srcCanvas) throw new Error( "No source canvas in Cloud material" ); - this._srcCanvas.__GLWorld = srcWorld; - - // build the geometry - var prim = this.buildGeometry( srcWorld, srcCanvas.width, srcCanvas.height ); - - // set up the shader - var shader = new RDGE.jshader(); - shader.def = cloudMaterialDef; - shader.init(); - this._srcShader = shader; - - // set up the material node - var materialNode = RDGE.createMaterialNode("cloudMaterial" + "_" + srcWorld.generateUniqueNodeID()); - materialNode.setShader(shader); - this._srcMaterialNode = materialNode; - - // add the nodes to the tree - var trNode = RDGE.createTransformNode("objRootNode_" + srcWorld._nodeCounter++); - srcWorld._rootNode.insertAsChild( trNode ); - trNode.attachMeshNode(srcWorld.renderer.id + "_prim_" + srcWorld._nodeCounter++, prim); + this.buildSource = function() + { + // save the current RDGE context so we can reset it later + var saveContext = RDGE.globals.engine.getContext(); + this.getWorld().stop(); + + // build a world to do the rendering + if (!GLWorld) GLWorld = require("js/lib/drawing/world").World; + this._srcWorld = new GLWorld( this._srcCanvas, true, true ); + var srcWorld = this._srcWorld; + if (!this._srcCanvas) throw new Error( "No source canvas in Cloud material" ); + this._srcCanvas.__GLWorld = srcWorld; + + // build the geometry + var prim = this.buildGeometry( srcWorld, srcCanvas.width, srcCanvas.height ); + + // set up the shader + var shader = new RDGE.jshader(); + shader.def = cloudMaterialDef; + shader.init(); + this._srcShader = shader; + + // set up the material node + var materialNode = RDGE.createMaterialNode("cloudMaterial" + "_" + srcWorld.generateUniqueNodeID()); + materialNode.setShader(shader); + this._srcMaterialNode = materialNode; + + // add the nodes to the tree + var trNode = RDGE.createTransformNode("objRootNode_" + srcWorld._nodeCounter++); + srcWorld._rootNode.insertAsChild( trNode ); + trNode.attachMeshNode(srcWorld.renderer.id + "_prim_" + srcWorld._nodeCounter++, prim); trNode.attachMaterial( materialNode ); - // initialize the shader uniforms - this._time = 0; - if (shader['default']) { - var t = shader['default']; - if (t) - { - t.u_time.set( [this._time] ); - t.u_surfaceAlpha.set( [this._surfaceAlpha] ); - t.u_zmin.set( [this._adjustedZMin] ); - t.u_zmax.set( [this._adjustedZMax] ); - - var wrap = 'REPEAT', mips = true; - var texMapName = this._propValues[this._propNames[0]]; - var tex = srcWorld.renderer.getTextureByName(texMapName, wrap, mips ); - if (tex) - { - srcWorld.textureToLoad( tex ); - t.u_tex0.set( tex ); - } + // initialize the shader uniforms + this._time = 0; + if (shader['default']) { + var t = shader['default']; + if (t) + { + t.u_time.set( [this._time] ); + t.u_surfaceAlpha.set( [this._surfaceAlpha] ); + t.u_zmin.set( [this._adjustedZMin] ); + t.u_zmax.set( [this._adjustedZMax] ); + + var wrap = 'REPEAT', mips = true; + var texMapName = this._propValues[this._propNames[0]]; + var tex = srcWorld.renderer.getTextureByName(texMapName, wrap, mips ); + if (tex) + { + srcWorld.textureToLoad( tex ); + t.u_tex0.set( tex ); + } } } - // start the render loop on the source canvas - srcWorld.restartRenderLoop(); - - // restore the original context - RDGE.globals.engine.setContext( saveContext.id ); - this.getWorld().start(); - }; - - this.buildGeometry = function(world, canvasWidth, canvasHeight) - { - var RectangleGeometry = require("js/lib/geom/rectangle").RectangleGeometry; - RectangleGeometry.init(); - - // get the normalized device coordinates (NDC) for - // all position and dimensions. - var vpw = world.getViewportWidth(), vph = world.getViewportHeight(); - var xNDC = 0.0/vpw, yNDC = 0.0/vph, - xFillNDC = canvasWidth/vpw, yFillNDC = canvasHeight/vph; - - var aspect = world.getAspect(); - var zn = world.getZNear(), zf = world.getZFar(); - var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0), - b = -t, - r = aspect*t, - l = -r; - - // calculate the object coordinates from their NDC coordinates - var z = -world.getViewDistance(); - - // get the position of the origin - var x = -z*(r-l)/(2.0*zn)*xNDC, - y = -z*(t-b)/(2.0*zn)*yNDC; - - // get the x and y fill - var hWidth = -z*(r-l)/(2.0*zn)*xFillNDC, - hHeight = -z*(t-b)/(2.0*zn)*yFillNDC; - - - //this.createFill([x,y], 2*xFill, 2*yFill, tlRadius, blRadius, brRadius, trRadius, fillMaterial); - var ctr = [x,y], width = 2*hWidth, height = 2*hHeight; - var cloudSize = width > height ? 0.25*width : 0.25*height; - var left = x - hHeight, - top = y - hHeight; - - // get the GL projection matrix so wecan calculate the z values from the user input z values - var zNear = world.getZNear(), zFar = world.getZFar(); - var viewDist = world.getViewDistance(); - var projMat = Matrix.makePerspective( world.getFOV(), world.getAspect(), world.getZNear(), world.getZFar()); - var camMat = world.getCameraMat(); - var camMatInv = glmat4.inverse( camMat, [] ); - var glCompleteMat = glmat4.multiply( projMat, camMatInv, [] ); - var zw1_c = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -zNear + viewDist], glCompleteMat )[2], - zw2_c = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -zFar + viewDist], glCompleteMat )[2]; - var glCompleteMatInv = glmat4.inverse( glCompleteMat, [] ); - var zMin = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -this._zmin + viewDist], glCompleteMat )[2], - zMax = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -this._zmax + viewDist], glCompleteMat )[2]; - - zMax = -this._zmin + viewDist; - zMin = -this._zmax + viewDist; - dz = zMax - zMin; - - // the adjusted values are what get sent to the shader - this._adjustedZMin = zMin; - this._adjustedZMax = zMax; - - - // build the polygons - var verts = [], - normals = [ [0,0,1], [0,0,1], [0,0,1], [0,0,1] ], - uvs = [ [0,0], [1,0], [1,1], [0,1] ]; - - for ( i = 0; i < 20; i++ ) - { -// var x = hWidth*2*(Math.random() - 0.5), -// y = hHeight*2.0*(Math.random() - 0.5), - var x = left + Math.random()*width, - y = top + Math.random()*height, - z = zMin + Math.random()*dz; - zRot = (Math.random() - 0.5) * Math.PI, - sz = cloudSize * Math.random(); - - //x = 0.0; y = 0.0; z = 0.0; - //zRot = 0.0; - //z = 0; - - verts[0] = [-sz, -sz, 0]; - verts[1] = [-sz, sz, 0]; - verts[2] = [ sz, sz, 0]; - verts[3] = [ sz, -sz, 0]; - - var rotMat = Matrix.RotationZ( zRot ); - var transMat = Matrix.Translation( [x,y,z] ); - var mat = glmat4.multiply( transMat, rotMat, [] ); - - glmat4.multiplyVec3( mat, verts[0] ); - glmat4.multiplyVec3( mat, verts[1] ); - glmat4.multiplyVec3( mat, verts[2] ); - glmat4.multiplyVec3( mat, verts[3] ); - - var tmp0 = MathUtils.transformAndDivideHomogeneousPoint( verts[0], glCompleteMat ), - tmp1 = MathUtils.transformAndDivideHomogeneousPoint( verts[1], glCompleteMat ), - tmp2 = MathUtils.transformAndDivideHomogeneousPoint( verts[2], glCompleteMat ), - tmp3 = MathUtils.transformAndDivideHomogeneousPoint( verts[3], glCompleteMat ); - - RectangleGeometry.addQuad( verts, normals, uvs ); - } - - return RectangleGeometry.buildPrimitive(); + // start the render loop on the source canvas + srcWorld.restartRenderLoop(); + + // restore the original context + RDGE.globals.engine.setContext( saveContext.id ); + this.getWorld().start(); + }; + + this.buildGeometry = function(world, canvasWidth, canvasHeight) + { + var RectangleGeometry = require("js/lib/geom/rectangle").RectangleGeometry; + RectangleGeometry.init(); + + // get the normalized device coordinates (NDC) for + // all position and dimensions. + var vpw = world.getViewportWidth(), vph = world.getViewportHeight(); + var xNDC = 0.0/vpw, yNDC = 0.0/vph, + xFillNDC = canvasWidth/vpw, yFillNDC = canvasHeight/vph; + + var aspect = world.getAspect(); + var zn = world.getZNear(), zf = world.getZFar(); + var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0), + b = -t, + r = aspect*t, + l = -r; + + // calculate the object coordinates from their NDC coordinates + var z = -world.getViewDistance(); + + // get the position of the origin + var x = -z*(r-l)/(2.0*zn)*xNDC, + y = -z*(t-b)/(2.0*zn)*yNDC; + + // get the x and y fill + var hWidth = -z*(r-l)/(2.0*zn)*xFillNDC, + hHeight = -z*(t-b)/(2.0*zn)*yFillNDC; + + + //this.createFill([x,y], 2*xFill, 2*yFill, tlRadius, blRadius, brRadius, trRadius, fillMaterial); + var ctr = [x,y], width = 2*hWidth, height = 2*hHeight; + var cloudSize = width > height ? 0.25*width : 0.25*height; + var left = x - hHeight, + top = y - hHeight; + + // get the GL projection matrix so wecan calculate the z values from the user input z values + var zNear = world.getZNear(), zFar = world.getZFar(); + var viewDist = world.getViewDistance(); + var projMat = Matrix.makePerspective( world.getFOV(), world.getAspect(), world.getZNear(), world.getZFar()); + var camMat = world.getCameraMat(); + var camMatInv = glmat4.inverse( camMat, [] ); + var glCompleteMat = glmat4.multiply( projMat, camMatInv, [] ); + var zw1_c = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -zNear + viewDist], glCompleteMat )[2], + zw2_c = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -zFar + viewDist], glCompleteMat )[2]; + var glCompleteMatInv = glmat4.inverse( glCompleteMat, [] ); + var zMin = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -this._zmin + viewDist], glCompleteMat )[2], + zMax = MathUtils.transformAndDivideHomogeneousPoint( [0,0, -this._zmax + viewDist], glCompleteMat )[2]; + + zMax = -this._zmin + viewDist; + zMin = -this._zmax + viewDist; + dz = zMax - zMin; + + // the adjusted values are what get sent to the shader + this._adjustedZMin = zMin; + this._adjustedZMax = zMax; + + + // build the polygons + var verts = [], + normals = [ [0,0,1], [0,0,1], [0,0,1], [0,0,1] ], + uvs = [ [0,0], [1,0], [1,1], [0,1] ]; + + for ( i = 0; i < 20; i++ ) + { +// var x = hWidth*2*(Math.random() - 0.5), +// y = hHeight*2.0*(Math.random() - 0.5), + var x = left + Math.random()*width, + y = top + Math.random()*height, + z = zMin + Math.random()*dz; + zRot = (Math.random() - 0.5) * Math.PI, + sz = cloudSize * Math.random(); + + //x = 0.0; y = 0.0; z = 0.0; + //zRot = 0.0; + //z = 0; + + verts[0] = [-sz, -sz, 0]; + verts[1] = [-sz, sz, 0]; + verts[2] = [ sz, sz, 0]; + verts[3] = [ sz, -sz, 0]; + + var rotMat = Matrix.RotationZ( zRot ); + var transMat = Matrix.Translation( [x,y,z] ); + var mat = glmat4.multiply( transMat, rotMat, [] ); + + glmat4.multiplyVec3( mat, verts[0] ); + glmat4.multiplyVec3( mat, verts[1] ); + glmat4.multiplyVec3( mat, verts[2] ); + glmat4.multiplyVec3( mat, verts[3] ); + + var tmp0 = MathUtils.transformAndDivideHomogeneousPoint( verts[0], glCompleteMat ), + tmp1 = MathUtils.transformAndDivideHomogeneousPoint( verts[1], glCompleteMat ), + tmp2 = MathUtils.transformAndDivideHomogeneousPoint( verts[2], glCompleteMat ), + tmp3 = MathUtils.transformAndDivideHomogeneousPoint( verts[3], glCompleteMat ); + + RectangleGeometry.addQuad( verts, normals, uvs ); + } + + return RectangleGeometry.buildPrimitive(); }; // JSON export this.exportJSON = function () { var jObj = - { - 'material': this.getShaderName(), - 'name': this.getName(), - 'texture': this._propValues[this._propNames[0]] - }; + { + 'material': this.getShaderName(), + 'name': this.getName(), + 'texture': this._propValues[this._propNames[0]] + }; return jObj; }; @@ -458,82 +458,82 @@ var CloudMaterial = function CloudMaterial() // local world created by the cloud material. var cloudMaterialDef = { 'shaders': - { - 'defaultVShader': "assets/shaders/Cloud.vert.glsl", - 'defaultFShader': "assets/shaders/Cloud.frag.glsl" - }, + { + 'defaultVShader': "assets/shaders/Cloud.vert.glsl", + 'defaultFShader': "assets/shaders/Cloud.frag.glsl" + }, 'techniques': - { - 'default': - [ - { - 'vshader': 'defaultVShader', - 'fshader': 'defaultFShader', - // attributes - 'attributes': - { - 'vert': { 'type': 'vec3' }, - 'normal': { 'type': 'vec3' }, - 'texcoord': { 'type': 'vec2' } - }, - // parameters - 'params': - { - 'u_tex0' : { 'type' : 'tex2d' }, - 'u_time' : { 'type' : 'float' }, - 'u_surfaceAlpha' : { 'type' : 'float' }, - 'u_zmin' : { 'type' : 'float' }, - 'u_zmax' : { 'type' : 'float' } - }, - - // render states - 'states': - { - 'depthEnable': true, - 'offset': [1.0, 0.1] - } - } - ] - } + { + 'default': + [ + { + 'vshader': 'defaultVShader', + 'fshader': 'defaultFShader', + // attributes + 'attributes': + { + 'vert': { 'type': 'vec3' }, + 'normal': { 'type': 'vec3' }, + 'texcoord': { 'type': 'vec2' } + }, + // parameters + 'params': + { + 'u_tex0' : { 'type' : 'tex2d' }, + 'u_time' : { 'type' : 'float' }, + 'u_surfaceAlpha' : { 'type' : 'float' }, + 'u_zmin' : { 'type' : 'float' }, + 'u_zmax' : { 'type' : 'float' } + }, + + // render states + 'states': + { + 'depthEnable': true, + 'offset': [1.0, 0.1] + } + } + ] + } }; // the cloud map material def is used to map the cloud image onto // the destination geometry var cloudMapMaterialDef = {'shaders': - { - 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/BasicTex.frag.glsl" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_tex0' : { 'type' : 'tex2d' }, - }, - - // render states - 'states' : - { - 'depthEnable' : true, - 'offset':[1.0, 0.1] - } - } - ] - } + { + 'defaultVShader':"assets/shaders/Basic.vert.glsl", + 'defaultFShader':"assets/shaders/BasicTex.frag.glsl" + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_tex0' : { 'type' : 'tex2d' }, + }, + + // render states + 'states' : + { + 'depthEnable' : true, + 'offset':[1.0, 0.1] + } + } + ] + } }; diff --git a/js/lib/rdge/materials/deform-material.js b/js/lib/rdge/materials/deform-material.js index 234f22e4..6c5f93ad 100644 --- a/js/lib/rdge/materials/deform-material.js +++ b/js/lib/rdge/materials/deform-material.js @@ -51,21 +51,21 @@ var DeformMaterial = function DeformMaterial() { /////////////////////////////////////////////////////////////////////// // all defined in parent PulseMaterial.js // load the local default value - var u_tex0_index = 0; - this._propNames = ["u_tex0", "u_speed" ]; - this._propLabels = ["Texture map", "Speed" ]; - this._propTypes = ["file", "float" ]; - this._propValues = []; + var u_tex0_index = 0; + this._propNames = ["u_tex0", "u_speed" ]; + this._propLabels = ["Texture map", "Speed" ]; + this._propTypes = ["file", "float" ]; + this._propValues = []; this._propValues[this._propNames[0]] = this._defaultTexMap.slice(0); this._propValues[this._propNames[1]] = 1.0; - this._propValues[ this._propNames[ u_tex0_index] ] = this._defaultTexMap.slice(0); + this._propValues[ this._propNames[ u_tex0_index] ] = this._defaultTexMap.slice(0); /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this.isAnimated = function() { return true; }; - this.getShaderDef = function() { return pulseMaterialDef; } + this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return pulseMaterialDef; } /////////////////////////////////////////////////////////////////////// @@ -106,42 +106,42 @@ var DeformMaterial = function DeformMaterial() { // shader spec (can also be loaded from a .JSON file, or constructed at runtime) var deformMaterialDef = {'shaders': - { - 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/Deform.frag.glsl" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_tex0': { 'type' : 'tex2d' }, - 'u_time' : { 'type' : 'float' }, - 'u_speed' : { 'type' : 'float' }, - 'u_resolution' : { 'type' : 'vec2' } - }, - - // render states - 'states' : - { - 'depthEnable' : true, - 'offset':[1.0, 0.1] - } - } - ] - } + { + 'defaultVShader':"assets/shaders/Basic.vert.glsl", + 'defaultFShader':"assets/shaders/Deform.frag.glsl" + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_tex0': { 'type' : 'tex2d' }, + 'u_time' : { 'type' : 'float' }, + 'u_speed' : { 'type' : 'float' }, + 'u_resolution' : { 'type' : 'vec2' } + }, + + // render states + 'states' : + { + 'depthEnable' : true, + 'offset':[1.0, 0.1] + } + } + ] + } }; DeformMaterial.prototype = new PulseMaterial(); diff --git a/js/lib/rdge/materials/flag-material.js b/js/lib/rdge/materials/flag-material.js index b87013ba..5cd361df 100644 --- a/js/lib/rdge/materials/flag-material.js +++ b/js/lib/rdge/materials/flag-material.js @@ -37,19 +37,19 @@ var FlagMaterial = function FlagMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "Flag"; - this._shaderName = "flag"; + this._name = "Flag"; + this._shaderName = "flag"; - this._texMap = 'assets/images/us_flag.png'; + this._texMap = 'assets/images/us_flag.png'; - this._time = 0.0; - this._dTime = 0.1; + this._time = 0.0; + this._dTime = 0.1; - this._speed = 1.0; + this._speed = 1.0; this._waveWidth = 1.0; this._waveHeight = 1.0; - this._hasVertexDeformation = true; + this._hasVertexDeformation = true; // array textures indexed by shader uniform name this._glTextures = []; @@ -57,51 +57,51 @@ var FlagMaterial = function FlagMaterial() { /////////////////////////////////////////////////////////////////////// // Properties /////////////////////////////////////////////////////////////////////// - // all defined in parent PulseMaterial.js - // load the local default value - this._propNames = ["u_tex0", "u_waveWidth", "u_waveHeight", "u_speed" ]; - this._propLabels = ["Texture map", "Wave Width", "Wave Height", "Speed" ]; - this._propTypes = ["file", "float", "float", "float" ]; - this._propValues = []; - - this._propValues[ this._propNames[0] ] = this._texMap.slice(0); + // all defined in parent PulseMaterial.js + // load the local default value + this._propNames = ["u_tex0", "u_waveWidth", "u_waveHeight", "u_speed" ]; + this._propLabels = ["Texture map", "Wave Width", "Wave Height", "Speed" ]; + this._propTypes = ["file", "float", "float", "float" ]; + this._propValues = []; + + this._propValues[ this._propNames[0] ] = this._texMap.slice(0); this._propValues[ this._propNames[1] ] = this._waveWidth; this._propValues[ this._propNames[2] ] = this._waveHeight; this._propValues[ this._propNames[3] ] = this._speed; - // a material can be animated or not. default is not. - // Any material needing continuous rendering should override this method - this.isAnimated = function() { return true; }; - this.getShaderDef = function() { return flagMaterialDef; } + // a material can be animated or not. default is not. + // Any material needing continuous rendering should override this method + this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return flagMaterialDef; } /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// - // duplcate method requirde - - this.init = function( world ) - { - // save the world - if (world) this.setWorld( world ); - - // set up the shader - this._shader = new RDGE.jshader(); - this._shader.def = flagMaterialDef; - this._shader.init(); - - // set up the material node - this._materialNode = RDGE.createMaterialNode("flagMaterial" + "_" + world.generateUniqueNodeID()); - this._materialNode.setShader(this._shader); - - this._time = 0; - if (this._shader && this._shader['default']) - this._shader['default'].u_time.set( [this._time] ); - - // set the shader values in the shader - this.setShaderValues(); - this.update( 0 ); - } + // duplcate method requirde + + this.init = function( world ) + { + // save the world + if (world) this.setWorld( world ); + + // set up the shader + this._shader = new RDGE.jshader(); + this._shader.def = flagMaterialDef; + this._shader.init(); + + // set up the material node + this._materialNode = RDGE.createMaterialNode("flagMaterial" + "_" + world.generateUniqueNodeID()); + this._materialNode.setShader(this._shader); + + this._time = 0; + if (this._shader && this._shader['default']) + this._shader['default'].u_time.set( [this._time] ); + + // set the shader values in the shader + this.setShaderValues(); + this.update( 0 ); + } }; /////////////////////////////////////////////////////////////////////////////////////// @@ -110,43 +110,43 @@ var FlagMaterial = function FlagMaterial() { // shader spec (can also be loaded from a .JSON file, or constructed at runtime) var flagMaterialDef = {'shaders': - { - 'defaultVShader':"assets/shaders/Flag.vert.glsl", - 'defaultFShader':"assets/shaders/Flag.frag.glsl" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_tex0': { 'type' : 'tex2d' }, - 'u_time' : { 'type' : 'float' }, - 'u_speed' : { 'type' : 'float' }, - 'u_waveWidth' : { 'type' : 'float' }, - 'u_waveHeight' : { 'type' : 'float' } - }, - - // render states - 'states' : - { - 'depthEnable' : true, - 'offset':[1.0, 0.1] - } - } - ] - } + { + 'defaultVShader':"assets/shaders/Flag.vert.glsl", + 'defaultFShader':"assets/shaders/Flag.frag.glsl" + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_tex0': { 'type' : 'tex2d' }, + 'u_time' : { 'type' : 'float' }, + 'u_speed' : { 'type' : 'float' }, + 'u_waveWidth' : { 'type' : 'float' }, + 'u_waveHeight' : { 'type' : 'float' } + }, + + // render states + 'states' : + { + 'depthEnable' : true, + 'offset':[1.0, 0.1] + } + } + ] + } }; FlagMaterial.prototype = new PulseMaterial(); diff --git a/js/lib/rdge/materials/flat-material.js b/js/lib/rdge/materials/flat-material.js index 6b8bd2c5..5fa46231 100755 --- a/js/lib/rdge/materials/flat-material.js +++ b/js/lib/rdge/materials/flat-material.js @@ -48,8 +48,8 @@ var FlatMaterial = function FlatMaterial() // Property Accessors /////////////////////////////////////////////////////////////////////// this.getShaderName = function () { return this._shaderName; }; - this.isAnimated = function () { return false; }; - this.getTechniqueName = function() { return 'colorMe' }; + this.isAnimated = function () { return false; }; + this.getTechniqueName = function() { return 'colorMe' }; /////////////////////////////////////////////////////////////////////// // Methods @@ -57,7 +57,7 @@ var FlatMaterial = function FlatMaterial() // duplcate method requirde this.init = function (world) - { + { // save the world if (world) { this.setWorld(world); @@ -70,8 +70,8 @@ var FlatMaterial = function FlatMaterial() // set up the material node this._materialNode = RDGE.createMaterialNode("flatMaterial_" + world.generateUniqueNodeID()); this._materialNode.setShader(this._shader); - - this.setShaderValues(); + + this.setShaderValues(); } else throw new Error("GLWorld not supplied to material initialization"); @@ -95,31 +95,31 @@ var FlatMaterial = function FlatMaterial() // shader spec (can also be loaded from a .JSON file, or constructed at runtime) flatShaderDef = { - 'shaders': { // shader files - 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/Basic.frag.glsl" - }, - 'techniques': { // rendering control - 'colorMe':[ // simple color pass - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // attributes - 'params' : - { - 'color' : { 'type' : 'vec4' } - } - } - ] - } + 'shaders': { // shader files + 'defaultVShader':"assets/shaders/Basic.vert.glsl", + 'defaultFShader':"assets/shaders/Basic.frag.glsl" + }, + 'techniques': { // rendering control + 'colorMe':[ // simple color pass + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // attributes + 'params' : + { + 'color' : { 'type' : 'vec4' } + } + } + ] + } }; FlatMaterial.prototype = new Material(); diff --git a/js/lib/rdge/materials/fly-material.js b/js/lib/rdge/materials/fly-material.js index b4bf0972..d53532d9 100644 --- a/js/lib/rdge/materials/fly-material.js +++ b/js/lib/rdge/materials/fly-material.js @@ -35,13 +35,13 @@ var FlyMaterial = function FlyMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "Fly"; - this._shaderName = "fly"; + this._name = "Fly"; + this._shaderName = "fly"; - this._defaultTexMap = 'assets/images/rocky-normal.jpg'; + this._defaultTexMap = 'assets/images/rocky-normal.jpg'; - this._time = 0.0; - this._dTime = 0.01; + this._time = 0.0; + this._dTime = 0.01; // array textures indexed by shader uniform name this._glTextures = []; @@ -49,50 +49,50 @@ var FlyMaterial = function FlyMaterial() { /////////////////////////////////////////////////////////////////////// // Properties /////////////////////////////////////////////////////////////////////// - // all defined in parent PulseMaterial.js - // load the local default value - var u_tex0_index = 0, u_speed_index = 1; - this._propNames = ["u_tex0", "u_speed" ]; - this._propLabels = ["Texture map", "Speed" ]; - this._propTypes = ["file", "float" ]; - this._propValues = []; + // all defined in parent PulseMaterial.js + // load the local default value + var u_tex0_index = 0, u_speed_index = 1; + this._propNames = ["u_tex0", "u_speed" ]; + this._propLabels = ["Texture map", "Speed" ]; + this._propTypes = ["file", "float" ]; + this._propValues = []; this._propValues[this._propNames[u_tex0_index]] = this._defaultTexMap.slice(0); this._propValues[this._propNames[u_speed_index]] = 1.0; /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this.isAnimated = function() { return true; }; - this.getShaderDef = function() { return flyMaterialDef; }; + this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return flyMaterialDef; }; /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// - // duplcate method requirde + // duplcate method requirde - this.init = function( world ) { - // save the world - if (world) this.setWorld( world ); + this.init = function( world ) { + // save the world + if (world) this.setWorld( world ); - // set up the shader - this._shader = new RDGE.jshader(); - this._shader.def = flyMaterialDef; - this._shader.init(); + // set up the shader + this._shader = new RDGE.jshader(); + this._shader.def = flyMaterialDef; + this._shader.init(); - // set up the material node - this._materialNode = RDGE.createMaterialNode("flyMaterial" + "_" + world.generateUniqueNodeID()); - this._materialNode.setShader(this._shader); + // set up the material node + this._materialNode = RDGE.createMaterialNode("flyMaterial" + "_" + world.generateUniqueNodeID()); + this._materialNode.setShader(this._shader); - this._time = 0; - if (this._shader && this._shader['default']) { - this._shader['default'].u_time.set( [this._time] ); + this._time = 0; + if (this._shader && this._shader['default']) { + this._shader['default'].u_time.set( [this._time] ); } - // set the shader values in the shader + // set the shader values in the shader this.setShaderValues(); - this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); - this.update( 0 ); - }; + this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); + this.update( 0 ); + }; }; /////////////////////////////////////////////////////////////////////////////////////// @@ -102,42 +102,42 @@ var FlyMaterial = function FlyMaterial() { var flyMaterialDef = { 'shaders': - { - 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/Fly.frag.glsl" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_tex0': { 'type' : 'tex2d' }, - 'u_time' : { 'type' : 'float' }, - 'u_speed' : { 'type' : 'float' }, - 'u_resolution' : { 'type' : 'vec2' }, - }, - - // render states - 'states' : - { - 'depthEnable' : true, - 'offset':[1.0, 0.1] - } - } - ] - } + { + 'defaultVShader':"assets/shaders/Basic.vert.glsl", + 'defaultFShader':"assets/shaders/Fly.frag.glsl" + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_tex0': { 'type' : 'tex2d' }, + 'u_time' : { 'type' : 'float' }, + 'u_speed' : { 'type' : 'float' }, + 'u_resolution' : { 'type' : 'vec2' }, + }, + + // render states + 'states' : + { + 'depthEnable' : true, + 'offset':[1.0, 0.1] + } + } + ] + } }; FlyMaterial.prototype = new PulseMaterial(); diff --git a/js/lib/rdge/materials/julia-material.js b/js/lib/rdge/materials/julia-material.js index eed9e79a..718f5b44 100644 --- a/js/lib/rdge/materials/julia-material.js +++ b/js/lib/rdge/materials/julia-material.js @@ -35,57 +35,57 @@ var JuliaMaterial = function JuliaMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "Julia"; - this._shaderName = "julia"; + this._name = "Julia"; + this._shaderName = "julia"; - this._defaultTexMap = 'assets/images/rocky-normal.jpg'; + this._defaultTexMap = 'assets/images/rocky-normal.jpg'; - this._time = 0.0; - this._dTime = 0.01; + this._time = 0.0; + this._dTime = 0.01; /////////////////////////////////////////////////////////////////////// // Properties /////////////////////////////////////////////////////////////////////// - var u_speed_index = 0; - this._propNames = [ "u_speed" ]; - this._propLabels = [ "Speed" ]; - this._propTypes = [ "float" ]; - this._propValues = []; + var u_speed_index = 0; + this._propNames = [ "u_speed" ]; + this._propLabels = [ "Speed" ]; + this._propTypes = [ "float" ]; + this._propValues = []; this._propValues[this._propNames[u_speed_index]] = 1.0; /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this.isAnimated = function() { return true; }; - this.getShaderDef = function() { return JuliaMaterialDef; } + this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return JuliaMaterialDef; } /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// - this.init = function( world ) { - // save the world - if (world) this.setWorld( world ); + this.init = function( world ) { + // save the world + if (world) this.setWorld( world ); - // set up the shader - this._shader = new RDGE.jshader(); - this._shader.def = JuliaMaterialDef; - this._shader.init(); + // set up the shader + this._shader = new RDGE.jshader(); + this._shader.def = JuliaMaterialDef; + this._shader.init(); - // set up the material node - this._materialNode = RDGE.createMaterialNode("juliaMaterial" + "_" + world.generateUniqueNodeID()); - this._materialNode.setShader(this._shader); + // set up the material node + this._materialNode = RDGE.createMaterialNode("juliaMaterial" + "_" + world.generateUniqueNodeID()); + this._materialNode.setShader(this._shader); - this._time = 0; - if (this._shader && this._shader['default']) { - this._shader['default'].u_time.set( [this._time] ); + this._time = 0; + if (this._shader && this._shader['default']) { + this._shader['default'].u_time.set( [this._time] ); } - // set the shader values in the shader + // set the shader values in the shader this.setShaderValues(); - this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); - this.update( 0 ); - }; + this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); + this.update( 0 ); + }; } /////////////////////////////////////////////////////////////////////////////////////// @@ -94,41 +94,41 @@ var JuliaMaterial = function JuliaMaterial() { // shader spec (can also be loaded from a .JSON file, or constructed at runtime) var JuliaMaterialDef = {'shaders': - { - 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/Julia.frag.glsl" - }, - 'techniques': - { - 'default': - [ - { - 'vshader' : 'defaultVShader', - 'fshader' : 'defaultFShader', - // attributes - 'attributes' : - { - 'vert' : { 'type' : 'vec3' }, - 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' } - }, - // parameters - 'params' : - { - 'u_time' : { 'type' : 'float' }, - 'u_speed' : { 'type' : 'float' }, - 'u_resolution' : { 'type' : 'vec2' }, - }, - - // render states - 'states' : - { - 'depthEnable' : true, - 'offset':[1.0, 0.1] - } - } - ] - } + { + 'defaultVShader':"assets/shaders/Basic.vert.glsl", + 'defaultFShader':"assets/shaders/Julia.frag.glsl" + }, + 'techniques': + { + 'default': + [ + { + 'vshader' : 'defaultVShader', + 'fshader' : 'defaultFShader', + // attributes + 'attributes' : + { + 'vert' : { 'type' : 'vec3' }, + 'normal' : { 'type' : 'vec3' }, + 'texcoord' : { 'type' : 'vec2' } + }, + // parameters + 'params' : + { + 'u_time' : { 'type' : 'float' }, + 'u_speed' : { 'type' : 'float' }, + 'u_resolution' : { 'type' : 'vec2' }, + }, + + // render states + 'states' : + { + 'depthEnable' : true, + 'offset':[1.0, 0.1] + } + } + ] + } }; JuliaMaterial.prototype = new PulseMaterial(); diff --git a/js/lib/rdge/materials/keleidoscope-material.js b/js/lib/rdge/materials/keleidoscope-material.js index 648bf401..90340e00 100644 --- a/js/lib/rdge/materials/keleidoscope-material.js +++ b/js/lib/rdge/materials/keleidoscope-material.js @@ -35,13 +35,13 @@ var KeleidoscopeMaterial = function KeleidoscopeMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "Keleidoscope"; - this._shaderName = "keleidoscope"; + this._name = "Keleidoscope"; + this._shaderName = "keleidoscope"; - this._defaultTexMap = 'assets/images/rocky-normal.jpg'; + this._defaultTexMap = 'assets/images/rocky-normal.jpg'; - this._time = 0.0; - this._dTime = 0.01; + this._time = 0.0; + this._dTime = 0.01; // array textures indexed by shader uniform name this._glTextures = []; @@ -49,21 +49,21 @@ var KeleidoscopeMaterial = function KeleidoscopeMaterial() { /////////////////////////////////////////////////////////////////////// // Properties /////////////////////////////////////////////////////////////////////// - // all defined in parent PulseMaterial.js - // load the local default value - var u_