ho3/resources/shaders/NIU/multilight_bump.vertex
Vladislav Khorev d132060e19 Resurrection
2024-06-06 16:25:38 +03:00

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;
}
}