aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/Materials
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/Materials')
-rw-r--r--js/helper-classes/RDGE/Materials/BumpMetalMaterial.js66
-rw-r--r--js/helper-classes/RDGE/Materials/FlatMaterial.js59
-rw-r--r--js/helper-classes/RDGE/Materials/IridescentScalesMaterial.js5
-rw-r--r--js/helper-classes/RDGE/Materials/JuliaMaterial.js3
-rw-r--r--js/helper-classes/RDGE/Materials/KeleidoscopeMaterial.js3
-rw-r--r--js/helper-classes/RDGE/Materials/LinearGradientMaterial.js4
-rw-r--r--js/helper-classes/RDGE/Materials/MandelMaterial.js4
-rw-r--r--js/helper-classes/RDGE/Materials/PlasmaMaterial.js2
-rw-r--r--js/helper-classes/RDGE/Materials/PulseMaterial.js15
-rw-r--r--js/helper-classes/RDGE/Materials/RadialBlurMaterial.js3
-rw-r--r--js/helper-classes/RDGE/Materials/RadialGradientMaterial.js188
-rw-r--r--js/helper-classes/RDGE/Materials/TunnelMaterial.js3
-rw-r--r--js/helper-classes/RDGE/Materials/TwistMaterial.js3
-rw-r--r--js/helper-classes/RDGE/Materials/UberMaterial.js25
14 files changed, 258 insertions, 125 deletions
diff --git a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js
index 59720611..999d4676 100644
--- a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js
+++ b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js
@@ -22,9 +22,9 @@ function BumpMetalMaterial()
22 this._shaderName = "bumpMetal"; 22 this._shaderName = "bumpMetal";
23 23
24 this._lightDiff = [0.3, 0.3, 0.3, 1.0]; 24 this._lightDiff = [0.3, 0.3, 0.3, 1.0];
25 this._diffuseTexture = "metal"; 25 this._diffuseTexture = "assets/images/metal.png";
26 this._specularTexture = "silver"; 26 this._specularTexture = "assets/images/silver.png";
27 this._normalTexture = "normalMap"; 27 this._normalTexture = "assets/images/normalMap.png";
28 28
29 /////////////////////////////////////////////////////////////////////// 29 ///////////////////////////////////////////////////////////////////////
30 // Property Accessors 30 // Property Accessors
@@ -37,17 +37,16 @@ function BumpMetalMaterial()
37 if (this._shader && this._shader.default) 37 if (this._shader && this._shader.default)
38 this._shader.default.u_light0Diff.set( ld ); } 38 this._shader.default.u_light0Diff.set( ld ); }
39 39
40 this.getDiffuseTexture = function() { return this._diffuseTexture; } 40 this.getDiffuseTexture = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null }
41 this.setDiffuseTexture = function(dt) { this._diffuseTexture = dt; 41 this.setDiffuseTexture = function(m) { this._propValues[this._propNames[1]] = m ? m.slice(0) : null; this.updateTexture(1); }
42 if (this._materialNode) this._materialNode.setDiffuseTexture( dt ); }
43 42
44 this.getSpecularTexture = function() { return this._specularTexture; } 43 this.getNormalTexture = function() { return this._propValues[this._propNames[2]] ? this._propValues[this._propNames[2]].slice() : null }
45 this.setSpecularTexture = function(st) { this._specularTexture = st; 44 this.setNormalTexture = function(m) { this._propValues[this._propNames[2]] = m ? m.slice(0) : null; this.updateTexture(2); }
46 if (this._materialNode) this._materialNode.setSpecularTexture( st ); }
47 45
48 this.getNormalTexture = function() { return this._normalTexture; } 46 this.getSpecularTexture = function() { return this._propValues[this._propNames[3]] ? this._propValues[this._propNames[3]].slice() : null }
49 this.setNormalTexture = function(nt) { this._normalTexture = nt; 47 this.setSpecularTexture = function(m) { this._propValues[this._propNames[3]] = m ? m.slice(0) : null; this.updateTexture(3); }
50 if (this._materialNode) this._materialNode.setNormalTexture( nt ); } 48
49 this.isAnimated = function() { return true; }
51 50
52 /////////////////////////////////////////////////////////////////////// 51 ///////////////////////////////////////////////////////////////////////
53 // Material Property Accessors 52 // Material Property Accessors
@@ -59,7 +58,7 @@ function BumpMetalMaterial()
59 58
60 this._propValues[ this._propNames[0] ] = this._lightDiff.slice(0); 59 this._propValues[ this._propNames[0] ] = this._lightDiff.slice(0);
61 this._propValues[ this._propNames[1] ] = this._diffuseTexture.slice(0); 60 this._propValues[ this._propNames[1] ] = this._diffuseTexture.slice(0);
62 this._propValues[ this._propNames[2] ] = this._specularTexture.slice(0); 61 this._propValues[ this._propNames[2] ] = this._normalTexture.slice(0);
63 this._propValues[ this._propNames[3] ] = this._specularTexture.slice(0); 62 this._propValues[ this._propNames[3] ] = this._specularTexture.slice(0);
64 63
65 // TODO - shader techniques are not all named the same, i.e., FlatMaterial uses "colorMe" and BrickMaterial uses "default" 64 // TODO - shader techniques are not all named the same, i.e., FlatMaterial uses "colorMe" and BrickMaterial uses "default"
@@ -95,8 +94,11 @@ function BumpMetalMaterial()
95 // duplcate method requirde 94 // duplcate method requirde
96 this.dup = function() { return new BumpMetalMaterial(); } 95 this.dup = function() { return new BumpMetalMaterial(); }
97 96
98 this.init = function() 97 this.init = function( world )
99 { 98 {
99 // save the world
100 if (world) this.setWorld( world );
101
100 // set up the shader 102 // set up the shader
101 this._shader = new jshader(); 103 this._shader = new jshader();
102 this._shader.def = bumpMetalMaterialDef; 104 this._shader.def = bumpMetalMaterialDef;
@@ -108,9 +110,36 @@ function BumpMetalMaterial()
108 this._materialNode.setShader(this._shader); 110 this._materialNode.setShader(this._shader);
109 111
110 // set some image maps 112 // set some image maps
111 this._materialNode.setDiffuseTexture( this.getDiffuseTexture() ); 113 this.updateTexture(1);
112 this._materialNode.setSpecTexture( this.getSpecularTexture() ); 114 this.updateTexture(2);
113 this._materialNode.setNormalTexture( this.getNormalTexture() ); 115 this.updateTexture(3);
116 }
117
118 this.updateTexture = function( index )
119 {
120 var material = this._materialNode;
121 if (material)
122 {
123 var technique = material.shaderProgram.default;
124 var renderer = g_Engine.getContext().renderer;
125 if (renderer && technique)
126 {
127 var texMapName = this._propValues[this._propNames[index]];
128 var wrap = 'REPEAT', mips = true;
129 var tex = this.loadTexture( texMapName, wrap, mips );
130
131 if (tex)
132 {
133 switch (index)
134 {
135 case 1: technique.u_colMap.set( tex ); break;
136 case 2: technique.u_normalMap.set( tex ); break;
137 case 3: technique.u_glowMap.set( tex ); break;
138 default: console.log( "invalid map index in BumpMetalMaterial, " + index );
139 }
140 }
141 }
142 }
114 } 143 }
115 144
116 this.export = function() 145 this.export = function()
@@ -229,6 +258,9 @@ bumpMetalShaderDef =
229 { 258 {
230 'u_light0Diff' : { 'type' : 'vec4' }, 259 'u_light0Diff' : { 'type' : 'vec4' },
231 //'u_matDiffuse' : { 'type' : 'vec4' } 260 //'u_matDiffuse' : { 'type' : 'vec4' }
261 'u_colMap': { 'type' : 'tex2d' },
262 'u_normalMap': { 'type' : 'tex2d' },
263 'u_glowMap': { 'type' : 'tex2d' },
232 }, 264 },
233 265
234 // render states 266 // render states
diff --git a/js/helper-classes/RDGE/Materials/FlatMaterial.js b/js/helper-classes/RDGE/Materials/FlatMaterial.js
index a5c079a8..83da145e 100644
--- a/js/helper-classes/RDGE/Materials/FlatMaterial.js
+++ b/js/helper-classes/RDGE/Materials/FlatMaterial.js
@@ -29,6 +29,8 @@ function FlatMaterial()
29 this.getColor = function() { return this._color; } 29 this.getColor = function() { return this._color; }
30 this.getShaderName = function() { return this._shaderName; } 30 this.getShaderName = function() { return this._shaderName; }
31 31
32 this.isAnimated = function() { return false; }
33
32 //////////////////////////////////s///////////////////////////////////// 34 //////////////////////////////////s/////////////////////////////////////
33 // Methods 35 // Methods
34 /////////////////////////////////////////////////////////////////////// 36 ///////////////////////////////////////////////////////////////////////
@@ -48,6 +50,12 @@ function FlatMaterial()
48 // set up the material node 50 // set up the material node
49 this._materialNode = createMaterialNode("flatMaterial"); 51 this._materialNode = createMaterialNode("flatMaterial");
50 this._materialNode.setShader(this._shader); 52 this._materialNode.setShader(this._shader);
53
54 // initialize the taper properties
55// this._shader.colorMe.u_limit1.set( [0.25] );
56// this._shader.colorMe.u_limit2.set( [0.5] );
57// this._shader.colorMe.u_limit3.set( [0.75] );
58// this._shader.colorMe.u_taperAmount.set( [0.5] );
51 } 59 }
52 60
53 61
@@ -68,7 +76,7 @@ function FlatMaterial()
68 { 76 {
69 this._propValues[prop] = value; 77 this._propValues[prop] = value;
70 if (this._shader && this._shader.colorMe) 78 if (this._shader && this._shader.colorMe)
71 this._shader.colorMe[prop].set(value); 79 this._shader.colorMe[prop].set(value);
72 } 80 }
73 } 81 }
74 /////////////////////////////////////////////////////////////////////// 82 ///////////////////////////////////////////////////////////////////////
@@ -88,11 +96,11 @@ function FlatMaterial()
88 return exportStr; 96 return exportStr;
89 } 97 }
90 98
91 this.import = function( importStr ) 99 this.import = function( importStr )
92 { 100 {
93 var pu = new ParseUtils( importStr ); 101 var pu = new ParseUtils( importStr );
94 var material = pu.nextValue( "material: " ); 102 var material = pu.nextValue( "material: " );
95 if (material != this.getShaderName()) throw new Error( "ill-formed material" ); 103 if (material != this.getShaderName()) throw new Error( "ill-formed material" );
96 this.setName( pu.nextValue( "name: ") ); 104 this.setName( pu.nextValue( "name: ") );