#version 330 core

layout(location = 0) in vec4 pos;

out vec3 vRayDir;
out vec3 vRayDirView;

uniform mat4 osg_ModelViewMatrix;
uniform mat4 osg_ModelViewProjectionMatrix;

void main()
{
    gl_Position = osg_ModelViewProjectionMatrix * pos;
    // Get the camera height (0 being the ground)
    vec4 groundPoint = osg_ModelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0);
    float altitude = length(groundPoint);
    // Compensate for the skydome being fixed on the ground
    vRayDir = normalize(pos.xyz - vec3(0.0, 0.0, altitude));
    vRayDirView = (osg_ModelViewMatrix * vec4(vRayDir, 0.0)).xyz;
}