instanced_rsm.vert 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. uniform mat4 RSMMatrix;
  2. layout(location = 0) in vec3 Position;
  3. layout(location = 1) in vec3 Normal;
  4. layout(location = 2) in vec4 Color;
  5. layout(location = 3) in vec2 Texcoord;
  6. layout(location = 4) in vec2 SecondTexcoord;
  7. layout(location = 7) in vec3 Origin;
  8. layout(location = 8) in vec3 Orientation;
  9. layout(location = 9) in vec3 Scale;
  10. #ifdef Use_Bindless_Texture
  11. layout(location = 10) in uvec2 Handle;
  12. #endif
  13. out vec3 nor;
  14. out vec2 uv;
  15. out vec2 uv_bis;
  16. out vec4 color;
  17. #ifdef Use_Bindless_Texture
  18. flat out uvec2 handle;
  19. #endif
  20. mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
  21. mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
  22. void main(void)
  23. {
  24. mat4 ModelMatrix = getWorldMatrix(Origin, Orientation, Scale);
  25. mat4 ModelViewProjectionMatrix = RSMMatrix * ModelMatrix;
  26. mat4 TransposeInverseModel = transpose(inverse(ModelMatrix));
  27. gl_Position = ModelViewProjectionMatrix * vec4(Position, 1.);
  28. nor = (TransposeInverseModel * vec4(Normal, 0.)).xyz;
  29. uv = Texcoord;
  30. color = Color.zyxw;
  31. #ifdef Use_Bindless_Texture
  32. handle = Handle;
  33. #endif
  34. }