aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/Materials
diff options
context:
space:
mode:
authorPushkar Joshi2012-02-02 11:28:45 -0800
committerPushkar Joshi2012-02-02 11:28:45 -0800
commitacc500d1f1c76f4e7c93ae1cfea8d925ca95e7b9 (patch)
tree877f8ca734228c11050b037ce82fc0d1e1303193 /js/helper-classes/RDGE/Materials
parent4d4de64472603426a73b26cc98ba8206190949b8 (diff)
parent4222db97e353fb65fab787ba5927d16d9fa4e1f7 (diff)
downloadninja-acc500d1f1c76f4e7c93ae1cfea8d925ca95e7b9.tar.gz
Merge branch 'working' of c:/Code/github/emueller/ninja-internal/ into pentool
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.js43
-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, 249 insertions, 118 deletions
diff --git a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js
index 0aa3ee78..17be0cd7 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 5177a8a0..3e3ae25e 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
@@ -100,10 +108,11 @@ function FlatMaterial()
100 var rtnStr = importStr.substr( index ); 108 var rtnStr = importStr.substr( index );
101 return rtnStr; 109 return rtnStr;
102 } 110 }
103}
104 111
105// used to create unique names 112 this.update = function( time )
106var flatMaterialCounter = 0; 113 {
114 }
115}
107 116
108/////////////////////////////////////////////////////////////////////////////////////// 117///////////////////////////////////////////////////////////////////////////////////////
109// RDGE shader 118// RDGE shader
@@ -112,35 +121,31 @@ var flatMaterialCounter = 0;
112flatShaderDef = 121flatShaderDef =
113{ 122{