From 3ba2be686e1981c8af3054ead1c7bb59af8b5d66 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Thu, 9 Feb 2012 14:18:20 -0800 Subject: Updated linear and radial gradient materials import/export routines. Signed-off-by: Nivesh Rajbhandari --- .../RDGE/Materials/BumpMetalMaterial.js | 48 +++---- js/helper-classes/RDGE/Materials/FlatMaterial.js | 45 +++---- .../RDGE/Materials/LinearGradientMaterial.js | 144 +++++++++++++-------- .../RDGE/Materials/RadialGradientMaterial.js | 86 +++++++----- js/helper-classes/RDGE/Materials/UberMaterial.js | 44 +++---- 5 files changed, 206 insertions(+), 161 deletions(-) (limited to 'js/helper-classes/RDGE') diff --git a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js index 999d4676..a7a3724e 100644 --- a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js +++ b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js @@ -29,24 +29,24 @@ function BumpMetalMaterial() /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - this.getName = function() { return this._name; } - this.getShaderName = function() { return this._shaderName; } + this.getName = function() { return this._name; }; + this.getShaderName = function() { return this._shaderName; }; - this.getLightDiff = function() { return this._lightDiff; } + this.getLightDiff = function() { return this._lightDiff; }; this.setLightDiff = function(ld) { this._lightDiff = ld; if (this._shader && this._shader.default) - this._shader.default.u_light0Diff.set( ld ); } + this._shader.default.u_light0Diff.set( ld ); }; - this.getDiffuseTexture = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null } - this.setDiffuseTexture = function(m) { this._propValues[this._propNames[1]] = m ? m.slice(0) : null; this.updateTexture(1); } + this.getDiffuseTexture = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null }; + this.setDiffuseTexture = function(m) { this._propValues[this._propNames[1]] = m ? m.slice(0) : null; this.updateTexture(1); }; - this.getNormalTexture = function() { return this._propValues[this._propNames[2]] ? this._propValues[this._propNames[2]].slice() : null } - this.setNormalTexture = function(m) { this._propValues[this._propNames[2]] = m ? m.slice(0) : null; this.updateTexture(2); } + this.getNormalTexture = function() { return this._propValues[this._propNames[2]] ? this._propValues[this._propNames[2]].slice() : null }; + this.setNormalTexture = function(m) { this._propValues[this._propNames[2]] = m ? m.slice(0) : null; this.updateTexture(2); }; - this.getSpecularTexture = function() { return this._propValues[this._propNames[3]] ? this._propValues[this._propNames[3]].slice() : null } - this.setSpecularTexture = function(m) { this._propValues[this._propNames[3]] = m ? m.slice(0) : null; this.updateTexture(3); } + this.getSpecularTexture = function() { return this._propValues[this._propNames[3]] ? this._propValues[this._propNames[3]].slice() : null }; + this.setSpecularTexture = function(m) { this._propValues[this._propNames[3]] = m ? m.slice(0) : null; this.updateTexture(3); }; - this.isAnimated = function() { return true; } + this.isAnimated = function() { return true; }; /////////////////////////////////////////////////////////////////////// // Material Property Accessors @@ -86,13 +86,13 @@ function BumpMetalMaterial() console.log( "invalid property to Bump Metal Material: " + prop + ", value: " + value ); break; } - } + }; /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// // duplcate method requirde - this.dup = function() { return new BumpMetalMaterial(); } + this.dup = function() { return new BumpMetalMaterial(); }; this.init = function( world ) { @@ -113,7 +113,7 @@ function BumpMetalMaterial() this.updateTexture(1); this.updateTexture(2); this.updateTexture(3); - } + }; this.updateTexture = function( index ) { @@ -140,7 +140,7 @@ function BumpMetalMaterial() } } } - } + }; this.export = function() { @@ -157,7 +157,7 @@ function BumpMetalMaterial() exportStr += "endMaterial\n"; return exportStr; - } + }; this.import = function( importStr ) { @@ -190,7 +190,7 @@ function BumpMetalMaterial() } return rtnStr; - } + }; } /////////////////////////////////////////////////////////////////////////////////////// @@ -237,7 +237,7 @@ bumpMetalShaderDef = float alpha1 = max(0.0, 1.0 - ( (light1.x*light1.x)/range + (light1.y*light1.y)/range + (light1.z*light1.z)/range));\ 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': { @@ -251,7 +251,7 @@ bumpMetalShaderDef = { 'vert' : { 'type' : 'vec3' }, 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' }, + 'texcoord' : { 'type' : 'vec2' } }, // parameters 'params' : @@ -260,7 +260,7 @@ bumpMetalShaderDef = //'u_matDiffuse' : { 'type' : 'vec4' } 'u_colMap': { 'type' : 'tex2d' }, 'u_normalMap': { 'type' : 'tex2d' }, - 'u_glowMap': { 'type' : 'tex2d' }, + 'u_glowMap': { 'type' : 'tex2d' } }, // render states @@ -268,7 +268,7 @@ bumpMetalShaderDef = { 'depthEnable' : true, 'offset':[1.0, 0.1] - }, + } }, { // light pass 'vshader' : 'dirLightVShader', @@ -277,7 +277,7 @@ bumpMetalShaderDef = 'attributes' : { 'a_pos' : { 'type' : 'vec3' }, - 'a_nrm' : { 'type' : 'vec3' }, + 'a_nrm' : { 'type' : 'vec3' } }, // parameters 'params' : @@ -290,8 +290,8 @@ bumpMetalShaderDef = 'depthEnable' : true, "blendEnable" : true, "srcBlend" : "SRC_ALPHA", - "dstBlend" : "DST_ALPHA", - }, + "dstBlend" : "DST_ALPHA" + } } // light pass ] } // techniques diff --git a/js/helper-classes/RDGE/Materials/FlatMaterial.js b/js/helper-classes/RDGE/Materials/FlatMaterial.js index a250dc0a..570e7f9e 100644 --- a/js/helper-classes/RDGE/Materials/FlatMaterial.js +++ b/js/helper-classes/RDGE/Materials/FlatMaterial.js @@ -26,11 +26,11 @@ function FlatMaterial() /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - this.getColor = function() { return this._color; } - this.getShaderName = function() { return this._shaderName; } + this.getColor = function() { return this._color; }; + this.getShaderName = function() { return this._shaderName; }; - this.isAnimated = function() { return false; } - this.hasVertexDeformation = function() { return true; } + this.isAnimated = function() { return false; }; + this.hasVertexDeformation = function() { return true; }; this._hasVertexDeformation = true; this._vertexDeformationTolerance = 0.2; @@ -38,7 +38,7 @@ function FlatMaterial() // Methods /////////////////////////////////////////////////////////////////////// // duplcate method requirde - this.dup = function() { return new FlatMaterial(); } + this.dup = function() { return new FlatMaterial(); } ; this.init = function() { @@ -53,14 +53,7 @@ function FlatMaterial() // set up the material node this._materialNode = createMaterialNode("flatMaterial"); this._materialNode.setShader(this._shader); - - // initialize the taper properties -// this._shader.colorMe.u_limit1.set( [0.25] ); -// this._shader.colorMe.u_limit2.set( [0.5] ); -// this._shader.colorMe.u_limit3.set( [0.75] ); -// this._shader.colorMe.u_center.set( [0.0] ); -// this._shader.colorMe.u_taperAmount.set( [0.5] ); - } + }; /////////////////////////////////////////////////////////////////////// @@ -82,7 +75,7 @@ function FlatMaterial() if (this._shader && this._shader.colorMe) this._shader.colorMe[prop].set(value); } - } + }; /////////////////////////////////////////////////////////////////////// this.export = function() @@ -98,7 +91,7 @@ function FlatMaterial() exportStr += "endMaterial\n"; return exportStr; - } + }; this.import = function( importStr ) { @@ -125,11 +118,12 @@ function FlatMaterial() } return rtnStr; - } + }; this.update = function( time ) { - } + }; + } /////////////////////////////////////////////////////////////////////////////////////// @@ -139,9 +133,8 @@ function FlatMaterial() flatShaderDef = { 'shaders': { // shader files - //'defaultVShader':"assets/shaders/Taper.vert.glsl", 'defaultVShader':"assets/shaders/Basic.vert.glsl", - 'defaultFShader':"assets/shaders/Basic.frag.glsl", + 'defaultFShader':"assets/shaders/Basic.frag.glsl" }, 'techniques': { // rendering control 'colorMe':[ // simple color pass @@ -154,20 +147,14 @@ flatShaderDef = { 'vert' : { 'type' : 'vec3' }, 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' }, + 'texcoord' : { 'type' : 'vec2' } }, // attributes 'params' : { - 'color' : { 'type' : 'vec4' }, - - //'u_limit1': { 'type': 'float' }, - //'u_limit2': { 'type': 'float' }, - //'u_limit3': { 'type': 'float' }, - //'u_center': { 'type': 'float' }, - //'u_taperAmount': { 'type': 'float' } - }, - }, + 'color' : { 'type' : 'vec4' } + } + } ] } }; diff --git a/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js b/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js index 8b23d77e..7fe2be0c 100644 --- a/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js +++ b/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js @@ -29,50 +29,50 @@ function LinearGradientMaterial() this._colorStop2 = 0.3; this._colorStop3 = 0.6; this._colorStop4 = 1.0; - this._colorCount = 4; +// this._colorCount = 4; this._angle = 0.0; // the shader takes [cos(a), sin(a)] /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - this.getShaderName = function() { return this._shaderName; } - this.getName = function() { return this._name; } + this.getShaderName = function() { return this._shaderName; }; + this.getName = function() { return this._name; }; - this.getColor1 = function() { return this._color1; } + this.getColor1 = function() { return this._color1; }; this.setColor1 = function(c) { this._color1 = c.slice(); if (this._shader && this._shader.default) this._shader.default.u_color1.set(c); - } + }; - this.getColor2 = function() { return this._color2; } + this.getColor2 = function() { return this._color2; }; this.setColor2 = function(c) { this._color2 = c.slice(); if (this._shader && this._shader.default) this._shader.default.u_color2.set(c); - } + }; - this.getColor3 = function() { return this._color3; } + this.getColor3 = function() { return this._color3; }; this.setColor3 = function(c) { this._color3 = c.slice(); if (this._shader && this._shader.default) this._shader.default.u_color3.set(c); - } + }; - this.getColor4 = function() { return this._color4; } + this.getColor4 = function() { return this._color4; }; this.setColor4 = function(c) { this._color4 = c.slice(); if (this._shader && this._shader.default) this._shader.default.u_color4.set(c); - } + }; - this.getColorStop1 = function() { return this._colorStop1; } + this.getColorStop1 = function() { return this._colorStop1; }; this.setColorStop1 = function(s) { this._colorStop1 = s; if (this._shader && this._shader.default) this._shader.default.u_colorStop1.set([s]); - } + }; - this.getColorStop2 = function() { return this._colorStop2; } + this.getColorStop2 = function() { return this._colorStop2; }; this.setColorStop2 = function(s) { this._colorStop2 = s; if (this._shader && this._shader.default) this._shader.default.u_colorStop2.set([s]); - } + }; this.getColorStop3 = function() { return this._colorStop3; } this.setColorStop3 = function(s) { this._colorStop3 = s; @@ -80,37 +80,45 @@ function LinearGradientMaterial() this._shader.default.u_colorStop3.set([s]); } - this.getColorStop4 = function() { return this._colorStop4; } + this.getColorStop4 = function() { return this._colorStop4; }; this.setColorStop4 = function(s) { this._colorStop4 = s; if (this._shader && this._shader.default) this._shader.default.u_colorStop4.set([s]); - } + }; - this.getColorCount = function() { return this._colorCount; } - this.setColorCount = function(c) { this._colorCount = c; - if (this._shader && this._shader.default) - this._shader.default.u_colorCount.set([c]); - } +// this.getColorCount = function() { return this._colorCount; }; +// this.setColorCount = function(c) { this._colorCount = c; +// if (this._shader && this._shader.default) +// this._shader.default.u_colorCount.set([c]); +// }; - this.getAngle = function() { return this._angle; } + this.getAngle = function() { return this._angle; }; this.setAngle = function(a) { this._angle = a; if (this._shader && this._shader.default) this._shader.default.u_cos_sin_angle.set([Math.cos(a), Math.sin(a)]); - } + }; - this.isAnimated = function() { return false; } + this.isAnimated = function() { return false; }; /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this._propNames = ["color1", "color2", "angle"]; - this._propLabels = ["Start Color", "Stop Color", "Angle"]; - this._propTypes = ["color", "color", "float"]; + this._propNames = ["color1", "color2", "color3", "color4", "colorStop1", "colorStop2", "colorStop3", "colorStop4", "angle"]; + this._propLabels = ["Color 1", "Color 2", "Color 3", "Color 4", "Color Stop 1", "Color Stop 2", "Color Stop 3", "Color Stop 4", "Angle"]; + this._propTypes = ["color", "color", "color", "color", "float", "float", "float", "float", "float"]; this._propValues = []; this._propValues[ this._propNames[0] ] = this._color1.slice(0); - this._propValues[ this._propNames[1] ] = this._color4.slice(0); - this._propValues[ this._propNames[2] ] = this._angle; + this._propValues[ this._propNames[1] ] = this._color2.slice(0); + this._propValues[ this._propNames[2] ] = this._color3.slice(0); + this._propValues[ this._propNames[3] ] = this._color4.slice(0); + + this._propValues[ this._propNames[4] ] = this._colorStop1; + this._propValues[ this._propNames[5] ] = this._colorStop2; + this._propValues[ this._propNames[6] ] = this._colorStop3; + this._propValues[ this._propNames[7] ] = this._colorStop4; + + this._propValues[ this._propNames[8] ] = this._angle; this.setProperty = function( prop, value ) { @@ -123,17 +131,23 @@ function LinearGradientMaterial() switch (prop) { - case "color1": this.setColor1( value ); break; - case "color2": this.setColor2( value ); break; - case "angle": this.setAngle( value ); break; + case "color1": this.setColor1( value ); break; + case "color2": this.setColor2( value ); break; + case "color3": this.setColor3( value ); break; + case "color4": this.setColor4( value ); break; + case "colorStop1": this.setColorStop1( value ); break; + case "colorStop2": this.setColorStop2( value ); break; + case "colorStop3": this.setColorStop3( value ); break; + case "colorStop4": this.setColorStop4( value ); break; + case "angle": this.setAngle( value ); break; } - } + }; /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// // duplcate method requirde - this.dup = function() { return new LinearGradientMaterial(); } + this.dup = function() { return new LinearGradientMaterial(); }; this.init = function( world ) { @@ -151,8 +165,8 @@ function LinearGradientMaterial() // send the current values to the shader this.updateShaderValues(); - console.log( "**** LinearGradientMaterial initialized" ); - } + //console.log( "**** LinearGradientMaterial initialized" ); + }; this.updateShaderValues= function() { @@ -182,7 +196,7 @@ function LinearGradientMaterial() this.setAngle( this.getAngle() ); } - } + }; this.export = function() { @@ -190,15 +204,23 @@ function LinearGradientMaterial() var exportStr = "material: " + this.getShaderName() + "\n"; exportStr += "name: " + this.getName() + "\n"; - exportStr += "startColor: " + this.getStartColor() + "\n"; - exportStr += "stopColor: " + this.getStopColor() + "\n"; - exportStr += "angle: " + this.getAngle() + "\n"; + exportStr += "color1: " + this.getColor1() + "\n"; + exportStr += "color2: " + this.getColor2() + "\n"; + exportStr += "color3: " + this.getColor3() + "\n"; + exportStr += "color4: " + this.getColor4() + "\n"; + + exportStr += "colorStop1: " + this.getColorStop1() + "\n"; + exportStr += "colorStop2: " + this.getColorStop2() + "\n"; + exportStr += "colorStop3: " + this.getColorStop3() + "\n"; + exportStr += "colorStop4: " + this.getColorStop4() + "\n"; + + exportStr += "angle: " + this.getAngle() + "\n"; // every material needs to terminate like this exportStr += "endMaterial\n"; return exportStr; - } + }; this.import = function( importStr ) { @@ -210,17 +232,29 @@ function LinearGradientMaterial() var rtnStr; try { - var startColor = eval( "[" + pu.nextValue( "startColor: " ) + "]" ), - stopColor = eval( "[" + pu.nextValue( "stopColor: " ) + "]" ), - angle = eval( "[" + pu.nextValue( "angle: " ) + "]" ); + var color1 = eval( "[" + pu.nextValue( "color1: " ) + "]" ), + color2 = eval( "[" + pu.nextValue( "color2: " ) + "]" ), + color3 = eval( "[" + pu.nextValue( "color3: " ) + "]" ), + color4 = eval( "[" + pu.nextValue( "color4: " ) + "]" ), + colorStop1 = Number(pu.nextValue( "colorStop1: " )), + colorStop2 = Number(pu.nextValue( "colorStop2: " )), + colorStop3 = Number(pu.nextValue( "colorStop3: " )), + colorStop4 = Number(pu.nextValue( "colorStop4: " )), + angle = Number(pu.nextValue( "angle: " ) ); var endKey = "endMaterial\n"; var index = importStr.indexOf( endKey ); index += endKey.length; rtnStr = importStr.substr( index ); - this.setProperty( "startColor", startColor ); - this.setProperty( "stopColor", stopColor ); + this.setProperty( "color1", color1 ); + this.setProperty( "color2", color2 ); + this.setProperty( "color3", color3 ); + this.setProperty( "color4", color4 ); + this.setProperty( "colorStop1", colorStop1 ); + this.setProperty( "colorStop2", colorStop2 ); + this.setProperty( "colorStop3", colorStop3 ); + this.setProperty( "colorStop4", colorStop4 ); this.setProperty( "angle", angle ); } catch (e) @@ -229,7 +263,7 @@ function LinearGradientMaterial() } return rtnStr; - } + }; } /////////////////////////////////////////////////////////////////////////////////////// @@ -239,7 +273,7 @@ function LinearGradientMaterial() var linearGradientMaterialDef = {'shaders': { - // Brick shader + // shader file 'defaultVShader':"assets/shaders/linearGradient.vert.glsl", 'defaultFShader':"assets/shaders/linearGradient.frag.glsl", @@ -274,7 +308,7 @@ var linearGradientMaterialDef = float alpha1 = max(0.0, 1.0 - ( (light1.x*light1.x)/range + (light1.y*light1.y)/range + (light1.z*light1.z)/range));\ 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': { @@ -288,7 +322,7 @@ var linearGradientMaterialDef = { 'vert' : { 'type' : 'vec3' }, 'normal' : { 'type' : 'vec3' }, - 'texcoord' : { 'type' : 'vec2' }, + 'texcoord' : { 'type' : 'vec2' } }, // parameters 'params' : @@ -311,7 +345,7 @@ var linearGradientMaterialDef = { 'depthEnable' : true, 'offset':[1.0, 0.1] - }, + } }, { // light pass 'vshader' : 'dirLightVShader', @@ -320,7 +354,7 @@ var linearGradientMaterialDef = 'attributes' : { 'a_pos' : { 'type' : 'vec3' }, - 'a_nrm' : { 'type' : 'vec3' }, + 'a_nrm' : { 'type' : 'vec3' } }, // parameters 'params' : @@ -333,8 +367,8 @@ var linearGradientMaterialDef = 'depthEnable' : true, "blendEnable" : true, "srcBlend" : "SRC_ALPHA", - "dstBlend" : "DST_ALPHA", - }, + "dstBlend" : "DST_ALPHA" + } } ] } diff --git a/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js b/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js index 50833f4f..12842798 100644 --- a/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js +++ b/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js @@ -29,7 +29,7 @@ function RadialGradientMaterial() this._colorStop2 = 0.3; this._colorStop3 = 0.6; this._colorStop4 = 1.0; - this._colorCount = 4; +// this._colorCount = 4; /////////////////////////////////////////////////////////////////////// // Property Accessors @@ -98,14 +98,20 @@ function RadialGradientMaterial() /////////////////////////////////////////////////////////////////////// // Material Property Accessors /////////////////////////////////////////////////////////////////////// - this._propNames = ["color1", "color2", "angle"]; - this._propLabels = ["Start Color", "Stop Color", "Angle"]; - this._propTypes = ["color", "color", "float"]; - this._propValues = []; + this._propNames = ["color1", "color2", "color3", "color4", "colorStop1", "colorStop2", "colorStop3", "colorStop4", "angle"]; + this._propLabels = ["Color 1", "Color 2", "Color 3", "Color 4", "Color Stop 1", "Color Stop 2", "Color Stop 3", "Color Stop 4", "Angle"]; + this._propTypes = ["color", "color", "color", "color", "float", "float", "float", "float", "float"]; + this._propValues = []; - this._propValues[ this._propNames[0] ] = this._color1.slice(0); - this._propValues[ this._propNames[1] ] = this._color4.slice(0); - this._propValues[ this._propNames[2] ] = this._angle; + this._propValues[ this._propNames[0] ] = this._color1.slice(0); + this._propValues[ this._propNames[1] ] = this._color2.slice(0); + this._propValues[ this._propNames[2] ] = this._color3.slice(0); + this._propValues[ this._propNames[3] ] = this._color4.slice(0); + + this._propValues[ this._propNames[4] ] = this._colorStop1; + this._propValues[ this._propNames[5] ] = this._colorStop2; + this._propValues[ this._propNames[6] ] = this._colorStop3; + this._propValues[ this._propNames[7] ] = this._colorStop4; this.setProperty = function( prop, value ) { @@ -116,14 +122,20 @@ function RadialGradientMaterial() if (!ok) console.log( "invalid property in Radial Gradient Material:" + prop + " : " + value ); - switch (prop) - { - case "color1": this.setColor1( value ); break; - case "color2": this.setColor2( value ); break; - case "angle": this.setAngle( value ); break; - } - - this.updateValuesInShader(); + switch (prop) + { + case "color1": this.setColor1( value ); break; + case "color2": this.setColor2( value ); break; + case "color3": this.setColor3( value ); break; + case "color4": this.setColor4( value ); break; + case "colorStop1": this.setColorStop1( value ); break; + case "colorStop2": this.setColorStop2( value ); break; + case "colorStop3": this.setColorStop3( value ); break; + case "colorStop4": this.setColorStop4( value ); break; + case "angle": this.setAngle( value ); break; + } + + //this.updateValuesInShader(); } /////////////////////////////////////////////////////////////////////// @@ -183,10 +195,15 @@ function RadialGradientMaterial() var exportStr = "material: " + this.getShaderName() + "\n"; exportStr += "name: " + this.getName() + "\n"; - exportStr += "innerCircleRadius: " + this.getInnerCircleRadius() + "\n"; - exportStr += "mainCircleRadius: " + this.getMainCircleRadius() + "\n"; - exportStr += "innerCircleCenter: " + String(this.getInnerCircleCenter()) + "\n"; - exportStr += "mainCircleCenter: " + String(this.getMainCircleCenter()) + "\n"; + exportStr += "color1: " + this.getColor1() + "\n"; + exportStr += "color2: " + this.getColor2() + "\n"; + exportStr += "color3: " + this.getColor3() + "\n"; + exportStr += "color4: " + this.getColor4() + "\n"; + + exportStr += "colorStop1: " + this.getColorStop1() + "\n"; + exportStr += "colorStop2: " + this.getColorStop2() + "\n"; + exportStr += "colorStop3: " + this.getColorStop3() + "\n"; + exportStr += "colorStop4: " + this.getColorStop4() + "\n"; // every material needs to terminate like this exportStr += "endMaterial\n"; @@ -204,16 +221,23 @@ function RadialGradientMaterial() var rtnStr; try { - var innerCircleRadius = Number( pu.nextValue("innerCircleRadius: ") ), - mainCircleRadius = Number( pu.nextValue("mainCircleRadius: ") ), - innerCircleCenter = eval( "[" + pu.nextValue( "innerCircleCenter: " ) + "]" ); - mainCircleCenter = eval( "[" + pu.nextValue( "mainCircleCenter: " ) + "]" ); - - this._innerCircleRadius = innerCircleRadius; - this._mainCircleRadius = mainCircleRadius; - this._innerCircleCenter = innerCircleCenter; - this.mainCircleCenter = mainCircleCenter; - this.updateValuesInShader(); + var color1 = eval( "[" + pu.nextValue( "color1: " ) + "]" ), + color2 = eval( "[" + pu.nextValue( "color2: " ) + "]" ), + color3 = eval( "[" + pu.nextValue( "color3: " ) + "]" ), + color4 = eval( "[" + pu.nextValue( "color4: " ) + "]" ), + colorStop1 = Number(pu.nextValue( "colorStop1: " )), + colorStop2 = Number(pu.nextValue( "colorStop2: " )), + colorStop3 = Number(pu.nextValue( "colorStop3: " )), + colorStop4 = Number(pu.nextValue( "colorStop4: " )); + + this.setProperty( "color1", color1 ); + this.setProperty( "color2", color2 ); + this.setProperty( "color3", color3 ); + this.setProperty( "color4", color4 ); + this.setProperty( "colorStop1", colorStop1 ); + this.setProperty( "colorStop2", colorStop2 ); + this.setProperty( "colorStop3", colorStop3 ); + this.setProperty( "colorStop4", colorStop4 ); var endKey = "endMaterial\n"; var index = importStr.indexOf( endKey ); @@ -263,7 +287,7 @@ var radialGradientMaterialDef = 'u_colorStop1': { 'type' : 'float' }, 'u_colorStop2': { 'type' : 'float' }, 'u_colorStop3': { 'type' : 'float' }, - 'u_colorStop4': { 'type' : 'float' }, + 'u_colorStop4': { 'type' : 'float' } //'u_colorCount': {'type' : 'int' } }, diff --git a/js/helper-classes/RDGE/Materials/UberMaterial.js b/js/helper-classes/RDGE/Materials/UberMaterial.js index 8385f2d6..c7855c95 100644 --- a/js/helper-classes/RDGE/Materials/UberMaterial.js +++ b/js/helper-classes/RDGE/Materials/UberMaterial.js @@ -21,7 +21,7 @@ function UberMaterial() /////////////////////////////////////////////////////////////////////// this._name = "UberMaterial"; this._shaderName = "uber"; - this.getShaderName = function() { return this._shaderName; } + this.getShaderName = function() { return this._shaderName; }; // set some default values this._ambientColor = [ 0.0, 0.0, 0.0, 1.0 ]; @@ -99,7 +99,7 @@ function UberMaterial() break; } } - } + }; /////////////////////////////////////////////////////////////////////// // define the 4 lights @@ -190,7 +190,7 @@ function UberMaterial() var technique = material.shaderProgram.defaultTechnique; technique.u_ambientColor.set(this._ambientColor); } - } + }; this.updateDiffuseColor = function() { @@ -202,7 +202,7 @@ function UberMaterial() var technique = material.shaderProgram.defaultTechnique; technique.u_diffuseColor.set(this._diffuseColor); } - } + }; this.updateSpecularColor = function( value ) { @@ -214,7 +214,7 @@ function UberMaterial() var technique = material.shaderProgram.defaultTechnique; technique.u_specularColor.set(this._specularColor); } - } + }; this.updateSpecularPower = function( value) { @@ -226,7 +226,7 @@ function UberMaterial() var technique = material.shaderProgram.defaultTechnique; technique.u_specularPower.set([this._specularPower]); } - } + }; this.updateEnvironmentAmount = function(value) { @@ -238,7 +238,7 @@ function UberMaterial() var technique = material.shaderProgram.defaultTechnique; technique.u_envReflection.set([this._environmentMapOb.envReflection]); } - } + }; this.updateEnvironmentMap = function() { @@ -276,7 +276,7 @@ function UberMaterial() } } } - } + }; this.updateDiffuseMap = function(value) { @@ -314,7 +314,7 @@ function UberMaterial() } } } - } + }; this.updateSpecularMap = function() { @@ -352,7 +352,7 @@ function UberMaterial() } } } - } + }; this.updateNormalMap = function(value) { @@ -390,7 +390,7 @@ function UberMaterial() } } } - } + }; // duplcate method requirde this.dup = function() @@ -413,7 +413,7 @@ function UberMaterial() newMat.setProperty( propNames[i], propValues[i] ); return newMat; - } + }; this.init = function( world ) { @@ -426,7 +426,7 @@ function UberMaterial() // set up the material node this._materialNode = createMaterialNode("uberMaterial"); this._materialNode.setShader(this._shader); - } + }; this.buildUberShader = function(caps) { @@ -446,7 +446,7 @@ function UberMaterial() { preproc += '#define LIGHTING\n'; preproc += '#define SPECULAR\n'; - for(i = 0; i < 4; ++i) { + for(var i = 0; i < 4; ++i) { var light = caps.lighting['light' + i]; var t; if (typeof light != 'undefined') { @@ -507,7 +507,7 @@ function UberMaterial() var fshader = preproc + uberFShader; // build output jshader - uberJShader = new jshader(); + var uberJShader = new jshader(); uberJShader.def = { 'shaders': { 'defaultVShader': vshader, @@ -520,18 +520,18 @@ function UberMaterial() 'attributes' : { 'a_pos' : { 'type' : 'vec3' }, 'a_normal' : { 'type' : 'vec3' }, - 'a_texcoord' : { 'type' : 'vec2' }, + 'a_texcoord' : { 'type' : 'vec2' } }, 'params' : paramBlock, 'states' : { 'depthEnable' : true, 'blendEnable' : false, 'culling' : true, - 'cullFace' : "FRONT", - }, + 'cullFace' : "FRONT" + } }] } - } + }; // initialize the jshader try { @@ -584,7 +584,7 @@ function UberMaterial() } technique.u_uvMatrix.set(caps.uvTransform || mat4.identity()); - renderer = g_Engine.getContext().renderer; + var renderer = g_Engine.getContext().renderer; if(this._useDiffuseMap) { var tex = renderer.getTextureByName(caps.diffuseMap.texture, caps.diffuseMap.wrap, caps.diffuseMap.mips); this.registerTexture( tex ); @@ -608,7 +608,7 @@ function UberMaterial() } return uberJShader; - } + }; this.rebuildShader = function() { @@ -667,7 +667,7 @@ function UberMaterial() var material = this._materialNode; if (material) material.setShader( buildUbershader(this._ubershaderCaps) ); - } + }; } -- cgit v1.2.3