From 3644cb6def4f681c99959e5729e78ea353441fad Mon Sep 17 00:00:00 2001 From: Kris Kowal Date: Fri, 6 Jul 2012 12:34:53 -0700 Subject: Normalize to unix line terminators --- .../RDGE/src/core/script/rendercontext.js | 578 ++++++++++----------- 1 file changed, 289 insertions(+), 289 deletions(-) (limited to 'js/helper-classes/RDGE/src/core/script/rendercontext.js') diff --git a/js/helper-classes/RDGE/src/core/script/rendercontext.js b/js/helper-classes/RDGE/src/core/script/rendercontext.js index e3cb6374..55102e49 100755 --- a/js/helper-classes/RDGE/src/core/script/rendercontext.js +++ b/js/helper-classes/RDGE/src/core/script/rendercontext.js @@ -1,289 +1,289 @@ -/* -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. - */ - -var RDGE = RDGE || {}; - -// render flags, handles, states -RDGE.g_whiteTex = null; -RDGE.g_blackTex = null; -RDGE.g_blueTex = null; - -/* These objects appear to be unused so they are currently commented out -RDGE.RDGEWebTexture = function () { - this.handle; // gl handle - this.unit; // the texture slot/unit - this.type = RDGE.UNIFORMTYPE.TEXTURE2D; -}; - -RDGE.RDGEWebUniformPair = function (uniform, value, type) { - this.uniform = uniform; - this.value = value; - this.type = type; -}; - - -// pass a function that takes no parameters -RDGE.defaultState = function () { - return [function () { gl.disable(gl.CULL_FACE) }, - function () { gl.enable(gl.DEPTH_TEST) } ] -}; -*/ - -// this chunk of data contains uniform storage references set the data with RDGEUniform.set (ie RDGEUniform.set("u_name", RDGE.UNIFORMTYPE.FLOAT4, myData); ) -RDGE.CreateMasterList = function () { - _MasterUniformList = - [ - { 'uniform': projMatrixUniform = 0, 'name': "u_projMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': mvMatrixUniform = 0, 'name': "u_mvMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': normalMatrixUniform = 0, 'name': "u_normalMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': worldMatrixUniform = 0, 'name': "u_worldMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': lightPos = 0, 'name': "u_lightPos", 'type': RDGE.UNIFORMTYPE.FLOAT3, 'value': new Float32Array(3) }, - { 'uniform': lightDiff = 0, 'name': "u_lightDiff", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, - { 'uniform': lightAmb = 0, 'name': "u_lightAmb", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, - { 'uniform': colMap = 0, 'name': "colMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, - { 'uniform': envMap = 0, 'name': "envMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, - { 'uniform': normalMap = 0, 'name': "normalMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, - { 'uniform': glowMap = 0, 'name': "glowMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, - { 'uniform': matAmbient = 0, 'name': "u_matAmbient", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, - { 'uniform': matDiffuse = 0, 'name': "u_matDiffuse", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, - { 'uniform': matSpecular = 0, 'name': "u_matSpecular", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, - { 'uniform': matShininess = 0, 'name': "u_matShininess", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(1) }, - { 'uniform': matEmission = 0, 'name': "u_matEmission", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(4) }, - { 'uniform': frustumFarZ = 0, 'name': "u_frustumFarZ", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(1) }, - { 'uniform': shadowLightWorld = 0, 'name': "u_shadowLightWorld", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': shadowBiasMatrix = 0, 'name': "u_shadowBiasMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': vShadowLight = 0, 'name': "u_vShadowLight", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, - { 'uniform': depthMap = 0, 'name': "depthMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) } - ]; - - return _MasterUniformList; -}; - -RDGE.RDGEUniformInit = function () { - this.uniformList = RDGE.CreateMasterList(); - this.uniformMap = []; - for (var idx = 0; idx < this.uniformList.length; ++idx) { - this.uniformMap[this.uniformList[idx].name] = this.uniformList[idx]; - } -}; - -RDGE.RDGEUniformInit.prototype.SetUni = function (name, _value) { - //this.uniformMap[name].value.set(_value); - - this.uniformMap[name].value = _value; -}; - -// Globally available uniform storage -RDGE.RDGEUniform = new RDGE.RDGEUniformInit(); - -RDGE.RenderContext = function () { - this.shaderProg = null; - this.uniforms = []; - this.textureList = []; - this.curRenderProc = null; - this.light0Color = [1, 1, 1, 0]; - this.parentID = 0; - this.world = RDGE.mat4.identity(); - this.hide = false; - enableNormalMapping = true; - this.lights = [null, null, null, null]; - - // state settings - set functions in the array that set states or 'other' so long as it makes since - this.stateSettings = []; -}; - -RDGE.RenderContext.prototype.Load = function (ctx) { - this.shaderProg = ctx.shaderProg; - this.uniforms = ctx.uniforms.slice(); - this.textureList = ctx.textureList.slice(); - this.stateSettings = ctx.stateSettings.slice(); - this.curRenderProc = ctx.curRenderProc; - this.light0Color = ctx.light0Color.slice(); - this.parentID = ctx.parentID; - this.world = RDGE.mat4.copy(ctx.world); - this.lights = ctx.lights.slice(); - - // the camera - this.cam = this.cam; - - // state settings - set functions in the array that set states or 'other' so long as it makes since - this.stateSettings = this.stateSettings.slice(); -}; - -RDGE.__lastInited = []; // keep list of initialized shaders - -RDGE._SetShader = function (program) { - gl.useProgram(program); - - if (RDGE.__lastInited[program.shaderID] === undefined) { - RDGE.__lastInited[program.shaderID] = true; - // init the uniforms - gl.enableVertexAttribArray(0); - gl.enableVertexAttribArray(1); - gl.enableVertexAttribArray(2); - - var deleteMe = []; - for (var uniIndex = 0; uniIndex < program.RDGEUniform.uniformList.length; uniIndex++) { - - var handle = gl.getUniformLocation(program, program.RDGEUniform.uniformList[uniIndex].name); - if (handle) - program.RDGEUniform.uniformList[uniIndex].uniform = handle; - else { - program.RDGEUniform.uniformList.splice(uniIndex, 1); - uniIndex = Math.max(uniIndex - 1, 0); - } - } - } -} - -// take a parameterless function -RDGE.RenderContext.prototype.AddStateSetting = function (functor) { - this.stateSettings.push(functor); -}; - -// take a parameterless function -RDGE.RenderContext.prototype.Apply = function () { - - // set shader program to use - shaderProg = null; - if (this.shaderProg != null) { - RDGE._SetShader(this.shaderProg); - shaderProg = this.shaderProg; - } - else { - RDGE._SetShader(RDGE.globals.engine.defaultContext.shaderProg); - shaderProg = RDGE.globals.engine.defaultContext.shaderProg; - } - - // set shader values (name/uniform pair must be in the master list) - - if (this.uniforms.length > 0) { - for (var idx = 0; idx < this.uniforms.length; ++idx) { - shaderProg.RDGEUniform.SetUni(this.uniforms[idx].name, this.uniforms[idx].value); - } - } - - // set the diffuse color - shaderProg.RDGEUniform.SetUni("u_lightDiff", this.light0Color); - - - for (var setIdx = 0; setIdx < this.stateSettings.length; ++setIdx) { - // call state funcs - this.stateSettings[setIdx](); - } - - this.bindTextures(); -}; - -RDGE.RenderContext.prototype.bindTextures = function () { - - var ctx = RDGE.globals.engine.getContext().renderer.ctx; - // gl.activeTexture(gl.TEXTURE0); - // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_whiteTex); - // gl.activeTexture(gl.TEXTURE0); - // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_whiteTex); - - // gl.activeTexture(gl.TEXTURE2); - // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_blueTex); - // gl.activeTexture(gl.TEXTURE2); - // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_blueTex); - - // gl.activeTexture(gl.TEXTURE3); - // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_blackTex); - // gl.activeTexture(gl.TEXTURE3); - // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_blackTex); - - for (var uniIndex = 0; uniIndex < this.textureList.length; uniIndex++) { - var bind = this.textureList[uniIndex]; - - switch (bind.type) { - case RDGE.UNIFORMTYPE.TEXTURE2D: - ctx.activeTexture(ctx.TEXTURE0 + bind.unit); - ctx.bindTexture(ctx.TEXTURE_2D, bind.handle); - break; - case RDGE.UNIFORMTYPE.TEXTURECUBE: - ctx.activeTexture(ctx.TEXTURE0 + bind.unit); - ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, bind.handle); - break; - default: - // gl.console.log("!!!! - trying to bind unknown texture type"); - break; - } - } - - if (!enableNormalMapping) { - ctx.activeTexture(ctx.TEXTURE2); - ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, RDGE.g_blueTex); - ctx.activeTexture(ctx.TEXTURE2); - ctx.bindTexture(ctx.TEXTURE_2D, RDGE.g_blueTex); - } -}; - -RDGE.funcmap = {}; - -RDGE.funcmap[RDGE.UNIFORMTYPE.INT] = function (a, b) { - gl.uniform1iv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT] = function (a, b) { - gl.uniform1fv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT2] = function (a, b) { - gl.uniform2fv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT3] = function (a, b) { - gl.uniform3fv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT4] = function (a, b) { - gl.uniform4fv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.MATRIX3] = function (a, b) { - gl.uniformMatrix3fv(a, false, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.MATRIX4] = function (a, b) { - gl.uniformMatrix4fv(a, false, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.TEXTURE2D] = function (a, b) { - gl.activeTexture(gl.TEXTURE0 + b); - gl.uniform1iv(a, b); -}; -RDGE.funcmap[RDGE.UNIFORMTYPE.TEXTURECUBE] = function (a, b) { - gl.activeTexture(gl.TEXTURE0 + b); - gl.uniform1iv(a, b); -}; - -RDGE._bindUniforms = function (shaderProg) { - var len = shaderProg.RDGEUniform.uniformList.length; - var uniforms = shaderProg.RDGEUniform.uniformList; - - for (var uniIndex = 0; uniIndex < len; uniIndex++) { - var bind = uniforms[uniIndex]; - RDGE.funcmap[bind.type](bind.uniform, bind.value); - } -}; +/* +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. + */ + +var RDGE = RDGE || {}; + +// render flags, handles, states +RDGE.g_whiteTex = null; +RDGE.g_blackTex = null; +RDGE.g_blueTex = null; + +/* These objects appear to be unused so they are currently commented out +RDGE.RDGEWebTexture = function () { + this.handle; // gl handle + this.unit; // the texture slot/unit + this.type = RDGE.UNIFORMTYPE.TEXTURE2D; +}; + +RDGE.RDGEWebUniformPair = function (uniform, value, type) { + this.uniform = uniform; + this.value = value; + this.type = type; +}; + + +// pass a function that takes no parameters +RDGE.defaultState = function () { + return [function () { gl.disable(gl.CULL_FACE) }, + function () { gl.enable(gl.DEPTH_TEST) } ] +}; +*/ + +// this chunk of data contains uniform storage references set the data with RDGEUniform.set (ie RDGEUniform.set("u_name", RDGE.UNIFORMTYPE.FLOAT4, myData); ) +RDGE.CreateMasterList = function () { + _MasterUniformList = + [ + { 'uniform': projMatrixUniform = 0, 'name': "u_projMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': mvMatrixUniform = 0, 'name': "u_mvMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': normalMatrixUniform = 0, 'name': "u_normalMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': worldMatrixUniform = 0, 'name': "u_worldMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': lightPos = 0, 'name': "u_lightPos", 'type': RDGE.UNIFORMTYPE.FLOAT3, 'value': new Float32Array(3) }, + { 'uniform': lightDiff = 0, 'name': "u_lightDiff", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, + { 'uniform': lightAmb = 0, 'name': "u_lightAmb", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, + { 'uniform': colMap = 0, 'name': "colMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, + { 'uniform': envMap = 0, 'name': "envMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, + { 'uniform': normalMap = 0, 'name': "normalMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, + { 'uniform': glowMap = 0, 'name': "glowMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) }, + { 'uniform': matAmbient = 0, 'name': "u_matAmbient", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, + { 'uniform': matDiffuse = 0, 'name': "u_matDiffuse", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, + { 'uniform': matSpecular = 0, 'name': "u_matSpecular", 'type': RDGE.UNIFORMTYPE.FLOAT4, 'value': new Float32Array(4) }, + { 'uniform': matShininess = 0, 'name': "u_matShininess", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(1) }, + { 'uniform': matEmission = 0, 'name': "u_matEmission", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(4) }, + { 'uniform': frustumFarZ = 0, 'name': "u_frustumFarZ", 'type': RDGE.UNIFORMTYPE.FLOAT, 'value': new Float32Array(1) }, + { 'uniform': shadowLightWorld = 0, 'name': "u_shadowLightWorld", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': shadowBiasMatrix = 0, 'name': "u_shadowBiasMatrix", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': vShadowLight = 0, 'name': "u_vShadowLight", 'type': RDGE.UNIFORMTYPE.MATRIX4, 'value': new Float32Array(16) }, + { 'uniform': depthMap = 0, 'name': "depthMap", 'type': RDGE.UNIFORMTYPE.TEXTURE2D, 'value': new Int32Array(1) } + ]; + + return _MasterUniformList; +}; + +RDGE.RDGEUniformInit = function () { + this.uniformList = RDGE.CreateMasterList(); + this.uniformMap = []; + for (var idx = 0; idx < this.uniformList.length; ++idx) { + this.uniformMap[this.uniformList[idx].name] = this.uniformList[idx]; + } +}; + +RDGE.RDGEUniformInit.prototype.SetUni = function (name, _value) { + //this.uniformMap[name].value.set(_value); + + this.uniformMap[name].value = _value; +}; + +// Globally available uniform storage +RDGE.RDGEUniform = new RDGE.RDGEUniformInit(); + +RDGE.RenderContext = function () { + this.shaderProg = null; + this.uniforms = []; + this.textureList = []; + this.curRenderProc = null; + this.light0Color = [1, 1, 1, 0]; + this.parentID = 0; + this.world = RDGE.mat4.identity(); + this.hide = false; + enableNormalMapping = true; + this.lights = [null, null, null, null]; + + // state settings - set functions in the array that set states or 'other' so long as it makes since + this.stateSettings = []; +}; + +RDGE.RenderContext.prototype.Load = function (ctx) { + this.shaderProg = ctx.shaderProg; + this.uniforms = ctx.uniforms.slice(); + this.textureList = ctx.textureList.slice(); + this.stateSettings = ctx.stateSettings.slice(); + this.curRenderProc = ctx.curRenderProc; + this.light0Color = ctx.light0Color.slice(); + this.parentID = ctx.parentID; + this.world = RDGE.mat4.copy(ctx.world); + this.lights = ctx.lights.slice(); + + // the camera + this.cam = this.cam; + + // state settings - set functions in the array that set states or 'other' so long as it makes since + this.stateSettings = this.stateSettings.slice(); +}; + +RDGE.__lastInited = []; // keep list of initialized shaders + +RDGE._SetShader = function (program) { + gl.useProgram(program); + + if (RDGE.__lastInited[program.shaderID] === undefined) { + RDGE.__lastInited[program.shaderID] = true; + // init the uniforms + gl.enableVertexAttribArray(0); + gl.enableVertexAttribArray(1); + gl.enableVertexAttribArray(2); + + var deleteMe = []; + for (var uniIndex = 0; uniIndex < program.RDGEUniform.uniformList.length; uniIndex++) { + + var handle = gl.getUniformLocation(program, program.RDGEUniform.uniformList[uniIndex].name); + if (handle) + program.RDGEUniform.uniformList[uniIndex].uniform = handle; + else { + program.RDGEUniform.uniformList.splice(uniIndex, 1); + uniIndex = Math.max(uniIndex - 1, 0); + } + } + } +} + +// take a parameterless function +RDGE.RenderContext.prototype.AddStateSetting = function (functor) { + this.stateSettings.push(functor); +}; + +// take a parameterless function +RDGE.RenderContext.prototype.Apply = function () { + + // set shader program to use + shaderProg = null; + if (this.shaderProg != null) { + RDGE._SetShader(this.shaderProg); + shaderProg = this.shaderProg; + } + else { + RDGE._SetShader(RDGE.globals.engine.defaultContext.shaderProg); + shaderProg = RDGE.globals.engine.defaultContext.shaderProg; + } + + // set shader values (name/uniform pair must be in the master list) + + if (this.uniforms.length > 0) { + for (var idx = 0; idx < this.uniforms.length; ++idx) { + shaderProg.RDGEUniform.SetUni(this.uniforms[idx].name, this.uniforms[idx].value); + } + } + + // set the diffuse color + shaderProg.RDGEUniform.SetUni("u_lightDiff", this.light0Color); + + + for (var setIdx = 0; setIdx < this.stateSettings.length; ++setIdx) { + // call state funcs + this.stateSettings[setIdx](); + } + + this.bindTextures(); +}; + +RDGE.RenderContext.prototype.bindTextures = function () { + + var ctx = RDGE.globals.engine.getContext().renderer.ctx; + // gl.activeTexture(gl.TEXTURE0); + // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_whiteTex); + // gl.activeTexture(gl.TEXTURE0); + // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_whiteTex); + + // gl.activeTexture(gl.TEXTURE2); + // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_blueTex); + // gl.activeTexture(gl.TEXTURE2); + // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_blueTex); + + // gl.activeTexture(gl.TEXTURE3); + // gl.bindTexture(gl.TEXTURE_CUBE_MAP, RDGE.g_blackTex); + // gl.activeTexture(gl.TEXTURE3); + // gl.bindTexture(gl.TEXTURE_2D, RDGE.g_blackTex); + + for (var uniIndex = 0; uniIndex < this.textureList.length; uniIndex++) { + var bind = this.textureList[uniIndex]; + + switch (bind.type) { + case RDGE.UNIFORMTYPE.TEXTURE2D: + ctx.activeTexture(ctx.TEXTURE0 + bind.unit); + ctx.bindTexture(ctx.TEXTURE_2D, bind.handle); + break; + case RDGE.UNIFORMTYPE.TEXTURECUBE: + ctx.activeTexture(ctx.TEXTURE0 + bind.unit); + ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, bind.handle); + break; + default: + // gl.console.log("!!!! - trying to bind unknown texture type"); + break; + } + } + + if (!enableNormalMapping) { + ctx.activeTexture(ctx.TEXTURE2); + ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, RDGE.g_blueTex); + ctx.activeTexture(ctx.TEXTURE2); + ctx.bindTexture(ctx.TEXTURE_2D, RDGE.g_blueTex); + } +}; + +RDGE.funcmap = {}; + +RDGE.funcmap[RDGE.UNIFORMTYPE.INT] = function (a, b) { + gl.uniform1iv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT] = function (a, b) { + gl.uniform1fv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT2] = function (a, b) { + gl.uniform2fv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT3] = function (a, b) { + gl.uniform3fv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.FLOAT4] = function (a, b) { + gl.uniform4fv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.MATRIX3] = function (a, b) { + gl.uniformMatrix3fv(a, false, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.MATRIX4] = function (a, b) { + gl.uniformMatrix4fv(a, false, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.TEXTURE2D] = function (a, b) { + gl.activeTexture(gl.TEXTURE0 + b); + gl.uniform1iv(a, b); +}; +RDGE.funcmap[RDGE.UNIFORMTYPE.TEXTURECUBE] = function (a, b) { + gl.activeTexture(gl.TEXTURE0 + b); + gl.uniform1iv(a, b); +}; + +RDGE._bindUniforms = function (shaderProg) { + var len = shaderProg.RDGEUniform.uniformList.length; + var uniforms = shaderProg.RDGEUniform.uniformList; + + for (var uniIndex = 0; uniIndex < len; uniIndex++) { + var bind = uniforms[uniIndex]; + RDGE.funcmap[bind.type](bind.uniform, bind.value); + } +}; -- cgit v1.2.3