blockEntity.vert 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #version 430 core
  2. layout(location = 0) in vec3 shape;
  3. layout(location = 1) in vec3 normal;
  4. layout(location = 2) in vec2 uv;
  5. uniform ivec3 u_entityPositionInt;
  6. uniform vec3 u_entityPositionFloat;
  7. uniform mat4 u_viewProjection;
  8. uniform mat4 u_modelMatrix;
  9. uniform ivec3 u_cameraPositionInt;
  10. uniform vec3 u_cameraPositionFloat;
  11. uniform int u_lightValue;
  12. out vec2 v_uv;
  13. flat out int v_id;
  14. out vec3 v_vertexPosition;
  15. out vec3 v_normals;
  16. flat out float v_ambient;
  17. void main()
  18. {
  19. vec3 diffI = u_entityPositionInt - u_cameraPositionInt;
  20. vec3 diffF = diffI - u_cameraPositionFloat + u_entityPositionFloat;
  21. vec4 posViewSemi = vec4(diffF + vec3(u_modelMatrix * vec4(shape, 1)), 1);
  22. vec4 posProjection = u_viewProjection * posViewSemi;
  23. gl_Position = posProjection;
  24. v_uv = uv;
  25. v_id = gl_VertexID;
  26. v_vertexPosition = posViewSemi.xyz;
  27. v_normals = normalize((transpose(inverse(u_modelMatrix)) * vec4(normal, 0.0)).xyz);
  28. const float baseAmbient = 0.25;
  29. const float multiplier = 0.6;
  30. v_ambient = pow((u_lightValue/15.f) * multiplier * (1.f-baseAmbient) + baseAmbient, 2.2);
  31. }