#version 450 #pragma shader_stage(vertex) #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable #extension GL_EXT_buffer_reference : require #include "bindless_structs.glsl" #include "graphics_bindings.glsl" layout(location=0) out vec4 outWorldNormal; layout(location=1) out vec4 outWorldPosition; layout(location=2) out vec4 outColor; layout(location=3) out vec2 outUV0; layout(push_constant) uniform Constants { mat4 globalTransform; VPositionRef pVertexPosition; VDataRef pVertexData; uint64_t materialIdx; }; void main() { vec3 colors[] = { vec3( 1.0f, 0.0f, 0.0f ), vec3( 0.0f, 1.0f, 0.0f ), vec3( 0.0f, 0.0f, 1.0f ), }; outWorldNormal = vec4(normalize(transpose(inverse(mat3(globalTransform))) * pVertexData.Data[gl_VertexIndex].Normal.xyz), 0.0f); outWorldPosition = globalTransform * vec4(pVertexPosition.Positions[gl_VertexIndex].xyz, 1.0f); gl_Position = camera.m_Projection * camera.m_View * outWorldPosition; outColor = vec4(pVertexData.Data[gl_VertexIndex].Color.rgb, 1.0f); //vec3(colors[gl_VertexIndex % 3]); outUV0 = pVertexData.Data[gl_VertexIndex].TexCoord0; }