Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 430
- in vec3 position;
- in vec2 textureCoords;
- in vec3 normal;
- out vec3 colour;
- out vec3 surfaceNormal;
- out vec4 clipSpace;
- out float visibility;
- out vec3 toLightVector[4];
- out vec2 textureCoords_fs;
- uniform mat4 PMatrix;
- uniform mat4 VMatrix;
- uniform vec3 lightPosition[4];
- uniform vec4 plane;
- uniform bool fog;
- const float density = 0.004;
- const float gradient = 5.0;
- void main(void) {
- vec4 worldPosition = vec4(position.x, position.y, position.z, 1.0);
- vec4 positionRelativeToCamera = VMatrix * worldPosition;
- gl_ClipDistance[0] = dot(worldPosition, plane);
- clipSpace = PMatrix * positionRelativeToCamera;
- gl_Position = clipSpace;
- textureCoords_fs = textureCoords * 8;
- surfaceNormal = normal;
- for(int i = 0; i < 4; i++) {
- toLightVector[i] = lightPosition[i] - worldPosition.xyz;
- }
- if(fog) {
- float distance = length(vec3(positionRelativeToCamera.x, positionRelativeToCamera.y * 0.2, positionRelativeToCamera.z));
- visibility = exp(-pow((distance*density), gradient));
- visibility = clamp(visibility, 0.0, 1.0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement