From d5b216d9d6d2b8cb93106e8f8ca351089d05b41d Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Wed, 22 Feb 2012 11:52:31 -0800 Subject: Integrating canvas-2d and WebGL drawing fixes. Also adding back WebGL materials. Signed-off-by: Nivesh Rajbhandari --- assets/shaders/TwistVert.vert.glsl | 97 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 assets/shaders/TwistVert.vert.glsl (limited to 'assets/shaders/TwistVert.vert.glsl') diff --git a/assets/shaders/TwistVert.vert.glsl b/assets/shaders/TwistVert.vert.glsl new file mode 100644 index 00000000..29cb30ea --- /dev/null +++ b/assets/shaders/TwistVert.vert.glsl @@ -0,0 +1,97 @@ +/* +This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. +
*/ + + +#ifdef GL_ES +precision highp float; +#endif + + +// attributes +attribute vec3 vert; +attribute vec3 normal; +attribute vec2 texcoord; + +// scalar uniforms +uniform float u_limit1; +uniform float u_limit2; +uniform float u_twistAmount; +uniform float u_center; + +// texture sampler uniforms +uniform sampler2D u_tex0; +uniform sampler2D u_tex1; + +uniform vec4 color; + + +// matrix uniforms +uniform mat4 u_mvMatrix; +uniform mat4 u_projMatrix; +uniform mat4 u_worldMatrix; + +//varying vec4 v_color; +varying float v_zNormal; +varying vec2 v_texcoord; + + +float GetAngle( float t ) +{ + float angle= 0.0; + if (t < u_limit2) + { + if (t < u_limit1) + { + angle = u_twistAmount; + } + else + { + angle = (t - u_limit2)/(u_limit1 - u_limit2)*u_twistAmount; + } + } + + return angle; +} + + +void main(void) +{ + vec3 pos = vert; + vec2 uv = texcoord; + v_texcoord = texcoord; + + //v_color = vec4(texcoord.x, texcoord.y, 0, 1); + + v_zNormal = 1.0; + if (uv.x < u_limit2) + { + float angle = GetAngle( uv.x ); + float cs = cos(angle), sn = sin(angle); + + pos.y -= u_center; + vec3 ctrPt = pos; + float y = pos.y*cs - pos.z*sn + u_center; + pos.z = pos.y*sn + pos.z*cs; + pos.y = y; + + // rotate the normal + mat3 rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); + vec3 pt0 = ctrPt, pt1 = vec3(ctrPt.x, ctrPt.y+1.0, ctrPt.z), pt2 = vec3( ctrPt.x+1.0, ctrPt.y, ctrPt.z); + pt0 = rotMat * pt0; pt1 = rotMat * pt1; + angle = GetAngle(1.0); + cs = cos(angle); sn = sin(angle); + rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); + pt2 = rotMat * pt2; + pt0.y += u_center; pt1.y += u_center; pt2.y += u_center; + //vec4 nrm = u_projMatrix * u_mvMatrix * vec4( cross(pt1-pt0, pt2-pt0), 1.0 ); + vec4 nrm = vec4( cross(pt1-pt0, pt2-pt0), 1.0 ); + + //v_zNormal = normal.y*sn + normal.z*cs; + v_zNormal = -nrm.z; + } + + gl_Position = u_projMatrix * u_mvMatrix * vec4(pos,1.0) ; +} \ No newline at end of file -- cgit v1.2.3