efl/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd

52 lines
1.1 KiB
Plaintext

uniform mat4 uMatrixMvp;
uniform mat3 uMatrixNormal;
uniform mat4 uMatrixModelview;
uniform vec4 uLightPosition;
varying vec3 vLightVector;
varying vec3 vLightHalfVector;
varying vec3 vNormal;
VERTEX_SHADER_USE_SHADOWS
VERTEX_SHADER_USE_POSITION
VERTEX_SHADER_USE_NORMALS
VERTEX_SHADER_USE_TEXCOORD
VERTEX_SHADER_NEED_TEX_COORD
VERTEX_SHADER_USE_LIGHT_ATTENUATION
void vertexPhong(vec4 position, vec3 normal)
{
normal = uMatrixNormal * normal;
position = uMatrixModelview * position;
#ifdef NORMALIZE_NORMALS
normal = normalize(normal);
#endif //NORMALIZE_NORMALS
#ifdef LIGHT_DIRECTIONAL
vLightVector = uLightPosition.xyz;
#else
vLightVector = uLightPosition.xyz - position.xyz;
#ifdef LIGHT_ATTENUATION
vLightDist = length(vLightVector);
#endif //LIGHT_ATTENUATION
vLightVector = normalize(vLightVector);
#endif //LIGHT_DIRECTIONAL
vLightHalfVector = normalize(normalize(-position.xyz) + vLightVector);
vNormal = normal;
}
void main() {
VERTEX_SHADER_POSITION
VERTEX_SHADER_NORMAL
VERTEX_SHADER_TEXCOORD
gl_Position = uMatrixMvp * position;
vertexPhong(position, normal);
VERTEX_SHADER_SHADOWED
}