44 lines
874 B
GLSL
44 lines
874 B
GLSL
#version 450
|
|
|
|
layout(location = 0) in vec3 pos;
|
|
layout(location = 1) in vec3 norm;
|
|
layout(location = 2) in vec2 uv;
|
|
layout(location = 3) in vec4 tangent;
|
|
|
|
layout(set = 0, binding = 0) uniform Camera {
|
|
mat4 proj;
|
|
mat4 view;
|
|
} cam;
|
|
|
|
|
|
struct SceneNode {
|
|
uint transformIdx;
|
|
uint meshIdx;
|
|
};
|
|
|
|
layout(set = 2, binding = 1) uniform ObjectInfo {
|
|
SceneNode nodes[];
|
|
} objectInfo;
|
|
|
|
layout(location = 0) out vec3 outPos;
|
|
layout(location = 1) out vec3 outNormal;
|
|
layout(location = 2) out vec2 outUV;
|
|
layout(location = 3) out mat3 outTBN;
|
|
|
|
layout( push_constant ) uniform constants
|
|
{
|
|
uint transformIdx;
|
|
uint materialIdx;
|
|
} PushConstants;
|
|
|
|
|
|
void main() {
|
|
vec3 bitangent = cross(norm, tangent.xyz) * tangent.w;
|
|
outTBN = mat3(tangent.xyz, bitangent, norm);
|
|
|
|
outPos = pos.xyz * 0.05;
|
|
outNormal = norm.xyz;
|
|
outUV = uv;
|
|
gl_Position = cam.proj * cam.view * vec4(outPos, 1.0);
|
|
}
|