Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 450
- layout(push_constant) uniform MVPConst{
- mat4 m;
- mat4 n;
- } mvp;
- layout(binding = 0) uniform UBO{
- mat4 vM;
- mat4 cM;
- mat4 pM;
- vec4 lP;
- float time;
- uvec2 res;
- float varA;
- } ubo;
- layout(location = 0) in vec3 vert_pos;
- layout(location = 1) in vec2 vert_uvco;
- layout(location = 2) in vec3 vert_norm;
- layout(location = 3) in vec3 vert_tangent;
- layout(location = 4) in vec3 vert_bitangent;
- layout(location = 0) out vec2 frag_uvco;
- layout(location = 1) out vec3 frag_norm;
- layout(location = 2) out vec3 frag_wpos;
- layout(location = 3) out vec3 frag_light_dir;
- layout(location = 4) out mat3 frag_TBN;
- void main(){
- vec4 wP = mvp.m * vec4(vert_pos,1.0f);
- mat4 mat = ubo.pM * ubo.vM;
- gl_Position = mat * wP;
- frag_norm = mat3(mvp.n) * vert_norm;
- frag_uvco = vert_uvco;
- frag_wpos = wP.xyz;
- frag_light_dir = ubo.lP.xyz - wP.xyz;
- vec3 T = normalize(vec3(mvp.m * vec4(vert_tangent, 0.)));
- vec3 B = normalize(vec3(mvp.m * vec4(vert_bitangent,0.)));
- vec3 N = normalize(vec3(mvp.m * vec4(vert_norm, 0.)));
- mat3 TBN = mat3(T, B, N);
- frag_TBN = TBN;
- }
Advertisement
Add Comment
Please, Sign In to add comment