well for some reason when i try to run a perfectly fine shader it either crashes or doesnt work as it shoud.. ive tried writing my own shader calsses but these didnt work.. so now im using Phantoms shaderclass... which for some wierd reason sometimes crashes even if i try to run what i think is working shaders...
here is my current code... why do u think it crashes...
// VERTEX
#version 110
varying vec3 Vertex;
void main()
{
Vertex = gl_Vertex.xyz;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_TexCoord[1] = gl_MultiTexCoord1;
gl_Position = ftransform();
}
// FRAGMENT
#version 110
varying vec3 Vertex;
uniform sampler2D normals;
uniform float angle;
uniform vec3 ViewPos;
void main()
{
float RealHeight = texture2D(normals, gl_TexCoord[0].st).a;
float GeoHeight = Vertex.y;
float s = 0.042;
float b = -s/2.0;
float HeightDiff = abs(GeoHeight-RealHeight);
float DevHeight = (HeightDiff*s)+b;
float ViewSlope = distance(Vertex.xz, ViewPos.xz)/distance(Vertex.y, ViewPos.y);
vec2 NewTexCoord = gl_TexCoord[0].st+DevHeight*ViewSlope;
vec3 Normal = texture2D(normals, gl_TexCoord[0].st).rgb*2.0-1.0;
vec3 LightDir = vec3(-cos(angle*0.01745329), -sin(angle*0.01745329), 0.0);
float brightnes = dot(LightDir, Normal);
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0)*brightnes ;
}
_______________________________
ShaderProgram->sendUniform("normals", 0);
ShaderProgram->sendUniform("angle", SunAngle);
ShaderProgram->sendUniform("ViewPos", m_Cam->Position.x, m_Cam->Position.y, m_Cam->Position.z );
glCallList(Chunk->List);
but for some reason it works just fine like this...
// VERTEX
#version 110
varying vec3 Vertex;
void main()
{
Vertex = gl_Vertex.xyz;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_TexCoord[1] = gl_MultiTexCoord1;
gl_Position = ftransform();
}
// FRAGMENT
#version 110
varying vec3 Vertex;
uniform sampler2D normals;
uniform float angle;
void main()
{
vec3 Normal = texture2D(normals, gl_TexCoord[0].st).rgb*2.0-1.0;
vec3 LightDir = vec3(-cos(angle*0.01745329), -sin(angle*0.01745329), 0.0);
float brightnes = dot(LightDir, Normal);
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0)*brightnes ;
}
_______________________________
ShaderProgram->sendUniform("normals", 0);
ShaderProgram->sendUniform("angle", SunAngle);
glCallList(Chunk->List);