From dc92188fef67d7a2032173d7746fbc16a951a366 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 17 May 2012 15:15:43 -0700 Subject: Exposing parameters for pulse and plasma materials --- js/lib/rdge/materials/plasma-material.js | 98 +++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-) (limited to 'js/lib/rdge/materials/plasma-material.js') diff --git a/js/lib/rdge/materials/plasma-material.js b/js/lib/rdge/materials/plasma-material.js index 02172a6b..1db207d6 100644 --- a/js/lib/rdge/materials/plasma-material.js +++ b/js/lib/rdge/materials/plasma-material.js @@ -17,6 +17,23 @@ var PlasmaMaterial = function PlasmaMaterial() { this._dTime = 0.01; this._speed = 1.0; + this._wave = 0.0; + this._wave1 = 0.6; + this._wave2 = 0.8; + + /////////////////////////////////////////////////////////////////////// + // Properties + /////////////////////////////////////////////////////////////////////// + this._propNames = ["wave", "wave1", "wave2", "speed"]; + this._propLabels = ["Wave", "Wave 1", "Wave 2", "Speed"]; + this._propTypes = ["float", "float", "float", "float"]; + + this._propValues = []; + this._propValues[ this._propNames[0] ] = this._wave; + this._propValues[ this._propNames[1] ] = this._wave1; + this._propValues[ this._propNames[2] ] = this._wave2; + this._propValues[ this._propNames[3] ] = this._speed; + /////////////////////////////////////////////////////////////////////// // Property Accessors @@ -28,10 +45,51 @@ var PlasmaMaterial = function PlasmaMaterial() { /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// + // duplcate method requirde + this.dup = function (world) { + // get the current values; + var propNames = [], propValues = [], propTypes = [], propLabels = []; + this.getAllProperties(propNames, propValues, propTypes, propLabels); + + // allocate a new material + var newMat = new PlasmaMaterial(); + + // copy over the current values; + var n = propNames.length; + for (var i = 0; i < n; i++) + newMat.setProperty(propNames[i], propValues[i]); + + return newMat; + }; this.setProperty = function( prop, value ) { - // plasma has no properties + // make sure we have legitimate imput + var ok = this.validateProperty( prop, value ); + if (!ok) { + console.log( "invalid property in Water Material:" + prop + " : " + value ); + } + + switch (prop) + { + case "wave": + this._wave = value; + break; + + case "wave1": + this._wave1 = value; + break; + + case "wave2": + this._wave2 = value; + break; + + case "speed": + this._speed = value; + break; + } + + this.updateParameters(); }; /////////////////////////////////////////////////////////////////////// @@ -56,12 +114,37 @@ var PlasmaMaterial = function PlasmaMaterial() { // set the default value this._time = 0; this._shader['default'].u_time.set( [this._time] ); + this._shader['default'].u_speed.set( [this._speed] ); + + this._shader['default'].u_wave.set( [this._wave] ); + this._shader['default'].u_wave1.set( [this._wave1] ); + this._shader['default'].u_wave2.set( [this._wave2] ); // set up the material node this._materialNode = RDGE.createMaterialNode("plasmaMaterial" + "_" + world.generateUniqueNodeID()); this._materialNode.setShader(this._shader); }; + this.updateParameters = function() + { + this._propValues[ this._propNames[0] ] = this._wave; + this._propValues[ this._propNames[1] ] = this._wave1; + this._propValues[ this._propNames[2] ] = this._wave2; + this._propValues[ this._propNames[3] ] = this._speed; + + var material = this._materialNode; + if (material) { + var technique = material.shaderProgram['default']; + var renderer = RDGE.globals.engine.getContext().renderer; + if (renderer && technique) { + technique.u_wave.set( [this._wave] ); + technique.u_wave1.set( [this._wave1] ); + technique.u_wave2.set( [this._wave2] ); + technique.u_speed.set( [this._speed] ); + } + } + }; + this.update = function( time ) { this._shader['default'].u_time.set( [this._time] ); this._time += this._dTime; @@ -74,7 +157,10 @@ var PlasmaMaterial = function PlasmaMaterial() { 'material' : this.getShaderName(), 'name' : this.getName(), 'speed' : this._speed, - 'dTime' : this._dTime + 'dTime' : this._dTime, + 'wave' : this._wave, + 'wave1' : this._wave1, + 'wave2' : this._wave2 }; return jObj; @@ -84,6 +170,10 @@ var PlasmaMaterial = function PlasmaMaterial() { { this._speed = jObj.speed; this._dTime = jObj.dTime; + + this._wave = jObj.wave; + this._wave1 = jObj.wave1; + this._wave2 = jObj.wave2; }; }; @@ -115,6 +205,10 @@ var plasmaShaderDef = 'params' : { 'u_time' : { 'type' : 'float' }, + 'u_speed': { 'type' : 'float' }, + 'u_wave' : { 'type' : 'float' }, + 'u_wave1': { 'type' : 'float' }, + 'u_wave2': { 'type' : 'float' } }, // render states -- cgit v1.2.3 From d4ca478ad313c6c20834e410ba14ad3a5e7b20bf Mon Sep 17 00:00:00 2001 From: hwc487 Date: Tue, 12 Jun 2012 10:28:26 -0700 Subject: Material cleanup & bug fixes. --- js/lib/rdge/materials/plasma-material.js | 109 ++----------------------------- 1 file changed, 7 insertions(+), 102 deletions(-) (limited to 'js/lib/rdge/materials/plasma-material.js') diff --git a/js/lib/rdge/materials/plasma-material.js b/js/lib/rdge/materials/plasma-material.js index 1db207d6..c1e5524c 100644 --- a/js/lib/rdge/materials/plasma-material.js +++ b/js/lib/rdge/materials/plasma-material.js @@ -24,7 +24,7 @@ var PlasmaMaterial = function PlasmaMaterial() { /////////////////////////////////////////////////////////////////////// // Properties /////////////////////////////////////////////////////////////////////// - this._propNames = ["wave", "wave1", "wave2", "speed"]; + this._propNames = ["u_wave", "u_wave1", "u_wave2", "u_speed"]; this._propLabels = ["Wave", "Wave 1", "Wave 2", "Speed"]; this._propTypes = ["float", "float", "float", "float"]; @@ -39,68 +39,17 @@ var PlasmaMaterial = function PlasmaMaterial() { // Property Accessors /////////////////////////////////////////////////////////////////////// this.getShaderName = function() { return this._shaderName; }; - this.isAnimated = function() { return true; }; + this.getShaderDef = function() { return plasmaShaderDef; }; /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - // duplcate method requirde - this.dup = function (world) { - // get the current values; - var propNames = [], propValues = [], propTypes = [], propLabels = []; - this.getAllProperties(propNames, propValues, propTypes, propLabels); - - // allocate a new material - var newMat = new PlasmaMaterial(); - - // copy over the current values; - var n = propNames.length; - for (var i = 0; i < n; i++) - newMat.setProperty(propNames[i], propValues[i]); - - return newMat; - }; - - this.setProperty = function( prop, value ) - { - // make sure we have legitimate imput - var ok = this.validateProperty( prop, value ); - if (!ok) { - console.log( "invalid property in Water Material:" + prop + " : " + value ); - } - - switch (prop) - { - case "wave": - this._wave = value; - break; - - case "wave1": - this._wave1 = value; - break; - - case "wave2": - this._wave2 = value; - break; - - case "speed": - this._speed = value; - break; - } - - this.updateParameters(); - }; - - /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// // duplcate method requirde - this.dup = function() { - return new PlasmaMaterial(); - }; this.init = function( world) { @@ -114,67 +63,23 @@ var PlasmaMaterial = function PlasmaMaterial() { // set the default value this._time = 0; this._shader['default'].u_time.set( [this._time] ); - this._shader['default'].u_speed.set( [this._speed] ); - - this._shader['default'].u_wave.set( [this._wave] ); - this._shader['default'].u_wave1.set( [this._wave1] ); - this._shader['default'].u_wave2.set( [this._wave2] ); // set up the material node this._materialNode = RDGE.createMaterialNode("plasmaMaterial" + "_" + world.generateUniqueNodeID()); this._materialNode.setShader(this._shader); - }; - this.updateParameters = function() - { - this._propValues[ this._propNames[0] ] = this._wave; - this._propValues[ this._propNames[1] ] = this._wave1; - this._propValues[ this._propNames[2] ] = this._wave2; - this._propValues[ this._propNames[3] ] = this._speed; - - var material = this._materialNode; - if (material) { - var technique = material.shaderProgram['default']; - var renderer = RDGE.globals.engine.getContext().renderer; - if (renderer && technique) { - technique.u_wave.set( [this._wave] ); - technique.u_wave1.set( [this._wave1] ); - technique.u_wave2.set( [this._wave2] ); - technique.u_speed.set( [this._speed] ); - } + this._time = 0; + if (this._shader && this._shader['default']) { + this._shader['default'].u_time.set( [this._time] ); } + + this.setShaderValues(); }; this.update = function( time ) { this._shader['default'].u_time.set( [this._time] ); this._time += this._dTime; }; - - this.exportJSON = function() - { - var jObj = - { - 'material' : this.getShaderName(), - 'name' : this.getName(), - 'speed' : this._speed, - 'dTime' : this._dTime, - 'wave' : this._wave, - 'wave1' : this._wave1, - 'wave2' : this._wave2 - }; - - return jObj; - }; - - this.importJSON = function( jObj ) - { - this._speed = jObj.speed; - this._dTime = jObj.dTime; - - this._wave = jObj.wave; - this._wave1 = jObj.wave1; - this._wave2 = jObj.wave2; - }; }; /////////////////////////////////////////////////////////////////////////////////////// -- 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/plasma-material.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/lib/rdge/materials/plasma-material.js') diff --git a/js/lib/rdge/materials/plasma-material.js b/js/lib/rdge/materials/plasma-material.js index c1e5524c..10c29c99 100644 --- a/js/lib/rdge/materials/plasma-material.js +++ b/js/lib/rdge/materials/plasma-material.js @@ -10,7 +10,7 @@ var PlasmaMaterial = function PlasmaMaterial() { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// - this._name = "PlasmaMaterial"; + this._name = "Plasma"; this._shaderName = "plasma"; this._time = 0.0; -- cgit v1.2.3