// Copyright 2006-2010 (C) - Frictional Games // // This file is part of HPL1 Engine // // For conditions of distribution and use, see copyright notice in LICENSE-shaders // /////////////////////////////////////////////////////// /// DIFFUSE LIGHTING VERTEX PROGRAM //////////// /////////////////////////////////////////////////////// vec4 position = gl_Vertex; vec3 normal = gl_Normal; vec2 uv = gl_MultiTexCoord0.xy; vec4 tangent = gl_MultiTexCoord1; out vec4 vLightColor; out vec2 vUv; out vec3 vLightDir; uniform mat4 worldViewProj; uniform vec3 LightPos; uniform vec4 LightColor; uniform vec3 LightDirMul; void main() { gl_Position = (worldViewProj * position); vUv = uv; vec3 lightDir = LightPos - position.xyz; vLightDir = lightDir * LightDirMul; //Calculate rotation for light to get it to tangent space. vec3 binormal = cross(normal,tangent.xyz)*tangent.w; mat3 rotation = transpose(mat3(tangent.xyz, binormal, normal)); //Transform the lightdir vLightDir = (rotation * vLightDir); vLightColor = clamp(LightColor, vec4(0.0), vec4(1.0)); }