Advertisement
Guest User

vertexshader

a guest
Jul 17th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #version 430
  2.  
  3. in vec3 position;
  4. in vec2 textureCoords;
  5. in vec3 normal;
  6.  
  7. out vec3 colour;
  8. out vec3 surfaceNormal;
  9. out vec4 clipSpace;
  10. out float visibility;
  11. out vec3 toLightVector[4];
  12. out vec2 textureCoords_fs;
  13.  
  14. uniform mat4 PMatrix;
  15. uniform mat4 VMatrix;
  16.  
  17. uniform vec3 lightPosition[4];
  18. uniform vec4 plane;
  19. uniform bool fog;
  20.  
  21. const float density = 0.004;
  22. const float gradient = 5.0;
  23.  
  24. void main(void) {
  25.    
  26.     vec4 worldPosition = vec4(position.x, position.y, position.z, 1.0);
  27.     vec4 positionRelativeToCamera = VMatrix * worldPosition;
  28.     gl_ClipDistance[0] = dot(worldPosition, plane);
  29.     clipSpace = PMatrix * positionRelativeToCamera;
  30.     gl_Position = clipSpace;
  31.  
  32.     textureCoords_fs = textureCoords * 8;
  33.     surfaceNormal = normal;
  34.  
  35.     for(int i = 0; i < 4; i++) {
  36.         toLightVector[i] = lightPosition[i] - worldPosition.xyz;
  37.     }
  38.    
  39.     if(fog) {
  40.         float distance = length(vec3(positionRelativeToCamera.x, positionRelativeToCamera.y * 0.2, positionRelativeToCamera.z));
  41.         visibility = exp(-pow((distance*density), gradient));
  42.         visibility = clamp(visibility, 0.0, 1.0);
  43.     }
  44.  
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement