51 lines
1017 B
Plaintext
51 lines
1017 B
Plaintext
/*
|
|
Bump mapping shader without parallax mapping for not more than 8 light sources
|
|
The slowest bump mapping shader
|
|
|
|
*/
|
|
uniform vec3 CamPos;
|
|
uniform int ActiveLightCount;
|
|
uniform mat3 ModelRotateMatrix;
|
|
uniform vec3 ModelTranslateVector;
|
|
|
|
attribute vec3 Tangent;
|
|
attribute vec3 Binormal;
|
|
|
|
varying vec2 texCoord;
|
|
varying int activeLightCount;
|
|
varying vec3 camVec;
|
|
varying vec3 lightVec[8];
|
|
|
|
void main()
|
|
{
|
|
gl_Position = gl_ModelViewProjectionMatrix * vec4(ModelRotateMatrix * gl_Vertex.xyz + ModelTranslateVector, 1.0);
|
|
|
|
|
|
texCoord = gl_MultiTexCoord0.st;
|
|
|
|
|
|
activeLightCount = ActiveLightCount;
|
|
|
|
mat3 rot;
|
|
rot[0] = Tangent;
|
|
rot[1] = Binormal;
|
|
rot[2] = gl_Normal.xyz;
|
|
|
|
rot = ModelRotateMatrix * rot;
|
|
|
|
vec3 lVec;
|
|
vec3 cVec = CamPos - gl_Vertex.xyz;
|
|
camVec = cVec * rot;
|
|
|
|
for (int i=0; i<ActiveLightCount; i++)
|
|
{
|
|
|
|
if (gl_LightSource[i].position.w == 0.0)
|
|
lVec = gl_LightSource[i].position.xyz;
|
|
else
|
|
lVec = gl_LightSource[i].position.xyz - gl_Vertex.xyz;
|
|
|
|
lightVec[i] = lVec * rot;
|
|
}
|
|
|
|
} |