From 5b878fdfaa696c1a01afa191c1d65c0ccb006b65 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Sun, 8 Apr 2012 05:26:08 -0700 Subject: Clouds --- js/lib/rdge/materials/cloud-material.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 85088f91..f7f4c6bb 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -176,6 +176,27 @@ var CloudMaterial = function CloudMaterial() { } }; + this.generateQuads = function() + { + var quads = []; + for ( i = 0; i < 8000; i++ ) + { + var quad = + { + } + x: Math.random() * 1000 - 500, + y = - Math.random() * Math.random() * 200 - 15, + z = i, + rotation.z = Math.random() * Math.PI, + scale = Math.random() * Math.random() * 1.5 + 0.5, + } + + quads.push( quad ); + } + + this._quads = quads; + }; + // JSON export this.exportJSON = function() { -- cgit v1.2.3 From c1a6cacf364d79cbf23b41e7089a1a6d39afea85 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Tue, 10 Apr 2012 10:12:49 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 122 +++++++++++++++++++++----------- 1 file changed, 81 insertions(+), 41 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index f7f4c6bb..198f7cfa 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -4,8 +4,11 @@ (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. */ -var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialParser; -var Material = require("js/lib/rdge/materials/material").Material; +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; + /////////////////////////////////////////////////////////////////////// // Class GLMaterial // RDGE representation of a material. @@ -20,9 +23,19 @@ var CloudMaterial = function CloudMaterial() { this._texMap = 'assets/images/cloud2.jpg'; this._diffuseColor = [0.5, 0.5, 0.5, 0.5]; + // 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 = 0.1; + this._zmax = 10.0; + + /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// @@ -32,9 +45,6 @@ var CloudMaterial = function CloudMaterial() { this.getTextureMap = function() { return this._propValues[this._propNames[0]] ? this._propValues[this._propNames[0]].slice() : null }; this.setTextureMap = function(m) { this._propValues[this._propNames[0]] = m ? m.slice(0) : null; this.updateTexture(); }; - this.setDiffuseColor = function(c) { this._propValues[this._propNames[1]] = c.slice(0); this.updateColor(); }; - this.getDiffuseColor = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null; }; - this.isAnimated = function() { return true; }; /////////////////////////////////////////////////////////////////////// @@ -64,10 +74,6 @@ var CloudMaterial = function CloudMaterial() { this.setTextureMap(value); break; - case "diffusecolor": - this.setDiffuseColor( value ); - break; - case "color": break; } @@ -100,6 +106,8 @@ var CloudMaterial = function CloudMaterial() { this.init = function( world ) { + var GLWorld = require("js/lib/drawing/world").World; + // save the world if (world) this.setWorld( world ); @@ -107,6 +115,18 @@ var CloudMaterial = function CloudMaterial() { // the cloud material runs a little faster this._dTime = 0.01; + // create a canvas to render into + var doc = world.getCanvas().ownerDocument; + var canvasID = "__canvas__"; + this._srcCanvas = doc.createElement(canvasID); + + // build a world to do the rendering + this._srcWorld = new GLWorld( this._srcCanvas, true ); + var srcWorld = this._srcWorld; + + // build the geometry + var prim = this.buildGeometry(); + // set up the shader this._shader = new jshader(); this._shader.def = cloudMaterialDef; @@ -116,31 +136,34 @@ var CloudMaterial = function CloudMaterial() { this._materialNode = createMaterialNode("cloudMaterial" + "_" + world.generateUniqueNodeID()); this._materialNode.setShader(this._shader); + // initialize the shader uniforms this._time = 0; if (this._shader && this._shader['default']) { - this._shader['default'].u_time.set( [this._time] ); - this._shader['default'].u_DiffuseColor.set( this._diffuseColor ); + var t = this._shader['default']; + if (t) + { + t.u_time.set( [this._time] ); + t.u_surfaceAlpha.set( [this._surfaceAlpha] ); + t.u_zmin.set( [this._zmin] ); + t.u_zmax.set( [this._zmax] ); + } } + // add the nodes to the tree + var trNode = createTransformNode("objRootNode_" + this._srcWorld._nodeCounter++); + srcWorld._rootNode.insertAsChild( trNode ); + trNode.attachMeshNode(srcWorld.renderer.id + "_prim_" + srcWorld._nodeCounter++, prim); + trNode.attachMaterial( this._materialNode ); + + // create the texture + var wrap = 'REPEAT', mips = true; + this._glTex = new Texture( dstWorld, canvasID, wrap, mips ); + // set the shader values in the shader this.updateTexture(); this.update( 0 ); }; - this.updateColor = function() - { - var material = this._materialNode; - if (material) - { - var technique = material.shaderProgram['default']; - var renderer = g_Engine.getContext().renderer; - if (renderer && technique) { - var color = this._propValues[this._propNames[1]]; - technique.u_DiffuseColor.set( this._diffuseColor ); - } - } - } - this.updateTexture = function() { var material = this._materialNode; if (material) { @@ -171,30 +194,45 @@ var CloudMaterial = function CloudMaterial() { } this._time += this._dTime; + if (this._glTex) + { + this._glTex.render(); + var tex = this._glTex.getTexture(); + technique.u_tex0.set( tex ); + } + if (this._time > 200.0) this._time = 0.0; } } }; - this.generateQuads = function() + this.buildGeometry = function() { - var quads = []; - for ( i = 0; i < 8000; i++ ) + var RectangleGeometry = require("js/lib/geom/rectangle").RectangleGeometry; + + RectangleGeometry.init(); + + var verts = [], + norms = [ [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 < 2; i++ ) { - var quad = - { - } - x: Math.random() * 1000 - 500, + var x = Math.random() * 1000 - 500, y = - Math.random() * Math.random() * 200 - 15, z = i, - rotation.z = Math.random() * Math.PI, - scale = Math.random() * Math.random() * 1.5 + 0.5, - } - - quads.push( quad ); + zRot = Math.random() * Math.PI, + size = this._cloudSize * Math.random() * Math.random() * 1.5 + 0.5; + var sz = 0.5*size; + + verts[0] = [x-sz, y-sz, z]; + verts[1] = [x-sz, y+sz, z]; + verts[2] = [x+sz, y+sz, z]; + verts[3] = [x+sz, y-sz, z]; + RectangleGeometry.addQuad( verts, normals, uvs ) } - this._quads = quads; + return RectangleGeometry.buildPrimitive(); }; // JSON export @@ -294,9 +332,11 @@ var cloudMaterialDef = // parameters 'params' : { - 'u_tex0': { 'type' : 'tex2d' }, - 'u_time' : { 'type' : 'float' }, - 'u_DiffuseColor' : { 'type' : 'vec4' } + 'u_tex0' : { 'type' : 'tex2d' }, + 'u_time' : { 'type' : 'float' }, + 'u_surfaceAlpha' : { 'type' : 'float' }, + 'u_zmin' : { 'type' : 'float' }, + 'u_zmax' : { 'type' : 'float' } }, // render states -- cgit v1.2.3 From 1b7592f81c9b47c2b42d78efe385cd979d54d3ca Mon Sep 17 00:00:00 2001 From: hwc487 Date: Wed, 11 Apr 2012 06:24:05 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 198f7cfa..c1dabce8 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -20,7 +20,7 @@ var CloudMaterial = function CloudMaterial() { this._name = "CloudMaterial"; this._shaderName = "cloud"; - this._texMap = 'assets/images/cloud2.jpg'; + this._texMap = 'assets/images/cloud10.png'; this._diffuseColor = [0.5, 0.5, 0.5, 0.5]; // base size of cloud polygons. Random adjustments made to each quad @@ -106,7 +106,8 @@ var CloudMaterial = function CloudMaterial() { this.init = function( world ) { - var GLWorld = require("js/lib/drawing/world").World; + var GLWorld = require("js/lib/drawing/world").World, + NJUtils = require("js/lib/NJUtils").NJUtils; // save the world if (world) this.setWorld( world ); @@ -118,7 +119,8 @@ var CloudMaterial = function CloudMaterial() { // create a canvas to render into var doc = world.getCanvas().ownerDocument; var canvasID = "__canvas__"; - this._srcCanvas = doc.createElement(canvasID); + //this._srcCanvas = doc.createElement(canvasID); + this._srcCanvas = NJUtils.makeNJElement("canvas", canvasID, "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); // build a world to do the rendering this._srcWorld = new GLWorld( this._srcCanvas, true ); @@ -157,7 +159,7 @@ var CloudMaterial = function CloudMaterial() { // create the texture var wrap = 'REPEAT', mips = true; - this._glTex = new Texture( dstWorld, canvasID, wrap, mips ); + this._glTex = new Texture( world, this._srcCanvas, wrap, mips ); // set the shader values in the shader this.updateTexture(); @@ -213,7 +215,7 @@ var CloudMaterial = function CloudMaterial() { RectangleGeometry.init(); var verts = [], - norms = [ [0,0,1], [0,0,1], [0,0,1], [0,0,1] ], + 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 < 2; i++ ) -- cgit v1.2.3 From b5aa082842f798d1eec582428468a322bd5a017f Mon Sep 17 00:00:00 2001 From: hwc487 Date: Wed, 11 Apr 2012 17:11:43 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index c1dabce8..f253718a 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -188,6 +188,8 @@ var CloudMaterial = function CloudMaterial() { var material = this._materialNode; if (material) { + if (this._srcWorld) this._srcWorld.draw(); + var technique = material.shaderProgram['default']; var renderer = g_Engine.getContext().renderer; if (renderer && technique) { -- cgit v1.2.3 From 1fa8516bcd0fb0277c13a7081b5a51ce041d3496 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 12 Apr 2012 06:24:46 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index f253718a..cec00696 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -31,7 +31,7 @@ var CloudMaterial = function CloudMaterial() { // parameter initial values this._time = 0.0; - this._surfaceAlpha = 0.5; + this._surfaceAlpha = 1.0; this._zmin = 0.1; this._zmax = 10.0; @@ -125,6 +125,7 @@ var CloudMaterial = function CloudMaterial() { // build a world to do the rendering this._srcWorld = new GLWorld( this._srcCanvas, true ); var srcWorld = this._srcWorld; + this._srcCanvas.__GLWorld = srcWorld; // build the geometry var prim = this.buildGeometry(); @@ -174,11 +175,15 @@ var CloudMaterial = function CloudMaterial() { if (renderer && technique) { var texMapName = this._propValues[this._propNames[0]]; var wrap = 'REPEAT', mips = true; - var tex = this.loadTexture( texMapName, wrap, mips ); - - if (tex) { - technique.u_tex0.set( tex ); + //var tex = this.loadTexture( texMapName, wrap, mips ); + if (this._glTex) + { + this._glTex.render(); + var tex = this._glTex.getTexture(); + if (tex) + technique.u_tex0.set( tex ); } + } } }; -- cgit v1.2.3 From 331b2ad4d602016f9bb3d03be759fd81fed50c10 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Fri, 13 Apr 2012 07:08:42 -0700 Subject: Cloud Material --- js/lib/rdge/materials/cloud-material.js | 118 +++++++++++++++++++------------- 1 file changed, 72 insertions(+), 46 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index cec00696..126751c6 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -121,14 +121,21 @@ var CloudMaterial = function CloudMaterial() { var canvasID = "__canvas__"; //this._srcCanvas = doc.createElement(canvasID); this._srcCanvas = NJUtils.makeNJElement("canvas", canvasID, "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); + var dstCanvas = this.getWorld().getCanvas(), + srcCanvas = this._srcCanvas; + srcCanvas.width = dstCanvas.width; + srcCanvas.height = dstCanvas.height; + + // save the current RDGE context + var saveContext = g_Engine.getContext(); // build a world to do the rendering - this._srcWorld = new GLWorld( this._srcCanvas, true ); + this._srcWorld = new GLWorld( this._srcCanvas, true, true ); var srcWorld = this._srcWorld; this._srcCanvas.__GLWorld = srcWorld; // build the geometry - var prim = this.buildGeometry(); + var prim = this.buildGeometry( srcWorld, srcCanvas.width, srcCanvas.height ); // set up the shader this._shader = new jshader(); @@ -149,6 +156,12 @@ var CloudMaterial = function CloudMaterial() { t.u_surfaceAlpha.set( [this._surfaceAlpha] ); t.u_zmin.set( [this._zmin] ); t.u_zmax.set( [this._zmax] ); + + 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 ); } } @@ -160,16 +173,25 @@ var CloudMaterial = function CloudMaterial() { // create the texture var wrap = 'REPEAT', mips = true; + this._srcWorld._hasAnimatedMaterials = true; // hack to make the texture think this world is animated this._glTex = new Texture( world, this._srcCanvas, wrap, mips ); // set the shader values in the shader this.updateTexture(); this.update( 0 ); + + // restore the previous RDGE context + g_Engine.setContext( saveContext.id ); }; this.updateTexture = function() { var material = this._materialNode; - if (material) { + if (material) + { + // save the current context + var saveContext = g_Engine.getContext(); + g_Engine.setContext( this._srcCanvas.rdgeid ); + var technique = material.shaderProgram['default']; var renderer = g_Engine.getContext().renderer; if (renderer && technique) { @@ -185,8 +207,22 @@ var CloudMaterial = function CloudMaterial() { } } + + g_Engine.setContext( saveContext.id ); } }; + + this.updateTextures = function() + { + if (this._glTex) + { + if (!this._glTex.isAnimated()) + { + this._glTex.render(); + this.updateTexture(); + } + } + } this.update = function( time ) { @@ -215,12 +251,43 @@ var CloudMaterial = function CloudMaterial() { } }; - this.buildGeometry = function() + 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 xFill = -z*(r-l)/(2.0*zn)*xFillNDC, + yFill = -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*xFill, height = 2*yFill; + var prim = RectangleGeometry.create( ctr, width, height ); + return prim; + + /* var verts = [], normals = [ [0,0,1], [0,0,1], [0,0,1], [0,0,1] ], uvs = [ [0,0], [1,0], [1,1], [0,1] ]; @@ -242,6 +309,7 @@ var CloudMaterial = function CloudMaterial() { } return RectangleGeometry.buildPrimitive(); + */ }; // JSON export @@ -270,48 +338,6 @@ var CloudMaterial = function CloudMaterial() { throw new Error( "could not import material: " + jObj ); } } - - - this.export = function() { - // every material needs the base type and instance name - var exportStr = "material: " + this.getShaderName() + "\n"; - exportStr += "name: " + this.getName() + "\n"; - - var world = this.getWorld(); - if (!world) - throw new Error( "no world in material.export, " + this.getName() ); - - var texMapName = this._propValues[this._propNames[0]]; - exportStr += "texture: " +texMapName + "\n"; - - // every material needs to terminate like this - exportStr += "endMaterial\n"; - - return exportStr; - }; - - this.import = function( importStr ) { - var pu = new MaterialParser( importStr ); - var material = pu.nextValue( "material: " ); - if (material != this.getShaderName()) throw new Error( "ill-formed material" ); - this.setName( pu.nextValue( "name: ") ); - - var rtnStr; - try { - this._propValues[this._propNames[0]] = pu.nextValue( "texture: " ); - - var endKey = "endMaterial\n"; - var index = importStr.indexOf( endKey ); - index += endKey.length; - rtnStr = importStr.substr( index ); - } - catch (e) - { - throw new Error( "could not import material: " + importStr ); - } - - return rtnStr; - } }; /////////////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3 From 8992d9baf542135e910bb59328a592d9e330703a Mon Sep 17 00:00:00 2001 From: hwc487 Date: Sun, 15 Apr 2012 05:16:34 -0700 Subject: Cloud Material --- js/lib/rdge/materials/cloud-material.js | 270 ++++++++++++++++++++++---------- 1 file changed, 185 insertions(+), 85 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 126751c6..e2292c7a 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -8,6 +8,8 @@ var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialP 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 @@ -20,7 +22,9 @@ var CloudMaterial = function CloudMaterial() { this._name = "CloudMaterial"; this._shaderName = "cloud"; - this._texMap = 'assets/images/cloud10.png'; + //this._texMap = 'assets/images/cloud10.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 @@ -31,7 +35,7 @@ var CloudMaterial = function CloudMaterial() { // parameter initial values this._time = 0.0; - this._surfaceAlpha = 1.0; + this._surfaceAlpha = 0.6; this._zmin = 0.1; this._zmax = 10.0; @@ -111,80 +115,54 @@ var CloudMaterial = function CloudMaterial() { // save the world if (world) this.setWorld( world ); - - // this variable declared above is inherited set to a smaller delta. - // the cloud material runs a little faster - this._dTime = 0.01; + var dstWorld = world; // create a canvas to render into - var doc = world.getCanvas().ownerDocument; + 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); - var dstCanvas = this.getWorld().getCanvas(), - srcCanvas = this._srcCanvas; + srcCanvas = this._srcCanvas; srcCanvas.width = dstCanvas.width; srcCanvas.height = dstCanvas.height; - // save the current RDGE context - var saveContext = g_Engine.getContext(); - - // build a world to do the rendering - this._srcWorld = new GLWorld( this._srcCanvas, true, true ); - var srcWorld = this._srcWorld; - this._srcCanvas.__GLWorld = srcWorld; + ////////////////////////////////////////////////////////////////////////////////// + // 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 geometry - var prim = this.buildGeometry( srcWorld, srcCanvas.width, srcCanvas.height ); + // 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 jshader(); - this._shader.def = cloudMaterialDef; + this._shader.def = cloudMapMaterialDef; this._shader.init(); // set up the material node - this._materialNode = createMaterialNode("cloudMaterial" + "_" + world.generateUniqueNodeID()); + this._materialNode = createMaterialNode("cloudMapMaterial" + "_" + world.generateUniqueNodeID()); this._materialNode.setShader(this._shader); - // initialize the shader uniforms + // initialize the time this._time = 0; - if (this._shader && this._shader['default']) { - var t = this._shader['default']; - if (t) - { - t.u_time.set( [this._time] ); - t.u_surfaceAlpha.set( [this._surfaceAlpha] ); - t.u_zmin.set( [this._zmin] ); - t.u_zmax.set( [this._zmax] ); - 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 ); - } - } - - // add the nodes to the tree - var trNode = createTransformNode("objRootNode_" + this._srcWorld._nodeCounter++); - srcWorld._rootNode.insertAsChild( trNode ); - trNode.attachMeshNode(srcWorld.renderer.id + "_prim_" + srcWorld._nodeCounter++, prim); - trNode.attachMaterial( this._materialNode ); - - // create the texture + // create the texture to map the source cloud generation world/canvas to the destination var wrap = 'REPEAT', mips = true; - this._srcWorld._hasAnimatedMaterials = true; // hack to make the texture think this world is animated this._glTex = new Texture( world, this._srcCanvas, wrap, mips ); // set the shader values in the shader this.updateTexture(); this.update( 0 ); - - // restore the previous RDGE context - g_Engine.setContext( saveContext.id ); }; - this.updateTexture = function() { + this.updateTexture = function() + { var material = this._materialNode; if (material) { @@ -195,9 +173,7 @@ var CloudMaterial = function CloudMaterial() { var technique = material.shaderProgram['default']; var renderer = g_Engine.getContext().renderer; if (renderer && technique) { - var texMapName = this._propValues[this._propNames[0]]; var wrap = 'REPEAT', mips = true; - //var tex = this.loadTexture( texMapName, wrap, mips ); if (this._glTex) { this._glTex.render(); @@ -205,9 +181,9 @@ var CloudMaterial = function CloudMaterial() { if (tex) technique.u_tex0.set( tex ); } - } + // restore the context g_Engine.setContext( saveContext.id ); } }; @@ -226,29 +202,100 @@ var CloudMaterial = function CloudMaterial() { this.update = function( time ) { + var technique, renderer, tex; + + // update the cloud map material var material = this._materialNode; if (material) { - if (this._srcWorld) this._srcWorld.draw(); + technique = material.shaderProgram['default']; + renderer = g_Engine.getContext().renderer; + if (renderer && technique) + { + if (this._glTex) + { + this._glTex.render(); + tex = this._glTex.getTexture(); + technique.u_tex0.set( tex ); + } + } + } + } - var technique = material.shaderProgram['default']; - var renderer = g_Engine.getContext().renderer; - if (renderer && technique) { + // update the source material + material = this._srcMaterialNode; + if (material) + { + technique = material.shaderProgram['default']; + renderer = g_Engine.getContext().renderer; + if (renderer && technique) + { if (this._shader && this._shader['default']) { this._shader['default'].u_time.set( [this._time] ); } - this._time += this._dTime; - if (this._glTex) + this._time += this._dTime; + if (this._time > 200.0) this._time = 0.0; + } + }; + + this.buildSource = function() + { + // save the current RDGE context so we can reset it later + var saveContext = g_Engine.getContext(); + this.getWorld().stop(); + + // build a world to do the rendering + 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 jshader(); + shader.def = cloudMaterialDef; + shader.init(); + this._srcShader = shader; + + // set up the material node + var materialNode = createMaterialNode("cloudMaterial" + "_" + srcWorld.generateUniqueNodeID()); + materialNode.setShader(shader); + this._srcMaterialNode = materialNode; + + // add the nodes to the tree + var trNode = 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._zmin] ); + t.u_zmax.set( [this._zmax] ); + + var wrap = 'REPEAT', mips = true; + var texMapName = this._propValues[this._propNames[0]]; + var tex = srcWorld.renderer.getTextureByName(texMapName, wrap, mips ); + if (tex) { - this._glTex.render(); - var tex = this._glTex.getTexture(); - technique.u_tex0.set( tex ); + srcWorld.textureToLoad( tex ); + t.u_tex0.set( tex ); } - - if (this._time > 200.0) this._time = 0.0; } } + + // restore the original context + g_Engine.setContext( saveContext.id ); + this.getWorld().start(); }; this.buildGeometry = function(world, canvasWidth, canvasHeight) @@ -278,38 +325,52 @@ var CloudMaterial = function CloudMaterial() { y = -z*(t-b)/(2.0*zn)*yNDC; // get the x and y fill - var xFill = -z*(r-l)/(2.0*zn)*xFillNDC, - yFill = -z*(t-b)/(2.0*zn)*yFillNDC; + 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*xFill, height = 2*yFill; - var prim = RectangleGeometry.create( ctr, width, height ); - return prim; + var ctr = [x,y], width = 2*hWidth, height = 2*hHeight; + var cloudSize = width > height ? 0.25*width : 0.25*height; + //var prim = RectangleGeometry.create( ctr, width, height ); + //return prim; - /* 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 < 2; i++ ) + + for ( i = 0; i < 12; i++ ) { - var x = Math.random() * 1000 - 500, - y = - Math.random() * Math.random() * 200 - 15, - z = i, - zRot = Math.random() * Math.PI, - size = this._cloudSize * Math.random() * Math.random() * 1.5 + 0.5; - var sz = 0.5*size; - - verts[0] = [x-sz, y-sz, z]; - verts[1] = [x-sz, y+sz, z]; - verts[2] = [x+sz, y+sz, z]; - verts[3] = [x+sz, y-sz, z]; - RectangleGeometry.addQuad( verts, normals, uvs ) + var x = hWidth*2*(Math.random() - 0.5), + //y = hHeight*2.0*(Math.random() * Math.random() - 0.5), + y = hHeight*2.0*(Math.random() - 0.5), + z = 0, //i, + zRot = (Math.random() - 0.5) * Math.PI, + sz = cloudSize * Math.random(); + + //x = 0.0; y = 0.0; z = 0.0; + //zRot = 0.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 scaleMat = Matrix.Scale( [sz,sz,sz] ); + 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] ); + + RectangleGeometry.addQuad( verts, normals, uvs ); } return RectangleGeometry.buildPrimitive(); - */ }; // JSON export @@ -343,7 +404,8 @@ var CloudMaterial = function CloudMaterial() { /////////////////////////////////////////////////////////////////////////////////////// // RDGE shader -// shader spec (can also be loaded from a .JSON file, or constructed at runtime) +// the cloud material def is used for cloud generation on the +// local world created by the cloud material. var cloudMaterialDef = {'shaders': { @@ -384,7 +446,45 @@ var cloudMaterialDef = ] } }; + +// 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] + } + } + ] + } +}; -- cgit v1.2.3 From c0aa5e88890fbf74124d019df96c33215da99f17 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Mon, 16 Apr 2012 05:59:01 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 53 +++++++++++++++++---------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index e2292c7a..2b40b84c 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -31,13 +31,13 @@ var CloudMaterial = function CloudMaterial() { this._cloudSize = 40; this._time = 0.0; - this._dTime = 0.01; + this._dTime = 0.001; // parameter initial values this._time = 0.0; - this._surfaceAlpha = 0.6; - this._zmin = 0.1; - this._zmax = 10.0; + this._surfaceAlpha = 0.5; + this._zmin = 6.0; + this._zmax = 10; /////////////////////////////////////////////////////////////////////// @@ -129,9 +129,9 @@ var CloudMaterial = function CloudMaterial() { ////////////////////////////////////////////////////////////////////////////////// // IS THIS NECESSARY?? - //var elementModel = TagTool.makeElement(~~srcCanvas.width, ~~srcCanvas.height, - // Matrix.I(4), [0,0,0], srcCanvas); - //ElementMediator.addElement(srcCanvas, elementModel.data, true); + var elementModel = TagTool.makeElement(~~srcCanvas.width, ~~srcCanvas.height, + Matrix.I(4), [0,0,0], srcCanvas); + ElementMediator.addElement(srcCanvas, elementModel.data, true); ////////////////////////////////////////////////////////////////////////////////// // build the source. @@ -212,13 +212,12 @@ var CloudMaterial = function CloudMaterial() { renderer = g_Engine.getContext().renderer; if (renderer && technique) { - if (this._glTex) - { - this._glTex.render(); - tex = this._glTex.getTexture(); - technique.u_tex0.set( tex ); - } - } + if (this._glTex) + { + this._glTex.render(); + tex = this._glTex.getTexture(); + technique.u_tex0.set( tex ); + } } } @@ -230,13 +229,10 @@ var CloudMaterial = function CloudMaterial() { renderer = g_Engine.getContext().renderer; if (renderer && technique) { - if (this._shader && this._shader['default']) { - this._shader['default'].u_time.set( [this._time] ); - } - + technique.u_time.set( [this._time] ); this._time += this._dTime; - if (this._time > 200.0) this._time = 0.0; } + } }; this.buildSource = function() @@ -293,6 +289,9 @@ var CloudMaterial = function CloudMaterial() { } } + // start the render loop on the source canvas + srcWorld.restartRenderLoop(); + // restore the original context g_Engine.setContext( saveContext.id ); this.getWorld().start(); @@ -332,19 +331,25 @@ var CloudMaterial = function CloudMaterial() { //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 prim = RectangleGeometry.create( ctr, width, height ); - //return prim; + + // calculate the range of z's in GL space from + // the user specified range + var zNear = world.getZNear(), zFar = world.getZFar(); + var zMin = (-(this._zmin - world.getViewDistance())*(zFar - zNear) + 2.0*zFar*zNear)/(zFar + zNear), + zMax = (-(this._zmax - world.getViewDistance())*(zFar - zNear) + 2.0*zFar*zNear)/(zFar + zNear); + if (zMin > zMax) { var t = zMin; zMin = zMax; zMax = t; } + var dz = zMax - zMin; 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 < 12; i++ ) + for ( i = 0; i < 20; i++ ) { var x = hWidth*2*(Math.random() - 0.5), //y = hHeight*2.0*(Math.random() * Math.random() - 0.5), y = hHeight*2.0*(Math.random() - 0.5), - z = 0, //i, + z = zMin + Math.random()*dz; zRot = (Math.random() - 0.5) * Math.PI, sz = cloudSize * Math.random(); @@ -357,9 +362,7 @@ var CloudMaterial = function CloudMaterial() { verts[3] = [ sz, -sz, 0]; var rotMat = Matrix.RotationZ( zRot ); - //var scaleMat = Matrix.Scale( [sz,sz,sz] ); var transMat = Matrix.Translation( [x,y,z] ); - var mat = glmat4.multiply( transMat, rotMat, [] ); glmat4.multiplyVec3( mat, verts[0] ); -- cgit v1.2.3 From 447268000c379f619c78d7132c81e23b5c252598 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Tue, 17 Apr 2012 09:20:49 -0700 Subject: Cloud material --- js/lib/rdge/materials/cloud-material.js | 74 +++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 18 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 2b40b84c..28796c42 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -22,8 +22,8 @@ var CloudMaterial = function CloudMaterial() { this._name = "CloudMaterial"; this._shaderName = "cloud"; - //this._texMap = 'assets/images/cloud10.png'; - this._texMap = 'assets/images/us_flag.png'; + this._texMap = 'assets/images/cloud10.png'; + //this._texMap = 'assets/images/us_flag.png'; //this._texMap = 'assets/images/cubelight.png'; this._diffuseColor = [0.5, 0.5, 0.5, 0.5]; @@ -36,8 +36,15 @@ var CloudMaterial = function CloudMaterial() { // parameter initial values this._time = 0.0; this._surfaceAlpha = 0.5; - this._zmin = 6.0; - this._zmax = 10; + this._zmin = 2.0; + this._zmax = 5.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; + /////////////////////////////////////////////////////////////////////// @@ -129,9 +136,9 @@ var CloudMaterial = function CloudMaterial() { ////////////////////////////////////////////////////////////////////////////////// // IS THIS NECESSARY?? - var elementModel = TagTool.makeElement(~~srcCanvas.width, ~~srcCanvas.height, - Matrix.I(4), [0,0,0], srcCanvas); - ElementMediator.addElement(srcCanvas, elementModel.data, true); +// var elementModel = TagTool.makeElement(~~srcCanvas.width, ~~srcCanvas.height, +// Matrix.I(4), [0,0,0], srcCanvas); +// ElementMediator.addElement(srcCanvas, elementModel.data, true); ////////////////////////////////////////////////////////////////////////////////// // build the source. @@ -202,6 +209,13 @@ var CloudMaterial = function CloudMaterial() { this.update = function( time ) { + if (this._srcWorld) + { + this._srcWorld.update(); + this._srcWorld.draw(); + g_Engine.setContext( this.getWorld()._canvas.rdgeid ); + } + var technique, renderer, tex; // update the cloud map material @@ -275,8 +289,8 @@ var CloudMaterial = function CloudMaterial() { { t.u_time.set( [this._time] ); t.u_surfaceAlpha.set( [this._surfaceAlpha] ); - t.u_zmin.set( [this._zmin] ); - t.u_zmax.set( [this._zmax] ); + t.u_zmin.set( [this._adjustedZMin] ); + t.u_zmax.set( [this._adjustedZMax] ); var wrap = 'REPEAT', mips = true; var texMapName = this._propValues[this._propNames[0]]; @@ -331,30 +345,49 @@ var CloudMaterial = function CloudMaterial() { //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; - // calculate the range of z's in GL space from - // the user specified range + // 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 zMin = (-(this._zmin - world.getViewDistance())*(zFar - zNear) + 2.0*zFar*zNear)/(zFar + zNear), - zMax = (-(this._zmax - world.getViewDistance())*(zFar - zNear) + 2.0*zFar*zNear)/(zFar + zNear); - if (zMin > zMax) { var t = zMin; zMin = zMax; zMax = t; } - var dz = zMax - zMin; + 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() * Math.random() - 0.5), - y = hHeight*2.0*(Math.random() - 0.5), +// 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]; @@ -370,6 +403,11 @@ var CloudMaterial = function CloudMaterial() { 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 ); } -- cgit v1.2.3 From ae7eb87564632ce7c676bd728b8ff2710ff0bb83 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Wed, 18 Apr 2012 15:44:26 -0700 Subject: Merge branch 'master' of github.com:Motorola-Mobility/ninja-internal into Snapping_II Conflicts: js/tools/Rotate3DToolBase.js js/tools/RotateStage3DTool.js js/tools/Translate3DToolBase.js js/tools/modifier-tool-base.js --- js/lib/rdge/materials/cloud-material.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 28796c42..4200c1b2 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -23,6 +23,8 @@ var CloudMaterial = function CloudMaterial() { this._shaderName = "cloud"; this._texMap = 'assets/images/cloud10.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]; @@ -36,8 +38,10 @@ var CloudMaterial = function CloudMaterial() { // parameter initial values this._time = 0.0; this._surfaceAlpha = 0.5; - this._zmin = 2.0; - this._zmax = 5.0; +// 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 @@ -211,7 +215,7 @@ var CloudMaterial = function CloudMaterial() { { if (this._srcWorld) { - this._srcWorld.update(); + //this._srcWorld.update(); this._srcWorld.draw(); g_Engine.setContext( this.getWorld()._canvas.rdgeid ); } -- cgit v1.2.3 From 8eac5582b72115969a9f915f4303535c22018033 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Wed, 2 May 2012 17:00:12 -0700 Subject: Material editor --- js/lib/rdge/materials/cloud-material.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 0cf428b0..b7670178 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -183,7 +183,8 @@ var CloudMaterial = function CloudMaterial() if (material) { var technique = material.shaderProgram['default']; - var renderer = RDGE.globals.engine.getContext().renderer; + var saveContext = RDGE.globals.engine.getContext(); + var renderer = RDGE.globals.engine.getContext().renderer; if (renderer && technique) { var texMapName = this._propValues[this._propNames[0]]; @@ -215,6 +216,10 @@ var CloudMaterial = function CloudMaterial() } } + this.updateColor = function() + { + } + this.update = function( time ) { if (this._srcWorld) @@ -264,6 +269,7 @@ var CloudMaterial = function CloudMaterial() 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" ); @@ -273,13 +279,13 @@ var CloudMaterial = function CloudMaterial() var prim = this.buildGeometry( srcWorld, srcCanvas.width, srcCanvas.height ); // set up the shader - var shader = new jshader(); + var shader = new RDGE.jshader(); shader.def = cloudMaterialDef; shader.init(); this._srcShader = shader; // set up the material node - var materialNode = createMaterialNode("cloudMaterial" + "_" + srcWorld.generateUniqueNodeID()); + var materialNode = RDGE.createMaterialNode("cloudMaterial" + "_" + srcWorld.generateUniqueNodeID()); materialNode.setShader(shader); this._srcMaterialNode = materialNode; @@ -322,7 +328,6 @@ var CloudMaterial = function CloudMaterial() this.buildGeometry = function(world, canvasWidth, canvasHeight) { var RectangleGeometry = require("js/lib/geom/rectangle").RectangleGeometry; - RectangleGeometry.init(); // get the normalized device coordinates (NDC) for -- cgit v1.2.3 From d21aaca3d7093b6af968b7f9f764ab54e004f02b Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 3 May 2012 16:42:56 -0700 Subject: Cleanup of indirect textures. --- js/lib/rdge/materials/cloud-material.js | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index b7670178..2c7fced2 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -203,18 +203,6 @@ var CloudMaterial = function CloudMaterial() RDGE.globals.engine.setContext( saveContext.id ); } }; - - this.updateTextures = function() - { - if (this._glTex) - { - if (!this._glTex.isAnimated()) - { - this._glTex.render(); - this.updateTexture(); - } - } - } this.updateColor = function() { -- cgit v1.2.3 From 6c994c4b90023cecf4fd0caafb404b859fe28f54 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Wed, 6 Jun 2012 16:34:41 -0700 Subject: material cleanup and rearchitecture --- js/lib/rdge/materials/cloud-material.js | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 2c7fced2..2153b857 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -106,23 +106,6 @@ var CloudMaterial = function CloudMaterial() /////////////////////////////////////////////////////////////////////// // duplicate method required /**************************************************************/ - this.dup = function (world) { - // save the world - if (world) this.setWorld(world); - - // allocate a new uber material - var newMat = new CloudMaterial(); - - // copy over the current values; - var propNames = [], propValues = [], propTypes = [], propLabels = []; - this.getAllProperties(propNames, propValues, propTypes, propLabels); - var n = propNames.length; - for (var i = 0; i < n; i++) { - newMat.setProperty(propNames[i], propValues[i]); - } - - return newMat; - }; this.init = function (world) { var GLWorld = require("js/lib/drawing/world").World, -- cgit v1.2.3 From f0fc7a5678093cce986bd99fef2c5c88add19b68 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 14 Jun 2012 16:09:31 -0700 Subject: Fix for line color. Name change for all materials --- js/lib/rdge/materials/cloud-material.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/lib/rdge/materials/cloud-material.js') diff --git a/js/lib/rdge/materials/cloud-material.js b/js/lib/rdge/materials/cloud-material.js index 2153b857..fc833565 100644 --- a/js/lib/rdge/materials/cloud-material.js +++ b/js/lib/rdge/materials/cloud-material.js @@ -20,7 +20,7 @@ var CloudMaterial = function CloudMaterial() /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "CloudMaterial"; + this._name = "Cloud"; this._shaderName = "cloud"; this._texMap = 'assets/images/cloud10.png'; -- cgit v1.2.3