Combine view/proj

This commit is contained in:
Joshua Ashton 2022-09-29 00:01:06 -02:30
parent a4f15c7179
commit 48d460c855
4 changed files with 40 additions and 39 deletions

View File

@ -552,8 +552,7 @@ int main(int argc, char** argv)
struct FrameData
{
mat4 projection;
mat4 view;
mat4 view_projection;
};
auto frameDataSlice = *pooler.AllocSlice(MaxFramesInFlight * sizeof(FrameData), 16);
@ -659,8 +658,7 @@ int main(int argc, char** argv)
frameData[r_swapchain->CurrentFrame()] = FrameData
{
.projection = camera.projection(),
.view = camera.view(),
.view_projection = camera.projection() * camera.view(),
};
g_renderables.copy(gpuRenderables[r_swapchain->CurrentFrame()].renderables);

View File

@ -0,0 +1,31 @@
struct UniformData
{
mat4 view_projection;
};
struct Renderable
{
mat4 world;
uint meshIdx;
vec3 color;
};
struct Renderables
{
Renderable renderables[1024];
};
layout(push_constant) uniform p_constants_t
{
uint frame;
} p_constants;
layout(binding = 0) uniform u_frame_data_t
{
UniformData frame[4];
} u_frame_data;
layout(scalar, binding = 2) uniform u_renderable_t
{
Renderables frame[4];
} u_renderable;

View File

@ -0,0 +1,4 @@
void main()
{
}

View File

@ -1,40 +1,9 @@
#version 450
#extension GL_EXT_scalar_block_layout : require
#extension GL_ARB_shader_draw_parameters : require
#extension GL_GOOGLE_include_directive : require
struct UniformData
{
mat4 projection;
mat4 view;
};
struct Renderable
{
mat4 world;
uint meshIdx;
vec3 color;
};
struct Renderables
{
Renderable renderables[1024];
};
layout(push_constant) uniform p_constants_t
{
uint frame;
} p_constants;
layout(binding = 0) uniform u_frame_data_t
{
UniformData frame[4];
} u_frame_data;
layout(scalar, binding = 2) uniform u_renderable_t
{
Renderables frame[4];
} u_renderable;
#include "common_vs.h"
layout(location = 0) in vec3 i_pos;
layout(location = 1) in vec2 i_uv;
@ -46,8 +15,7 @@ layout(location = 1) out vec2 o_uv;
void main()
{
gl_Position =
u_frame_data.frame[p_constants.frame].projection *
u_frame_data.frame[p_constants.frame].view *
u_frame_data.frame[p_constants.frame].view_projection *
u_renderable.frame[p_constants.frame].renderables[gl_DrawIDARB].world *
vec4(i_pos, 1.0);
o_meshIdx = u_renderable.frame[p_constants.frame].renderables[gl_DrawIDARB].meshIdx;