From 22cbc9644b79df60b3f6336f9563debd47fb3ea1 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 28 Jun 2012 11:44:15 -0700 Subject: Added capability to split a mesh into multiiple parts to avoid buffer overflow situations. --- js/lib/rdge/materials/radial-gradient-material.js | 50 ++++++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) (limited to 'js/lib/rdge/materials/radial-gradient-material.js') diff --git a/js/lib/rdge/materials/radial-gradient-material.js b/js/lib/rdge/materials/radial-gradient-material.js index c9c2536f..a5fc2224 100755 --- a/js/lib/rdge/materials/radial-gradient-material.js +++ b/js/lib/rdge/materials/radial-gradient-material.js @@ -75,9 +75,25 @@ var RadialGradientMaterial = function RadialGradientMaterial() { this.setShaderValues(); }; - this.fitToPrimitive = function( prim ) + this.resetToDefault = function() + { + this._propValues[this._propNames[0]] = this._defaultColor1.slice(0); + this._propValues[this._propNames[1]] = this._defaultColor2.slice(0); + this._propValues[this._propNames[2]] = this._defaultColor3.slice(0); + this._propValues[this._propNames[3]] = this._defaultColor4.slice(0); + + this._propValues[this._propNames[4]] = this._defaultColorStop1; + this._propValues[this._propNames[5]] = this._defaultColorStop2; + this._propValues[this._propNames[6]] = this._defaultColorStop3; + this._propValues[this._propNames[7]] = this._defaultColorStop4; + + var nProps = this._propNames.length; + for (var i=0; i bounds[3]) bounds[3] = b2[3]; + if (b2[4] > bounds[4]) bounds[4] = b2[4]; + if (b2[5] > bounds[5]) bounds[5] = b2[5]; + } + + this.fitToBounds( bounds ); + }; + + this.fitToPrimitive = function( prim ) + { + var bounds = ShapePrimitive.getBounds( prim ); + this.fitToBounds( bounds ); }; this.customExport = function( jObj ) -- cgit v1.2.3 From 648ee61ae84216d0236e0dbc211addc13b2cfa3a Mon Sep 17 00:00:00 2001 From: Kris Kowal Date: Fri, 6 Jul 2012 11:52:06 -0700 Subject: Expand tabs --- js/lib/rdge/materials/radial-gradient-material.js | 170 +++++++++++----------- 1 file changed, 85 insertions(+), 85 deletions(-) (limited to 'js/lib/rdge/materials/radial-gradient-material.js') diff --git a/js/lib/rdge/materials/radial-gradient-material.js b/js/lib/rdge/materials/radial-gradient-material.js index 6a5a9e9a..f7e28083 100755 --- a/js/lib/rdge/materials/radial-gradient-material.js +++ b/js/lib/rdge/materials/radial-gradient-material.js @@ -47,17 +47,17 @@ var RadialGradientMaterial = function RadialGradientMaterial() { this._defaultColorStop2 = 0.3; this._defaultColorStop3 = 0.6; this._defaultColorStop4 = 1.0; - // this._defaultColorCount = 4; + // this._defaultColorCount = 4; - this._textureTransform = [1,0,0, 0,1,0, 0,0,1]; + this._textureTransform = [1,0,0, 0,1,0, 0,0,1]; /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - this.isAnimated = function () { return false; }; - this.getShaderDef = function() { return radialGradientMaterialDef; }; + this.isAnimated = function () { return false; }; + this.getShaderDef = function() { return radialGradientMaterialDef; }; /////////////////////////////////////////////////////////////////////// // Material Property Accessors @@ -95,49 +95,49 @@ var RadialGradientMaterial = function RadialGradientMaterial() { this._materialNode.setShader(this._shader); // set the shader values in the shader - this._shader['default'].u_texTransform.set( this._textureTransform ); + this._shader['default'].u_texTransform.set( this._textureTransform ); this.setShaderValues(); }; - this.fitToPrimitive = function( prim ) - { - var bounds = ShapePrimitive.getBounds( prim ); - if (bounds) - { - var dx = Math.abs( bounds[3] - bounds[0] ), - dy = Math.abs( bounds[4] - bounds[1] ); - if (dy == 0) dy = 1.0; - if (dx == 0) dx = 1.0; - var xScale = 2.0, yScale = 2.0; - if (dx > dy) - yScale *= dy/dx; - else - xScale *= dx/dy; - - // build the matrix - the translation to the origin, the scale, - // and the translation back to the center (hard coded at (0.5, 0.5) for now). - // the matrix is build directly instead of with matrix multiplications - // for efficiency, not to mention that the multiplication function does - // not exist for mat3's. - // the matrix as laid out below looks transposed - order is columnwise. - var xCtr = 0.5, yCtr = 0.5; - this._textureTransform = [ - xScale, 0.0, 0.0, - 0.0, yScale, 0.0, - xCtr*(1-xScale), yCtr*(1 - yScale), 1.0 - ]; - - if (this._shader && this._shader['default']) - this._shader['default'].u_texTransform.set( this._textureTransform ); - - } - }; - - this.customExport = function( jObj ) - { - jObj.u_texTransform = this._textureTransform.slice(); - return jObj; - } + this.fitToPrimitive = function( prim ) + { + var bounds = ShapePrimitive.getBounds( prim ); + if (bounds) + { + var dx = Math.abs( bounds[3] - bounds[0] ), + dy = Math.abs( bounds[4] - bounds[1] ); + if (dy == 0) dy = 1.0; + if (dx == 0) dx = 1.0; + var xScale = 2.0, yScale = 2.0; + if (dx > dy) + yScale *= dy/dx; + else + xScale *= dx/dy; + + // build the matrix - the translation to the origin, the scale, + // and the translation back to the center (hard coded at (0.5, 0.5) for now). + // the matrix is build directly instead of with matrix multiplications + // for efficiency, not to mention that the multiplication function does + // not exist for mat3's. + // the matrix as laid out below looks transposed - order is columnwise. + var xCtr = 0.5, yCtr = 0.5; + this._textureTransform = [ + xScale, 0.0, 0.0, + 0.0, yScale, 0.0, + xCtr*(1-xScale), yCtr*(1 - yScale), 1.0 + ]; + + if (this._shader && this._shader['default']) + this._shader['default'].u_texTransform.set( this._textureTransform ); + + } + }; + + this.customExport = function( jObj ) + { + jObj.u_texTransform = this._textureTransform.slice(); + return jObj; + } }; /////////////////////////////////////////////////////////////////////////////////////// @@ -146,48 +146,48 @@ var RadialGradientMaterial = function RadialGradientMaterial() { // shader spec (can also be loaded from a .JSON file, or constructed at runtime) var radialGradientMaterialDef = { 'shaders': - { - 'defaultVShader': "assets/shaders/radialGradient.vert.glsl", - 'defaultFShader': "assets/shaders/radialGradient.frag.glsl" - }, + { + 'defaultVShader': "assets/shaders/radialGradient.vert.glsl", + 'defaultFShader': "assets/shaders/radialGradient.frag.glsl" + }, 'techniques': - { - 'default': - [ - { - 'vshader': 'defaultVShader', - 'fshader': 'defaultFShader', - // attributes - 'attributes': - { - 'vert': { 'type': 'vec3' }, - 'normal': { 'type': 'vec3' }, - 'texcoord': { 'type': 'vec2' } - }, - // parameters - 'params': - { - 'u_color1': { 'type': 'vec4' }, - 'u_color2': { 'type': 'vec4' }, - 'u_color3': { 'type': 'vec4' }, - 'u_color4': { 'type': 'vec4' }, - 'u_colorStop1': { 'type': 'float' }, - 'u_colorStop2': { 'type': 'float' }, - 'u_colorStop3': { 'type': 'float' }, - 'u_colorStop4': { 'type': 'float' }, - 'u_texTransform': { 'type' : 'mat3' } - //'u_colorCount': {'type' : 'int' } - }, - - // render states - 'states': - { - 'depthEnable': true, - 'offset': [1.0, 0.1] - } - } - ] - } + { + 'default': + [ + { + 'vshader': 'defaultVShader', + 'fshader': 'defaultFShader', + // attributes + 'attributes': + { + 'vert': { 'type': 'vec3' }, + 'normal': { 'type': 'vec3' }, + 'texcoord': { 'type': 'vec2' } + }, + // parameters + 'params': + { + 'u_color1': { 'type': 'vec4' }, + 'u_color2': { 'type': 'vec4' }, + 'u_color3': { 'type': 'vec4' }, + 'u_color4': { 'type': 'vec4' }, + 'u_colorStop1': { 'type': 'float' }, + 'u_colorStop2': { 'type': 'float' }, + 'u_colorStop3': { 'type': 'float' }, + 'u_colorStop4': { 'type': 'float' }, + 'u_texTransform': { 'type' : 'mat3' } + //'u_colorCount': {'type' : 'int' } + }, + + // render states + 'states': + { + 'depthEnable': true, + 'offset': [1.0, 0.1] + } + } + ] + } }; RadialGradientMaterial.prototype = new Material(); -- cgit v1.2.3 From 04343eda8c2f870b0da55cfdc8003c99fe1cc4de Mon Sep 17 00:00:00 2001 From: Kris Kowal Date: Fri, 6 Jul 2012 11:53:10 -0700 Subject: Remove trailing spaces --- js/lib/rdge/materials/radial-gradient-material.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'js/lib/rdge/materials/radial-gradient-material.js') diff --git a/js/lib/rdge/materials/radial-gradient-material.js b/js/lib/rdge/materials/radial-gradient-material.js index f7e28083..ab7cf484 100755 --- a/js/lib/rdge/materials/radial-gradient-material.js +++ b/js/lib/rdge/materials/radial-gradient-material.js @@ -54,7 +54,7 @@ var RadialGradientMaterial = function RadialGradientMaterial() { /////////////////////////////////////////////////////////////////////// // Property Accessors /////////////////////////////////////////////////////////////////////// - + this.isAnimated = function () { return false; }; this.getShaderDef = function() { return radialGradientMaterialDef; }; @@ -126,9 +126,9 @@ var RadialGradientMaterial = function RadialGradientMaterial() { 0.0, yScale, 0.0, xCtr*(1-xScale), yCtr*(1 - yScale), 1.0 ]; - + if (this._shader && this._shader['default']) - this._shader['default'].u_texTransform.set( this._textureTransform ); + this._shader['default'].u_texTransform.set( this._textureTransform ); } }; -- cgit v1.2.3 From ac27d538af33ca8d67d3d88729f49c05793afda7 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 9 Jul 2012 11:43:36 -0700 Subject: PI, drawing and editing fixes for shapes and materials. IKNinja-1841 - Cannot change webgl shape with LinearGradient and RadialGradient to solid color. IKNINJA-1851 - Cannot draw webgl shapes with Linear/RadialGradient material. IKNINJA-1864 - PI doesn't update the color of shape if WebGL material switches to Flat. IKNINJA-1886 - Gradient edits not applied to WebGL Stage object. Signed-off-by: Nivesh Rajbhandari --- js/lib/rdge/materials/radial-gradient-material.js | 43 ++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'js/lib/rdge/materials/radial-gradient-material.js') diff --git a/js/lib/rdge/materials/radial-gradient-material.js b/js/lib/rdge/materials/radial-gradient-material.js index c9c2536f..c68cad43 100755 --- a/js/lib/rdge/materials/radial-gradient-material.js +++ b/js/lib/rdge/materials/radial-gradient-material.js @@ -113,7 +113,48 @@ var RadialGradientMaterial = function RadialGradientMaterial() { { jObj.u_texTransform = this._textureTransform.slice(); return jObj; - } + }; + + // Only Linear Gradient and Radial Gradient have gradient data. + this.gradientType = "radial"; + + this.getGradientData = function() { + var angle = Math.round(this._angle*180/Math.PI), + color, + colorStr, + css = "-webkit-gradient(linear, " + angle + "deg"; + + // TODO - Angle is not supported in -webkit-gradient syntax, so just default to across: + css = '-webkit-radial-gradient(50% 50%, ellipse cover'; + + // TODO - Also, Color Model requires from and to in the gradient string + for (var i=1; i < 5; i++) { + color = this.getProperty('u_color'+i); + colorStr = Math.round(color[0] * 255) + ', ' + Math.round(color[1] * 255) + ', ' + Math.round(color[2] * 255) + ', ' + Math.round(color[3] * 100); + css += ', rgba(' + colorStr + ') ' + Math.round(this.getProperty('u_colorStop'+i)*100) + '%'; + } + + css += ')'; + + return css; + }; + + this.setGradientData = function(colors) { + var len = colors.length; + // TODO - Current shaders only support 4 color stops + if (len > 4) { + len = 4; + } + + for (var n = 0; n < len; n++) { + var position = colors[n].position/100; + var cs = colors[n].value; + var stop = [cs.r/255, cs.g/255, cs.b/255, cs.a]; + + this.setProperty("u_color" + (n + 1), stop.slice(0)); + this.setProperty("u_colorStop" + (n + 1), position); + } + }; }; /////////////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3 From fdbec324dad4ab33d97282ab021d2c1661bc097c Mon Sep 17 00:00:00 2001 From: Kris Kowal Date: Mon, 9 Jul 2012 16:27:52 -0700 Subject: BSD License --- js/lib/rdge/materials/radial-gradient-material.js | 25 ++++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'js/lib/rdge/materials/radial-gradient-material.js') diff --git a/js/lib/rdge/materials/radial-gradient-material.js b/js/lib/rdge/materials/radial-gradient-material.js index f1094771..f99b78de 100755 --- a/js/lib/rdge/materials/radial-gradient-material.js +++ b/js/lib/rdge/materials/radial-gradient-material.js @@ -1,24 +1,25 @@ /* -Copyright (c) 2012, Motorola Mobility, Inc +Copyright (c) 2012, Motorola Mobility LLC. 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. +* 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 LLC 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 +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 @@ -110,7 +111,7 @@ var RadialGradientMaterial = function RadialGradientMaterial() { this._propValues[this._propNames[5]] = this._defaultColorStop2; this._propValues[this._propNames[6]] = this._defaultColorStop3; this._propValues[this._propNames[7]] = this._defaultColorStop4; - + var nProps = this._propNames.length; for (var i=0; i