Guest User

vert_shader_TBN

a guest
Dec 28th, 2023
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #version 450
  2.  
  3. layout(push_constant) uniform MVPConst{
  4. mat4 m;
  5. mat4 n;
  6. } mvp;
  7.  
  8. layout(binding = 0) uniform UBO{
  9. mat4 vM;
  10. mat4 cM;
  11. mat4 pM;
  12. vec4 lP;
  13. float time;
  14. uvec2 res;
  15. float varA;
  16. } ubo;
  17.  
  18. layout(location = 0) in vec3 vert_pos;
  19. layout(location = 1) in vec2 vert_uvco;
  20. layout(location = 2) in vec3 vert_norm;
  21. layout(location = 3) in vec3 vert_tangent;
  22. layout(location = 4) in vec3 vert_bitangent;
  23.  
  24. layout(location = 0) out vec2 frag_uvco;
  25. layout(location = 1) out vec3 frag_norm;
  26. layout(location = 2) out vec3 frag_wpos;
  27. layout(location = 3) out vec3 frag_light_dir;
  28. layout(location = 4) out mat3 frag_TBN;
  29.  
  30. void main(){
  31. vec4 wP = mvp.m * vec4(vert_pos,1.0f);
  32. mat4 mat = ubo.pM * ubo.vM;
  33. gl_Position = mat * wP;
  34.  
  35. frag_norm = mat3(mvp.n) * vert_norm;
  36. frag_uvco = vert_uvco;
  37. frag_wpos = wP.xyz;
  38.  
  39. frag_light_dir = ubo.lP.xyz - wP.xyz;
  40.  
  41. vec3 T = normalize(vec3(mvp.m * vec4(vert_tangent, 0.)));
  42. vec3 B = normalize(vec3(mvp.m * vec4(vert_bitangent,0.)));
  43. vec3 N = normalize(vec3(mvp.m * vec4(vert_norm, 0.)));
  44. mat3 TBN = mat3(T, B, N);
  45.  
  46. frag_TBN = TBN;
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment