basic.vert 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #version 330 core
  2. layout(location = 0) in vec3 a_position;
  3. layout(location = 1) in vec3 a_normal;
  4. layout(location = 2) in vec2 a_texCoord;
  5. layout(location = 3) in vec4 a_instanceModelCol0;
  6. layout(location = 4) in vec4 a_instanceModelCol1;
  7. layout(location = 5) in vec4 a_instanceModelCol2;
  8. layout(location = 6) in vec4 a_instanceColorAlpha;
  9. uniform mat4 u_mvp;
  10. uniform mat4 u_model;
  11. uniform mat4 u_viewProj;
  12. uniform bool u_instanced;
  13. out vec3 v_normal;
  14. out vec2 v_texCoord;
  15. out vec3 v_worldPos;
  16. out vec3 v_instanceColor;
  17. out float v_instanceAlpha;
  18. void main() {
  19. mat4 model;
  20. if (u_instanced) {
  21. model = mat4(vec4(a_instanceModelCol0.xyz, 0.0),
  22. vec4(a_instanceModelCol1.xyz, 0.0),
  23. vec4(a_instanceModelCol2.xyz, 0.0),
  24. vec4(a_instanceModelCol0.w, a_instanceModelCol1.w,
  25. a_instanceModelCol2.w, 1.0));
  26. v_instanceColor = a_instanceColorAlpha.rgb;
  27. v_instanceAlpha = a_instanceColorAlpha.a;
  28. } else {
  29. model = u_model;
  30. v_instanceColor = vec3(0.0);
  31. v_instanceAlpha = 1.0;
  32. }
  33. vec4 worldPos4 = model * vec4(a_position, 1.0);
  34. gl_Position = u_viewProj * worldPos4;
  35. v_normal = mat3(model) * a_normal;
  36. v_texCoord = a_texCoord;
  37. v_worldPos = worldPos4.xyz;
  38. }