diff options
-rw-r--r-- | c2.cpp | 13 | ||||
-rw-r--r-- | model.cpp | 17 | ||||
-rw-r--r-- | model.hpp | 9 |
3 files changed, 25 insertions, 14 deletions
@@ -215,22 +215,23 @@ extern "C" int entrypoint() { raxis )); monkey->update_transforms(); + monkey->update_cbuffers( + dev, + transform, + projection + ); ctx.debug_push("depth prepass"); monkey->render( dev, &frame_arena, - depth_prepass, - transform, - projection + depth_prepass ); ctx.debug_pop(); ctx.debug_push("forward"); monkey->render( dev, &frame_arena, - pass2, - transform, - projection + pass2 ); ctx.debug_pop(); @@ -156,16 +156,13 @@ void Model::update_transforms() { meshes[i].get_world(*this); } -void Model::render( +void Model::update_cbuffers( Device* dev, - Arena* a, - Render_Pass& pass, const m4f& transform, const m4f& view_projection ) { int i, c = mesh_count; Mesh* meshes = get_meshes(); - Context& ctx = dev->get_ctx(); MVP_Cbuffer* cbuffers = (MVP_Cbuffer*)dev->map_buffer( mvp, 0, @@ -175,8 +172,18 @@ void Model::render( cbuffers[i].view_projection = view_projection; cbuffers[i].model = transform * meshes[i].world; } - bool depth_only = !pass.colour_count; dev->unmap_buffer(mvp); +} + +void Model::render( + Device* dev, + Arena* a, + Render_Pass& pass +) { + int i, c = mesh_count; + Mesh* meshes = get_meshes(); + Context& ctx = dev->get_ctx(); + bool depth_only = !pass.colour_count; for (i = 0; i < c; i++) { Mesh& mesh = meshes[i]; Shader& shader = dev->get_shader(mesh.shader); @@ -27,13 +27,16 @@ struct Model : public Asset { void destroy(Device* dev); void update_transforms(); - void render( + void update_cbuffers( Device* dev, - Arena* a, - Render_Pass& pass, const m4f& transform, const m4f& view_projection ); + void render( + Device* dev, + Arena* a, + Render_Pass& pass + ); }; struct Model_Loader : public Asset_Loader { |