+
+
diff --git a/js/helper-classes/RDGE/src/core/script/MeshManager.js b/js/helper-classes/RDGE/src/core/script/MeshManager.js
index 1fff19c5..eea94b74 100755
--- a/js/helper-classes/RDGE/src/core/script/MeshManager.js
+++ b/js/helper-classes/RDGE/src/core/script/MeshManager.js
@@ -1,247 +1,247 @@
-/*
-Copyright (c) 2012, Motorola Mobility, Inc
-All Rights Reserved.
-BSD License.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of Motorola Mobility nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
- */
-
-// RDGE namespaces
-var RDGE = RDGE || {};
-
-RDGE.Model = function (name, mesh) {
- this.name = name;
- this.mesh = mesh;
- this.camera = null;
-};
-
-/*
- * Maintains a list of meshes to allow instancing of data
- */
-RDGE.MeshManager = function () {
- this.contentUrl = "assets_web/mesh/";
- this.modelMap = {};
- this.readyList = []; // meshes that have data ready
- this.meshesLoading = true; // indicates that no meshes have loaded or that they are still loading
- this.postMeshLoadCallbackList = [];
- this.tempSphere = null;
- this.requestCounter = 0;
-};
-
-/*
- * Pass the scene meshNode stump, loads temp object while real mesh is downloading
- */
-RDGE.MeshManager.prototype.loadMesh = function (meshStump, tempMesh) {
- // if it exists already, return the mesh requested
- if ( this.modelMap[meshStump.name] !== undefined )
- return this.modelMap[meshStump.name];
-
- meshStump.ready = false;
- meshStump.addr = this.contentUrl + meshStump.name + "_mesh.json";
- meshStump.ctxID = RDGE.globals.engine.getContext().renderer.id;
-
- // sets a temp mesh up in place of the final mesh to load
- if (!tempMesh) {
- if (this.tempSphere == null) {
- this.tempSphere = RDGE.renderUtils.makeSphere(RDGE.globals.engine.getContext().renderer.ctx, 25, 5, 5);
- }
-
- tempMesh = this.tempSphere;
- }
-
- // add the temp mesh to the map of loaded meshes
- this.modelMap[meshStump.name] = tempMesh;
-
- // update the request counter - we now have one more mesh to load
- this.requestCounter++;
-
- RDGE.requestMesh(meshStump);
-
- return null;
-};
-
-/*
- * Deletes the passed mesh from the manager as well as all renderers
- */
-RDGE.MeshManager.prototype.deleteMesh = function (name) {
- var model = this.modelMap[name];
-
- if (model) {
- RDGE.globals.engine.ctxMan.forEach(function (context) {
- context.renderer.deletePrimitive(model.primitive);
- });
-
- delete this.modelMap[name];
- }
-};
-
-RDGE.MeshManager.prototype.getModelByName = function (name) {
- return this.modelMap[name];
-};
-
-RDGE.MeshManager.prototype.getModelNames = function () {
- var names = [];
- for (var index in this.modelMap) {
- names.push(this.modelList[index].name);
- }
-
- return names;
-};
-
-
-RDGE.MeshManager.prototype.processMeshData = function () {
- var renderer = RDGE.globals.engine.getContext().renderer;
-
- // loop through meshes and load ready data
- for (var index in this.readyList) {
- // if item is ready load it
- if (this.readyList[index] && this.readyList[index].ready && renderer.id === this.readyList[index].ctxID) {
-
-
- // pop the item
- var model = this.readyList[index];
- this.readyList.splice(index, 1);
-
- var primset = new RDGE.rdgePrimitiveDefinition();
-
- primset.vertexDefinition =
- {
- // this shows two ways to map this data to an attribute
- "vert": { 'type': RDGE.rdgeConstants.VS_ELEMENT_POS, 'bufferIndex': 0, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_pos": { 'type': RDGE.rdgeConstants.VS_ELEMENT_POS, 'bufferIndex': 0, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "normal": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_norm": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_normal": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "texcoord": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_texcoord": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_texcoords": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
- "a_uv": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC }
- };
-
- primset.bufferStreams =
- [
- model.root.data.coords,
- model.root.data.normals,
- model.root.data.uvs
- ];
-
- primset.streamUsage =
- [
- RDGE.rdgeConstants.BUFFER_STATIC,
- RDGE.rdgeConstants.BUFFER_STATIC,
- RDGE.rdgeConstants.BUFFER_STATIC
- ];
-
- primset.indexUsage = RDGE.rdgeConstants.BUFFER_STREAM;
-
- primset.indexBuffer = model.root.data.indices;
-
- renderer.createPrimitive( primset );
-
- model.root.primitive = primset;
-
- // generate a bounding box for this mesh
- model.root.bbox = new RDGE.box();
-
- var numCoords = model.root.data.coords.length; var idx = 0;
- while (idx < numCoords - 2) {
- var thisCoord = [model.root.data.coords[idx+0], model.root.data.coords[idx+1], model.root.data.coords[idx+2]];
- model.root.bbox.addVec3(thisCoord);
- idx += 3;
- }
-
- this.modelMap[model.root.attribs.name] = model.root;
-
- // now that the model is load reduce the request count
- this.requestCounter--;
-
- this.onLoaded(model.root.attribs.name);
- //break;
- }
-
- }
-};
-
-RDGE.MeshManager.prototype.isReady = function () {
- return this.readyList.length == 0;
-};
-
-RDGE.MeshManager.prototype.addOnLoadedCallback = function (callback) {
- this.postMeshLoadCallbackList.push(callback)
-};
-
-RDGE.MeshManager.prototype.onLoaded = function (meshName) {
- for (var index = 0 in this.postMeshLoadCallbackList) {
- // call the functions
- this.postMeshLoadCallbackList[index].onMeshLoaded(meshName);
- }
-};
-
-RDGE.MeshManager.prototype.exportJSON = function () {
- for (var m in this.modelMap) {
- this.modelMap[m].primitive.built = false;
- }
-
- return JSON.stringify(this.modelMap);
-};
-
-RDGE.MeshManager.prototype.importJSON = function (jsonMeshExport) {
- try {
- var tempModelMap = JSON.parse(jsonMeshExport);
-
- for (var m in tempModelMap) {
- if (!this.modelMap[m]) {
- this.modelMap[m] = tempModelMap[m];
- }
- }
- window.console.log("meshes imported");
- } catch (e) {
- window.console.error("error importing meshes: " + e.description );
- }
-};
-
-/*
- * global function for the mesh manager to make mesh file requests
- */
-RDGE.requestMesh = function (mesh) {
- var request = new XMLHttpRequest();
- request.mesh = mesh;
- request.onreadystatechange = function () {
- if (request.readyState == 4) {
- if (request.status == 200 || window.location.href.indexOf("http") == -1) {
- var mesh = eval("(" + request.responseText + ")"); //retrieve result as an JavaScript object
- mesh.ready = true;
- mesh.ctxID = request.mesh.ctxID;
- RDGE.globals.meshMan.readyList.push(mesh);
- }
- else {
- alert("An error has occured making the request");
- }
- }
- }
-
- request.open("GET", mesh.addr, true);
- request.send(null);
-};
+/*
+Copyright (c) 2012, Motorola Mobility, Inc
+All Rights Reserved.
+BSD License.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ - Neither the name of Motorola Mobility nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// RDGE namespaces
+var RDGE = RDGE || {};
+
+RDGE.Model = function (name, mesh) {
+ this.name = name;
+ this.mesh = mesh;
+ this.camera = null;
+};
+
+/*
+ * Maintains a list of meshes to allow instancing of data
+ */
+RDGE.MeshManager = function () {
+ this.contentUrl = "assets_web/mesh/";
+ this.modelMap = {};
+ this.readyList = []; // meshes that have data ready
+ this.meshesLoading = true; // indicates that no meshes have loaded or that they are still loading
+ this.postMeshLoadCallbackList = [];
+ this.tempSphere = null;
+ this.requestCounter = 0;
+};
+
+/*
+ * Pass the scene meshNode stump, loads temp object while real mesh is downloading
+ */
+RDGE.MeshManager.prototype.loadMesh = function (meshStump, tempMesh) {
+ // if it exists already, return the mesh requested
+ if ( this.modelMap[meshStump.name] !== undefined )
+ return this.modelMap[meshStump.name];
+
+ meshStump.ready = false;
+ meshStump.addr = this.contentUrl + meshStump.name + "_mesh.json";
+ meshStump.ctxID = RDGE.globals.engine.getContext().renderer.id;
+
+ // sets a temp mesh up in place of the final mesh to load
+ if (!tempMesh) {
+ if (this.tempSphere == null) {
+ this.tempSphere = RDGE.renderUtils.makeSphere(RDGE.globals.engine.getContext().renderer.ctx, 25, 5, 5);
+ }
+
+ tempMesh = this.tempSphere;
+ }
+
+ // add the temp mesh to the map of loaded meshes
+ this.modelMap[meshStump.name] = tempMesh;
+
+ // update the request counter - we now have one more mesh to load
+ this.requestCounter++;
+
+ RDGE.requestMesh(meshStump);
+
+ return null;
+};
+
+/*
+ * Deletes the passed mesh from the manager as well as all renderers
+ */
+RDGE.MeshManager.prototype.deleteMesh = function (name) {
+ var model = this.modelMap[name];
+
+ if (model) {
+ RDGE.globals.engine.ctxMan.forEach(function (context) {
+ context.renderer.deletePrimitive(model.primitive);
+ });
+
+ delete this.modelMap[name];
+ }
+};
+
+RDGE.MeshManager.prototype.getModelByName = function (name) {
+ return this.modelMap[name];
+};
+
+RDGE.MeshManager.prototype.getModelNames = function () {
+ var names = [];
+ for (var index in this.modelMap) {
+ names.push(this.modelList[index].name);
+ }
+
+ return names;
+};
+
+
+RDGE.MeshManager.prototype.processMeshData = function () {
+ var renderer = RDGE.globals.engine.getContext().renderer;
+
+ // loop through meshes and load ready data
+ for (var index in this.readyList) {
+ // if item is ready load it
+ if (this.readyList[index] && this.readyList[index].ready && renderer.id === this.readyList[index].ctxID) {
+
+
+ // pop the item
+ var model = this.readyList[index];
+ this.readyList.splice(index, 1);
+
+ var primset = new RDGE.rdgePrimitiveDefinition();
+
+ primset.vertexDefinition =
+ {
+ // this shows two ways to map this data to an attribute
+ "vert": { 'type': RDGE.rdgeConstants.VS_ELEMENT_POS, 'bufferIndex': 0, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_pos": { 'type': RDGE.rdgeConstants.VS_ELEMENT_POS, 'bufferIndex': 0, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "normal": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_norm": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_normal": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT3, 'bufferIndex': 1, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "texcoord": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_texcoord": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_texcoords": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC },
+ "a_uv": { 'type': RDGE.rdgeConstants.VS_ELEMENT_FLOAT2, 'bufferIndex': 2, 'bufferUsage': RDGE.rdgeConstants.BUFFER_STATIC }
+ };
+
+ primset.bufferStreams =
+ [
+ model.root.data.coords,
+ model.root.data.normals,
+ model.root.data.uvs
+ ];
+
+ primset.streamUsage =
+ [
+ RDGE.rdgeConstants.BUFFER_STATIC,
+ RDGE.rdgeConstants.BUFFER_STATIC,
+ RDGE.rdgeConstants.BUFFER_STATIC
+ ];
+
+ primset.indexUsage = RDGE.rdgeConstants.BUFFER_STREAM;
+
+ primset.indexBuffer = model.root.data.indices;
+
+ renderer.createPrimitive( primset );
+
+ model.root.primitive = primset;
+
+ // generate a bounding box for this mesh
+ model.root.bbox = new RDGE.box();
+
+ var numCoords = model.root.data.coords.length; var idx = 0;
+ while (idx < numCoords - 2) {
+ var thisCoord = [model.root.data.coords[idx+0], model.root.data.coords[idx+1], model.root.data.coords[idx+2]];
+ model.root.bbox.addVec3(thisCoord);
+ idx += 3;
+ }
+
+ this.modelMap[model.root.attribs.name] = model.root;
+
+ // now that the model is load reduce the request count
+ this.requestCounter--;
+
+ this.onLoaded(model.root.attribs.name);
+ //break;
+ }
+
+ }
+};
+
+RDGE.MeshManager.prototype.isReady = function () {
+ return this.readyList.length == 0;
+};
+
+RDGE.MeshManager.prototype.addOnLoadedCallback = function (callback) {
+ this.postMeshLoadCallbackList.push(callback)
+};
+
+RDGE.MeshManager.prototype.onLoaded = function (meshName) {
+ for (var index = 0 in this.postMeshLoadCallbackList) {
+ // call the functions
+ this.postMeshLoadCallbackList[index].onMeshLoaded(meshName);
+ }
+};
+
+RDGE.MeshManager.prototype.exportJSON = function () {
+ for (var m in this.modelMap) {
+ this.modelMap[m].primitive.built = false;
+ }
+
+ return JSON.stringify(this.modelMap);
+};
+
+RDGE.MeshManager.prototype.importJSON = function (jsonMeshExport) {
+ try {
+ var tempModelMap = JSON.parse(jsonMeshExport);
+
+ for (var m in tempModelMap) {
+ if (!this.modelMap[m]) {
+ this.modelMap[m] = tempModelMap[m];
+ }
+ }
+ window.console.log("meshes imported");
+ } catch (e) {
+ window.console.error("error importing meshes: " + e.description );
+ }
+};
+
+/*
+ * global function for the mesh manager to make mesh file requests
+ */
+RDGE.requestMesh = function (mesh) {
+ var request = new XMLHttpRequest();
+ request.mesh = mesh;
+ request.onreadystatechange = function () {
+ if (request.readyState == 4) {
+ if (request.status == 200 || window.location.href.indexOf("http") == -1) {
+ var mesh = eval("(" + request.responseText + ")"); //retrieve result as an JavaScript object
+ mesh.ready = true;
+ mesh.ctxID = request.mesh.ctxID;
+ RDGE.globals.meshMan.readyList.push(mesh);
+ }
+ else {
+ alert("An error has occured making the request");
+ }
+ }
+ }
+
+ request.open("GET", mesh.addr, true);
+ request.send(null);
+};
diff --git a/js/helper-classes/RDGE/src/core/script/RenderInitProcs.js b/js/helper-classes/RDGE/src/core/script/RenderInitProcs.js
index 20b37abb..9f0a5e35 100755
--- a/js/helper-classes/RDGE/src/core/script/RenderInitProcs.js
+++ b/js/helper-classes/RDGE/src/core/script/RenderInitProcs.js
@@ -1,259 +1,259 @@
-/*
-Copyright (c) 2012, Motorola Mobility, Inc
-All Rights Reserved.
-BSD License.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of Motorola Mobility nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
- */
-
-// RDGE namespaces
-var RDGE = RDGE || {};
-
-RDGE.renderInitProcDefault = function (primSet, vertexData) {
- var material = primSet.material;
-
- //push envMap tex
- material.tex.env.push(arrayPeek(material.shader).envMap);
- material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
-
- gl.useProgram(arrayPeek(material.shader).shaderHandle);
-
- arrayPeek(material.renderObj).addTexture("layerMap1", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("layerMap2", 1, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("colorMeMap1", 2, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("colorMeMap2", 3, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("envMap", 4, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("envDiff", 5, RDGE.UNIFORMTYPE.TEXTURE2D);
-
- arrayPeek(material.renderObj).addTexture("normalMap1", 15, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("normalMap2", 6, RDGE.UNIFORMTYPE.TEXTURE2D);
-
- arrayPeek(material.renderObj).addTexture("stickerMap0", 7, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap1", 8, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap2", 9, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap3", 10, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap4", 11, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap5", 12, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap6", 13, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addTexture("stickerMap7", 14, RDGE.UNIFORMTYPE.TEXTURE2D);
-
- arrayPeek(material.renderObj).addUniform("u_normalMatrix", gl.normalMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_invMvMatrix", gl.invMvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix0", primSet.parentMesh.stickers[0], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix1", primSet.parentMesh.stickers[1], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix2", primSet.parentMesh.stickers[2], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix3", primSet.parentMesh.stickers[3], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix4", primSet.parentMesh.stickers[4], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix5", primSet.parentMesh.stickers[5], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix6", primSet.parentMesh.stickers[6], RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_stickerMatrix7", primSet.parentMesh.stickers[7], RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_stickerPos0", primSet.parentMesh.stickersPos[0], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos1", primSet.parentMesh.stickersPos[1], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos2", primSet.parentMesh.stickersPos[2], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos3", primSet.parentMesh.stickersPos[3], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos4", primSet.parentMesh.stickersPos[4], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos5", primSet.parentMesh.stickersPos[5], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos6", primSet.parentMesh.stickersPos[6], RDGE.UNIFORMTYPE.FLOAT3);
- arrayPeek(material.renderObj).addUniform("u_stickerPos7", primSet.parentMesh.stickersPos[7], RDGE.UNIFORMTYPE.FLOAT3);
-
- arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_fillColor1", material.fillColor[0], RDGE.UNIFORMTYPE.FLOAT4);
- arrayPeek(material.renderObj).addUniform("u_fillColor2", material.fillColor[1], RDGE.UNIFORMTYPE.FLOAT4);
- arrayPeek(material.renderObj).addUniform("u_skinColor", material.fillColor[2], RDGE.UNIFORMTYPE.FLOAT4);
-
- // debug---
- vertexData.vertexObject.name = "vertexObject";
- vertexData.normalObject.name = "normalObject";
- vertexData.texCoordObject.name = "texCoordObject";
- vertexData.indexObject.name = "indexObject";
- //----------
-
- arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
-
- gl.useProgram(null);
- // gl.console.log("Mesh Init done!");
-};
-
-RDGE.renderInitScreenQuad = function (quad, shader) {
- if (shader == undefined) {
- quad.shader = RDGE.createShader(gl, 'screenQuad_vShader', 'screenQuad_fShader', ["vert", "texcoord"]);
- }
- else {
- quad.shader = shader;
- }
-
- quad.renderObj = new RDGE.RenderObject(quad.shader);
-
- quadBuf = getScreenAlignedQuad();
-
- quad.vertBuffer = quadBuf.vertexObject;
- quad.uvBuffer = quadBuf.texCoordObject;
-
-
- quad.renderObj.addTexture("basemap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
-
- var invWidth = (RDGE.globals.width == 0.0) ? 0.0 : 1.0 / RDGE.globals.width, invHeight = (RDGE.globals.height == 0.0) ? 0.0 : 1.0 / RDGE.globals.height;
- quad.renderObj.addUniform("u_inv_viewport_width", invWidth, RDGE.UNIFORMTYPE.FLOAT);
- quad.renderObj.addUniform("u_inv_viewport_height", invHeight, RDGE.UNIFORMTYPE.FLOAT);
-
- quad.renderObj.addBuffers(quad.vertBuffer, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
- quad.renderObj.addBuffers(quad.uvBuffer, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
-};
-
-RDGE.renderInitProcDepthMap = function (renderObj) {
- renderObj.shader = g_depthShader.shaderHandle; //RDGE.createShader(gl, depthMapVShader, depthMapFShader, [ "vert", "normal", "texcoord"]);
-
- gl.useProgram(renderObj.shader);
-
- renderObj.addUniform("u_mvpLightMatrix", g_mainLight.mvpMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- //renderObj.addUniform("u_mvpLightMatrixWTF", g_mainLight.mvpMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- // var uni = gl.getUniformLocation(renderObj.shader, "u_mvpLightMatrixWTF");
- // renderObj.addUniform("u_WTF1", g_lightMat[0], RDGE.UNIFORMTYPE.FLOAT4);
- // renderObj.addUniform("u_WTF2", g_lightMat[1], RDGE.UNIFORMTYPE.FLOAT4);
- // renderObj.addUniform("u_WTF3", g_lightMat[2], RDGE.UNIFORMTYPE.FLOAT4);
- // renderObj.addUniform("u_WTF4", g_lightMat[3], RDGE.UNIFORMTYPE.FLOAT4);
- //
- // since the uniform data references should not change we can just bind one time
- renderObj.bindUniforms();
-
- gl.useProgram(null);
-};
-
-RDGE.renderInitShadowReceiver = function (primSet, vertexData) {
- // setup passes
- primSet.shadowTarget = g_texMan.loadRenderTarget("shadowTarget", 256, 256);
- primSet.shadowTargetFinal = g_texMan.loadRenderTarget("shadowTargetFinal", 256, 256);
- primSet.screenQuad = new RDGE.ScreenQuad(primSet.shadowTargetFinal);
- primSet.screenQuad.initialize(RDGE.renderInitRadialBlur);
-
- // set the target as the shadow to get projcetd
- primSet.parentMesh.shadowToProject = primSet.shadowTarget;
-
- //mainSceneQuad = new RDGE.ScreenQuad(primSet.shadowTarget);
- //mainSceneQuad.initialize(renderInitScreenQuad);
-
- var material = primSet.material;
-
- //push envMap tex
- material.tex.env.push(arrayPeek(material.shader).envMap);
- material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
-
- gl.useProgram(arrayPeek(material.shader).shaderHandle);
-
- arrayPeek(material.renderObj).addTexture("shadowMap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_shadowBiasMatrix", g_mainLight.shadowMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_vShadowLight", g_mainLight.view, RDGE.UNIFORMTYPE.MATRIX4);
-
-
- // debug---
- vertexData.vertexObject.name = "vertexObject";
- vertexData.normalObject.name = "normalObject";
- vertexData.texCoordObject.name = "texCoordObject";
- vertexData.indexObject.name = "indexObject";
- //----------
-
- arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
-
- gl.useProgram(null);
-
- //RDGE.renderInitShadowProjection(primSet, vertexData);
-};
-
-
-RDGE.renderInitShadowProjection = function (primSet, vertexData) {
- var material = primSet.material;
-
- //push envMap tex
- //material.tex.env.push(arrayPeek(material.shader).envMap);
- //material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
-
- gl.useProgram(arrayPeek(material.shader).shaderHandle);
-
- arrayPeek(material.renderObj).addTexture("shadowMap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
- arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
-
- arrayPeek(material.renderObj).addUniform("u_shadowBiasMatrix", g_mainLight.shadowMatrix, RDGE.UNIFORMTYPE.MATRIX4);
- arrayPeek(material.renderObj).addUniform("u_vShadowLight", g_mainLight.view, RDGE.UNIFORMTYPE.MATRIX4);
-
-
- // debug---
- vertexData.vertexObject.name = "vertexObject";
- vertexData.normalObject.name = "normalObject";
- vertexData.texCoordObject.name = "texCoordObject";
- vertexData.indexObject.name = "indexObject";
- //----------
-
- arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
- arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
-
-
- gl.useProgram(null);
-};
-
-RDGE.renderInitRadialBlur = function(quad, shader) {
- if (shader == undefined) {
- quad.shader = RDGE.createShader(gl, 'radialBlur_vshader', 'radialBlur_fshader', ["vert", "texcoord"]);
- }
- else {
- quad.shader = shader;
- }
-
- quad.renderObj = new RDGE.RenderObject(quad.shader);
-
- quadBuf = getScreenAlignedQuad();
-
- quad.vertBuffer = quadBuf.vertexObject;
- quad.uvBuffer = quadBuf.texCoordObject;
-
-
- quad.renderObj.addTexture("basemap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
-
- quad.renderObj.addUniform("u_inv_viewport_width", 1.0 / RDGE.globals.width, RDGE.UNIFORMTYPE.FLOAT);
- quad.renderObj.addUniform("u_inv_viewport_height", 1.0 / RDGE.globals.height, RDGE.UNIFORMTYPE.FLOAT);
- quad.renderObj.addUniform("u_sampRadius", 5.0, RDGE.UNIFORMTYPE.FLOAT);
- quad.renderObj.addUniform("u_numSamples", 16, RDGE.UNIFORMTYPE.INT);
- quad.renderObj.addUniform("u_mapSize", 256.0, RDGE.UNIFORMTYPE.FLOAT);
-
- quad.renderObj.addBuffers(quad.vertBuffer, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
- quad.renderObj.addBuffers(quad.uvBuffer, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
-};
+/*
+Copyright (c) 2012, Motorola Mobility, Inc
+All Rights Reserved.
+BSD License.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ - Neither the name of Motorola Mobility nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// RDGE namespaces
+var RDGE = RDGE || {};
+
+RDGE.renderInitProcDefault = function (primSet, vertexData) {
+ var material = primSet.material;
+
+ //push envMap tex
+ material.tex.env.push(arrayPeek(material.shader).envMap);
+ material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
+
+ gl.useProgram(arrayPeek(material.shader).shaderHandle);
+
+ arrayPeek(material.renderObj).addTexture("layerMap1", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("layerMap2", 1, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("colorMeMap1", 2, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("colorMeMap2", 3, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("envMap", 4, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("envDiff", 5, RDGE.UNIFORMTYPE.TEXTURE2D);
+
+ arrayPeek(material.renderObj).addTexture("normalMap1", 15, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("normalMap2", 6, RDGE.UNIFORMTYPE.TEXTURE2D);
+
+ arrayPeek(material.renderObj).addTexture("stickerMap0", 7, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap1", 8, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap2", 9, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap3", 10, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap4", 11, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap5", 12, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap6", 13, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addTexture("stickerMap7", 14, RDGE.UNIFORMTYPE.TEXTURE2D);
+
+ arrayPeek(material.renderObj).addUniform("u_normalMatrix", gl.normalMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_invMvMatrix", gl.invMvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix0", primSet.parentMesh.stickers[0], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix1", primSet.parentMesh.stickers[1], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix2", primSet.parentMesh.stickers[2], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix3", primSet.parentMesh.stickers[3], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix4", primSet.parentMesh.stickers[4], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix5", primSet.parentMesh.stickers[5], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix6", primSet.parentMesh.stickers[6], RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_stickerMatrix7", primSet.parentMesh.stickers[7], RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_stickerPos0", primSet.parentMesh.stickersPos[0], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos1", primSet.parentMesh.stickersPos[1], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos2", primSet.parentMesh.stickersPos[2], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos3", primSet.parentMesh.stickersPos[3], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos4", primSet.parentMesh.stickersPos[4], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos5", primSet.parentMesh.stickersPos[5], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos6", primSet.parentMesh.stickersPos[6], RDGE.UNIFORMTYPE.FLOAT3);
+ arrayPeek(material.renderObj).addUniform("u_stickerPos7", primSet.parentMesh.stickersPos[7], RDGE.UNIFORMTYPE.FLOAT3);
+
+ arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_fillColor1", material.fillColor[0], RDGE.UNIFORMTYPE.FLOAT4);
+ arrayPeek(material.renderObj).addUniform("u_fillColor2", material.fillColor[1], RDGE.UNIFORMTYPE.FLOAT4);
+ arrayPeek(material.renderObj).addUniform("u_skinColor", material.fillColor[2], RDGE.UNIFORMTYPE.FLOAT4);
+
+ // debug---
+ vertexData.vertexObject.name = "vertexObject";
+ vertexData.normalObject.name = "normalObject";
+ vertexData.texCoordObject.name = "texCoordObject";
+ vertexData.indexObject.name = "indexObject";
+ //----------
+
+ arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
+
+ gl.useProgram(null);
+ // gl.console.log("Mesh Init done!");
+};
+
+RDGE.renderInitScreenQuad = function (quad, shader) {
+ if (shader == undefined) {
+ quad.shader = RDGE.createShader(gl, 'screenQuad_vShader', 'screenQuad_fShader', ["vert", "texcoord"]);
+ }
+ else {
+ quad.shader = shader;
+ }
+
+ quad.renderObj = new RDGE.RenderObject(quad.shader);
+
+ quadBuf = getScreenAlignedQuad();
+
+ quad.vertBuffer = quadBuf.vertexObject;
+ quad.uvBuffer = quadBuf.texCoordObject;
+
+
+ quad.renderObj.addTexture("basemap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
+
+ var invWidth = (RDGE.globals.width == 0.0) ? 0.0 : 1.0 / RDGE.globals.width, invHeight = (RDGE.globals.height == 0.0) ? 0.0 : 1.0 / RDGE.globals.height;
+ quad.renderObj.addUniform("u_inv_viewport_width", invWidth, RDGE.UNIFORMTYPE.FLOAT);
+ quad.renderObj.addUniform("u_inv_viewport_height", invHeight, RDGE.UNIFORMTYPE.FLOAT);
+
+ quad.renderObj.addBuffers(quad.vertBuffer, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
+ quad.renderObj.addBuffers(quad.uvBuffer, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
+};
+
+RDGE.renderInitProcDepthMap = function (renderObj) {
+ renderObj.shader = g_depthShader.shaderHandle; //RDGE.createShader(gl, depthMapVShader, depthMapFShader, [ "vert", "normal", "texcoord"]);
+
+ gl.useProgram(renderObj.shader);
+
+ renderObj.addUniform("u_mvpLightMatrix", g_mainLight.mvpMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ //renderObj.addUniform("u_mvpLightMatrixWTF", g_mainLight.mvpMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ // var uni = gl.getUniformLocation(renderObj.shader, "u_mvpLightMatrixWTF");
+ // renderObj.addUniform("u_WTF1", g_lightMat[0], RDGE.UNIFORMTYPE.FLOAT4);
+ // renderObj.addUniform("u_WTF2", g_lightMat[1], RDGE.UNIFORMTYPE.FLOAT4);
+ // renderObj.addUniform("u_WTF3", g_lightMat[2], RDGE.UNIFORMTYPE.FLOAT4);
+ // renderObj.addUniform("u_WTF4", g_lightMat[3], RDGE.UNIFORMTYPE.FLOAT4);
+ //
+ // since the uniform data references should not change we can just bind one time
+ renderObj.bindUniforms();
+
+ gl.useProgram(null);
+};
+
+RDGE.renderInitShadowReceiver = function (primSet, vertexData) {
+ // setup passes
+ primSet.shadowTarget = g_texMan.loadRenderTarget("shadowTarget", 256, 256);
+ primSet.shadowTargetFinal = g_texMan.loadRenderTarget("shadowTargetFinal", 256, 256);
+ primSet.screenQuad = new RDGE.ScreenQuad(primSet.shadowTargetFinal);
+ primSet.screenQuad.initialize(RDGE.renderInitRadialBlur);
+
+ // set the target as the shadow to get projcetd
+ primSet.parentMesh.shadowToProject = primSet.shadowTarget;
+
+ //mainSceneQuad = new RDGE.ScreenQuad(primSet.shadowTarget);
+ //mainSceneQuad.initialize(renderInitScreenQuad);
+
+ var material = primSet.material;
+
+ //push envMap tex
+ material.tex.env.push(arrayPeek(material.shader).envMap);
+ material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
+
+ gl.useProgram(arrayPeek(material.shader).shaderHandle);
+
+ arrayPeek(material.renderObj).addTexture("shadowMap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_shadowBiasMatrix", g_mainLight.shadowMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_vShadowLight", g_mainLight.view, RDGE.UNIFORMTYPE.MATRIX4);
+
+
+ // debug---
+ vertexData.vertexObject.name = "vertexObject";
+ vertexData.normalObject.name = "normalObject";
+ vertexData.texCoordObject.name = "texCoordObject";
+ vertexData.indexObject.name = "indexObject";
+ //----------
+
+ arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
+
+ gl.useProgram(null);
+
+ //RDGE.renderInitShadowProjection(primSet, vertexData);
+};
+
+
+RDGE.renderInitShadowProjection = function (primSet, vertexData) {
+ var material = primSet.material;
+
+ //push envMap tex
+ //material.tex.env.push(arrayPeek(material.shader).envMap);
+ //material.tex.envDiff.push(arrayPeek(material.shader).envDiff);
+
+ gl.useProgram(arrayPeek(material.shader).shaderHandle);
+
+ arrayPeek(material.renderObj).addTexture("shadowMap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
+ arrayPeek(material.renderObj).addUniform("u_mvMatrix", gl.mvMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_projMatrix", gl.perspectiveMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+
+ arrayPeek(material.renderObj).addUniform("u_shadowBiasMatrix", g_mainLight.shadowMatrix, RDGE.UNIFORMTYPE.MATRIX4);
+ arrayPeek(material.renderObj).addUniform("u_vShadowLight", g_mainLight.view, RDGE.UNIFORMTYPE.MATRIX4);
+
+
+ // debug---
+ vertexData.vertexObject.name = "vertexObject";
+ vertexData.normalObject.name = "normalObject";
+ vertexData.texCoordObject.name = "texCoordObject";
+ vertexData.indexObject.name = "indexObject";
+ //----------
+
+ arrayPeek(material.renderObj).addBuffers(vertexData.vertexObject, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.normalObject, gl.ARRAY_BUFFER, 3, 1, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.texCoordObject, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
+ arrayPeek(material.renderObj).addBuffers(vertexData.indexObject, gl.ELEMENT_ARRAY_BUFFER);
+
+
+ gl.useProgram(null);
+};
+
+RDGE.renderInitRadialBlur = function(quad, shader) {
+ if (shader == undefined) {
+ quad.shader = RDGE.createShader(gl, 'radialBlur_vshader', 'radialBlur_fshader', ["vert", "texcoord"]);
+ }
+ else {
+ quad.shader = shader;
+ }
+
+ quad.renderObj = new RDGE.RenderObject(quad.shader);
+
+ quadBuf = getScreenAlignedQuad();
+
+ quad.vertBuffer = quadBuf.vertexObject;
+ quad.uvBuffer = quadBuf.texCoordObject;
+
+
+ quad.renderObj.addTexture("basemap", 0, RDGE.UNIFORMTYPE.TEXTURE2D);
+
+ quad.renderObj.addUniform("u_inv_viewport_width", 1.0 / RDGE.globals.width, RDGE.UNIFORMTYPE.FLOAT);
+ quad.renderObj.addUniform("u_inv_viewport_height", 1.0 / RDGE.globals.height, RDGE.UNIFORMTYPE.FLOAT);
+ quad.renderObj.addUniform("u_sampRadius", 5.0, RDGE.UNIFORMTYPE.FLOAT);
+ quad.renderObj.addUniform("u_numSamples", 16, RDGE.UNIFORMTYPE.INT);
+ quad.renderObj.addUniform("u_mapSize", 256.0, RDGE.UNIFORMTYPE.FLOAT);
+
+ quad.renderObj.addBuffers(quad.vertBuffer, gl.ARRAY_BUFFER, 3, 0, gl.FLOAT);
+ quad.renderObj.addBuffers(quad.uvBuffer, gl.ARRAY_BUFFER, 2, 2, gl.FLOAT);
+};
diff --git a/js/helper-classes/RDGE/src/core/script/RenderProcs.js b/js/helper-classes/RDGE/src/core/script/RenderProcs.js
index 1583ea14..1f0d3b3c 100755
--- a/js/helper-classes/RDGE/src/core/script/RenderProcs.js
+++ b/js/helper-classes/RDGE/src/core/script/RenderProcs.js
@@ -1,511 +1,511 @@
-/*
-Copyright (c) 2012, Motorola Mobility, Inc
-All Rights Reserved.
-BSD License.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of Motorola Mobility nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIB