aboutsummaryrefslogtreecommitdiff
path: root/js/lib/rdge
diff options
context:
space:
mode:
authorhwc4872012-03-08 17:29:18 -0800
committerhwc4872012-03-08 17:29:18 -0800
commit7b6e8194b91168abdeb94702eb350d14f147858b (patch)
tree6c21426b2cfc54501b06d5a1b98139abf532bf75 /js/lib/rdge
parent11a6f18e274d7232cdbb8f6e9e65e0a5ab756451 (diff)
downloadninja-7b6e8194b91168abdeb94702eb350d14f147858b.tar.gz
Canvas IO
Diffstat (limited to 'js/lib/rdge')
-rwxr-xr-xjs/lib/rdge/materials/bump-metal-material.js10
-rw-r--r--js/lib/rdge/materials/pulse-material.js8
-rw-r--r--js/lib/rdge/materials/radial-blur-material.js6
-rw-r--r--js/lib/rdge/materials/taper-material.js2
-rwxr-xr-xjs/lib/rdge/materials/uber-material.js46
-rw-r--r--js/lib/rdge/runtime/CanvasDataManager.js83
-rw-r--r--js/lib/rdge/runtime/CanvasRuntime.js1338
-rw-r--r--js/lib/rdge/runtime/GLRuntime.js357
-rw-r--r--js/lib/rdge/runtime/RuntimeGeomObj.js633
-rw-r--r--js/lib/rdge/runtime/RuntimeMaterial.js351
10 files changed, 1399 insertions, 1435 deletions
diff --git a/js/lib/rdge/materials/bump-metal-material.js b/js/lib/rdge/materials/bump-metal-material.js
index 67b16371..70873885 100755
--- a/js/lib/rdge/materials/bump-metal-material.js
+++ b/js/lib/rdge/materials/bump-metal-material.js
@@ -158,10 +158,14 @@ var BumpMetalMaterial = function BumpMetalMaterial() {
158 var exportStr = "material: " + this.getShaderName() + "\n"; 158 var exportStr = "material: " + this.getShaderName() + "\n";
159 exportStr += "name: " + this.getName() + "\n"; 159 exportStr += "name: " + this.getName() + "\n";
160 160
161 var world = this.getWorld();
162 if (!world)
163 throw new Error( "no world in material.export, " + this.getName() );
164
161 exportStr += "lightDiff: " + this.getLightDiff() + "\n"; 165 exportStr += "lightDiff: " + this.getLightDiff() + "\n";
162 exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n"; 166 exportStr += "diffuseTexture: " + world.cleansePath(this.getDiffuseTexture()) + "\n";
163 exportStr += "specularTexture: " + this.getSpecularTexture() + "\n"; 167 exportStr += "specularTexture: " + world.cleansePath(this.getSpecularTexture()) + "\n";
164 exportStr += "normalMap: " + this.getNormalTexture() + "\n"; 168 exportStr += "normalMap: " + world.cleansePath(this.getNormalTexture()) + "\n";
165 169
166 // every material needs to terminate like this 170 // every material needs to terminate like this
167 exportStr += "endMaterial\n"; 171 exportStr += "endMaterial\n";
diff --git a/js/lib/rdge/materials/pulse-material.js b/js/lib/rdge/materials/pulse-material.js
index 1e3137eb..8ad78bd4 100644
--- a/js/lib/rdge/materials/pulse-material.js
+++ b/js/lib/rdge/materials/pulse-material.js
@@ -179,8 +179,12 @@ var PulseMaterial = function PulseMaterial() {
179 var exportStr = "material: " + this.getShaderName() + "\n"; 179 var exportStr = "material: " + this.getShaderName() + "\n";
180 exportStr += "name: " + this.getName() + "\n"; 180 exportStr += "name: " + this.getName() + "\n";
181 181
182 var texMapName = this._propValues[this._propNames[0]]; 182 var world = this.getWorld();
183 exportStr += "texture: " + texMapName + "\n"; 183 if (!world)
184 throw new Error( "no world in material.export, " + this.getName() );
185
186 var texMapName = world.cleansePath( this._propValues[this._propNames[0]] );
187 exportStr += "texture: " +texMapName + "\n";
184 188
185 // every material needs to terminate like this 189 // every material needs to terminate like this
186 exportStr += "endMaterial\n"; 190 exportStr += "endMaterial\n";
diff --git a/js/lib/rdge/materials/radial-blur-material.js b/js/lib/rdge/materials/radial-blur-material.js
index d0d05e8d..f23f0712 100644
--- a/js/lib/rdge/materials/radial-blur-material.js
+++ b/js/lib/rdge/materials/radial-blur-material.js
@@ -162,7 +162,11 @@ var RadialBlurMaterial = function RadialBlurMaterial() {
162 var exportStr = "material: " + this.getShaderName() + "\n"; 162 var exportStr = "material: " + this.getShaderName() + "\n";
163 exportStr += "name: " + this.getName() + "\n"; 163 exportStr += "name: " + this.getName() + "\n";
164 164
165 var texMapName = this._propValues[this._propNames[0]]; 165 var world = this.getWorld();
166 if (!world)
167 throw new Error( "no world in material.export, " + this.getName() );
168
169 var texMapName = world.cleansePath( this._propValues[this._propNames[0]] );
166 exportStr += "texture: " + texMapName + "\n"; 170 exportStr += "texture: " + texMapName + "\n";
167 171
168 // every material needs to terminate like this 172 // every material needs to terminate like this
diff --git a/js/lib/rdge/materials/taper-material.js b/js/lib/rdge/materials/taper-material.js
index bd89f08f..03a7ba9c 100644
--- a/js/lib/rdge/materials/taper-material.js
+++ b/js/lib/rdge/materials/taper-material.js
@@ -104,7 +104,7 @@ function TaperMaterial()
104 exportStr += "name: " + this.getName() + "\n"; 104 exportStr += "name: " + this.getName() + "\n";
105 105
106 if (this._shader) 106 if (this._shader)
107 exportStr += "color: " + String(this._shader.colorMe.color) + "\n"; 107 exportStr += "color: " + this._shader.colorMe.color + "\n";
108 else 108 else
109 exportStr += "color: " + this.getColor() + "\n"; 109 exportStr += "color: " + this.getColor() + "\n";
110 exportStr += "endMaterial\n"; 110 exportStr += "endMaterial\n";
diff --git a/js/lib/rdge/materials/uber-material.js b/js/lib/rdge/materials/uber-material.js
index 0964c9c4..d120ffa1 100755
--- a/js/lib/rdge/materials/uber-material.js
+++ b/js/lib/rdge/materials/uber-material.js
@@ -33,6 +33,8 @@ var UberMaterial = function UberMaterial() {
33 this._useEnvironmentMap = true; 33 this._useEnvironmentMap = true;
34 this._useLights = [true, true, true, true]; 34 this._useLights = [true, true, true, true];
35 35
36 this._MAX_LIGHTS = 4;
37
36 /////////////////////////////////////////////////////////////////////// 38 ///////////////////////////////////////////////////////////////////////
37 // Material Property Accessors 39 // Material Property Accessors
38 /////////////////////////////////////////////////////////////////////// 40 ///////////////////////////////////////////////////////////////////////
@@ -374,6 +376,18 @@ var UberMaterial = function UberMaterial() {
374 var index = importStr.indexOf( endKey ); 376 var index = importStr.indexOf( endKey );
375 index += endKey.length; 377 index += endKey.length;
376 importStr = importStr.substr( index ); 378 importStr = importStr.substr( index );
379 var pu = new MaterialParser( importStr );
380
381 var matProps = pu.nextValue( "materialProps: " );
382 if (matProps)
383 {
384 var ambientColor = Number( pu.nextValue( "ambientColor: " )); this.setProperty( "ambientColor", ambientColor );
385 var diffuseColor = Number( pu.nextValue( "diffuseColor: " )); this.setProperty( "diffuseColor", diffuseColor );
386 var specularColor = Number( pu.nextValue( "specularColor: " )); this.setProperty( "specularColor", specularColor );
387 var specularPower = Number( pu.nextValue( "specularPower: " )); this.setProperty( "specularPower", specularPower );
388 }
389
390 var lightProps = pu.nextValue( "theLights" );
377 } 391 }
378 392
379 this.export = function() 393 this.export = function()
@@ -387,7 +401,7 @@ var UberMaterial = function UberMaterial() {
387 // export the material properties 401 // export the material properties
388 if (typeof caps.material != 'undefined') 402 if (typeof caps.material != 'undefined')
389 { 403 {
390 exportStr += "material: true\n"; 404 exportStr += "materialProps: true\n";
391 exportStr += "ambientColor: " + caps.material.ambientColor + "\n"; 405 exportStr += "ambientColor: " + caps.material.ambientColor + "\n";
392 exportStr += "diffuseColor: " + caps.material.diffuseColor + "\n"; 406 exportStr += "diffuseColor: " + caps.material.diffuseColor + "\n";
393 exportStr += "specularColor: " + caps.material.specularColor + "\n"; 407 exportStr += "specularColor: " + caps.material.specularColor + "\n";
@@ -396,8 +410,9 @@ var UberMaterial = function UberMaterial() {
396 410
397 if (typeof caps.lighting != 'undefined') 411 if (typeof caps.lighting != 'undefined')
398 { 412 {
413 exportStr += "lightProps: true\n";
414
399 var light = caps.lighting['light' + i]; 415 var light = caps.lighting['light' + i];
400 var t;
401 for (var i=0; i<this._MAX_LIGHTS; i++) 416 for (var i=0; i<this._MAX_LIGHTS; i++)
402 { 417 {
403 var light = caps.lighting["light" + i]; 418 var light = caps.lighting["light" + i];
@@ -405,6 +420,7 @@ var UberMaterial = function UberMaterial() {
405 { 420 {
406 exportStr += "light" + i + ': ' + light.type + "\n"; 421 exportStr += "light" + i + ': ' + light.type + "\n";
407 422
423 // output the light secific data
408 if (light.type === 'directional') 424 if (light.type === 'directional')
409 { 425 {
410 exportStr += 'light' + i + 'Dir: ' + light['direction'] + '\n'; 426 exportStr += 'light' + i + 'Dir: ' + light['direction'] + '\n';
@@ -419,9 +435,11 @@ var UberMaterial = function UberMaterial() {
419 } 435 }
420 else // light.type === 'point' 436 else // light.type === 'point'
421 { 437 {
422 technique['u_light'+i+'Pos'].set(light['position'] || [ 0, 0, 0 ]); 438 exportStr += 'light' + i + 'Pos: ' + (light['position'] || [ 0, 0, 0 ]) ;
423 technique['u_light'+i+'Atten'].set(light['attenuation'] || [ 1,0,0 ]); 439 exportStr += 'light' + i + 'Attenuation: ' + (light['attenuation'] || [ 1, 0, 0 ]) ;
424 } 440 }
441
442 // common to all lights
425 exportStr += 'light' + i + 'Color: ' + light['diffuseColor'] || [ 1,1,1,1 ] + '\n'; 443 exportStr += 'light' + i + 'Color: ' + light['diffuseColor'] || [ 1,1,1,1 ] + '\n';
426 exportStr += 'light' + i + 'SpecularColor: ' + light['specularColor'] || [ 1, 1, 1, 1 ] + '\n'; 444 exportStr += 'light' + i + 'SpecularColor: ' + light['specularColor'] || [ 1, 1, 1, 1 ] + '\n';
427 445
@@ -429,6 +447,26 @@ var UberMaterial = function UberMaterial() {
429 } 447 }
430 } 448 }
431 } 449 }
450
451// this._diffuseMapOb = { 'texture' : 'assets/images/rocky-diffuse.jpg', 'wrap' : 'REPEAT' };
452// this._normalMapOb = { 'texture' : 'assets/images/rocky-normal.jpg', 'wrap' : 'REPEAT' };
453// this._specularMapOb = { 'texture' : 'assets/images/rocky-spec.jpg', 'wrap' : 'REPEAT' };
454// this._environmentMapOb = { 'texture' : 'assets/images/silver.png', 'wrap' : 'CLAMP', 'envReflection' : this._environmentAmount };
455 var world = this.getWorld();
456 if (!world)
457 throw new Error( "no world in material.export, " + this.getName() );
458
459 if(typeof caps.diffuseMap != 'undefined')
460 exportStr += "diffuseMap: " + world.cleansePath(caps.diffuseMap.texture) + "\n";
461
462 if(typeof caps.normalMap != 'undefined')
463 exportStr += "normalMap: " + world.cleansePath(caps.normalMap.texture) + "\n";
464
465 if(typeof caps.specularMap != 'undefined')
466 exportStr += "specularMap: " + world.cleansePath(caps.specularMap.texture) + "\n";
467
468 if(typeof caps.environmentMap != 'undefined')
469 exportStr += "environmentMap: " + world.cleansePath(caps.environmentMap.texture) + "\n";
432 470
433 // every material needs to terminate like this 471 // every material needs to terminate like this
434 exportStr += "endMaterial\n"; 472 exportStr += "endMaterial\n";
diff --git a/js/lib