From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- assets/shaders/test_vshader.glsl | 82 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 assets/shaders/test_vshader.glsl (limited to 'assets/shaders/test_vshader.glsl') diff --git a/assets/shaders/test_vshader.glsl b/assets/shaders/test_vshader.glsl new file mode 100644 index 00000000..a02d9720 --- /dev/null +++ b/assets/shaders/test_vshader.glsl @@ -0,0 +1,82 @@ +/* +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. +
*/ + + +attribute vec3 vert; +attribute vec3 normal; +attribute vec2 texcoord; + +// matrix uniforms +uniform mat4 u_mvMatrix; +uniform vec3 u_eye; +uniform mat4 u_normalMatrix; +uniform mat4 u_projMatrix; +uniform mat4 u_worldMatrix; + +uniform mat4 u_shadowLightWorld; +uniform mat4 u_shadowBiasMatrix; +uniform mat4 u_vShadowLight; +uniform vec3 u_lightPos; + +// varyings +varying vec4 vNormal; // w = texcoord.x +varying vec4 vECPos; // w = texcoord.y +varying vec3 vEyePos; +varying vec4 vShadowCoord; +varying vec2 vEnvTexCoord; +varying float vDiffuseIntensity; + +#ifdef PC +void main() +{ + vNormal.w = texcoord.x; + vECPos.w = texcoord.y; + vEyePos = u_eye; + +// position normals and vert + vECPos.xyz = (u_mvMatrix*vec4(vert, 1.0)).xyz; + vNormal.xyz = (u_normalMatrix*vec4(normal, 0.0)).xyz; + +// pass along the geo + gl_Position = u_projMatrix * vec4(vECPos.xyz, 1.0); + + mat4 shadowMat = u_shadowBiasMatrix*u_projMatrix*u_vShadowLight*u_worldMatrix; + vShadowCoord = shadowMat * vec4(vert, 1.0); +} +#endif + +#ifdef DEVICE + +void main() +{ + vNormal.w = texcoord.x; + vECPos.w = texcoord.y; + vEyePos = u_eye; + +// position normals and vert + vECPos.xyz = (u_mvMatrix*vec4(vert, 1.0)).xyz; + vNormal.xyz = (u_normalMatrix*vec4(normal, 0.0)).xyz; + +// pass along the geo + gl_Position = u_projMatrix * vec4(vECPos.xyz, 1.0); + + //mat4 shadowMat = u_shadowBiasMatrix*u_projMatrix*u_vShadowLight*u_worldMatrix; + //vShadowCoord = shadowMat * vec4(vert, 1.0); + + // normal mapping + vec3 normal = normalize(vNormal.xyz); + + // create envmap coordinates + vec3 r = reflect( vec3(vECPos.xyz - u_eye.xyz), normal); + float m = 2.0 * length(r); + vEnvTexCoord = vec2(r.x/m + 0.5, r.y/m + 0.5); + + vec3 lightDirection = normalize(u_lightPos - vECPos.xyz); + vDiffuseIntensity = max(0.0, dot(normal, lightDirection)); + +} + +#endif -- cgit v1.2.3