openmw/files/shaders/objects_vertex.glsl

66 lines
1.3 KiB
Text
Raw Normal View History

#version 120
#if @diffuseMap
varying vec2 diffuseMapUV;
#endif
2016-02-16 22:32:59 +01:00
#if @darkMap
varying vec2 darkMapUV;
#endif
#if @detailMap
varying vec2 detailMapUV;
#endif
#if @emissiveMap
varying vec2 emissiveMapUV;
#endif
2016-02-16 22:32:59 +01:00
varying float depth;
2016-02-16 23:30:23 +01:00
2016-02-17 23:39:06 +01:00
#define PER_PIXEL_LIGHTING 0
#if !PER_PIXEL_LIGHTING
varying vec4 lighting;
2016-02-17 23:39:06 +01:00
#else
varying vec3 passViewPos;
varying vec3 passViewNormal;
varying vec4 passColour;
#endif
2016-02-16 23:30:23 +01:00
2016-02-17 23:29:26 +01:00
#include "lighting.glsl"
2016-02-16 23:30:23 +01:00
void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
2016-02-16 22:32:59 +01:00
depth = gl_Position.z;
vec4 viewPos = (gl_ModelViewMatrix * gl_Vertex);
gl_ClipVertex = viewPos;
vec3 viewNormal = normalize((gl_NormalMatrix * gl_Normal).xyz);
#if @diffuseMap
2016-02-17 02:46:47 +01:00
diffuseMapUV = (gl_TextureMatrix[@diffuseMapUV] * gl_MultiTexCoord@diffuseMapUV).xy;
#endif
2016-02-16 23:30:23 +01:00
#if @darkMap
darkMapUV = (gl_TextureMatrix[@darkMapUV] * gl_MultiTexCoord@darkMapUV).xy;
#endif
#if @detailMap
detailMapUV = (gl_TextureMatrix[@detailMap] * gl_MultiTexCoord@detailMap).xy;
#endif
#if @emissiveMap
emissiveMapUV = (gl_TextureMatrix[@emissiveMapUV] * gl_MultiTexCoord@emissiveMapUV).xy;
#endif
2016-02-17 23:39:06 +01:00
#if !PER_PIXEL_LIGHTING
lighting = doLighting(viewPos.xyz, viewNormal, gl_Color);
2016-02-17 23:39:06 +01:00
#else
passViewPos = viewPos.xyz;
passViewNormal = viewNormal;
passColour = gl_Color;
#endif
}