From 6a001c4840140e71ba1672a4576d52d1a62c0922 Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sat, 1 Oct 2022 14:35:16 -0400 Subject: rename src files, move .o to /bin --- src/chunk_renderer.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/chunk_renderer.cpp (limited to 'src/chunk_renderer.cpp') diff --git a/src/chunk_renderer.cpp b/src/chunk_renderer.cpp new file mode 100644 index 0000000..2dba6cb --- /dev/null +++ b/src/chunk_renderer.cpp @@ -0,0 +1,41 @@ +#include "chunk_renderer.hpp" +#include "chunk.hpp" + +namespace app { + +ChunkRenderer::ChunkRenderer(std::vector &images) { + xeRenderSystem = xe::RenderSystem::Builder("res/shaders/simple_shader.vert.spv", "res/shaders/simple_shader.frag.spv") + .addVertexBindingf(0, 3, 0) // position + .addVertexBindingf(1, 3, 12) // normal + .addVertexBindingf(2, 2, 24) // uvs + .addVertexBindingi(3, 1, 32) // texture + .setVertexSize(36) + .addPushConstant(sizeof(PushConstant)) + .addUniformBinding(0, sizeof(UniformBuffer)) + .addTextureArrayBinding(1, images) + .setCulling(true) + .build(); +} + +void ChunkRenderer::render(std::vector &gameObjects, xe::Camera &xeCamera) { + + xeRenderSystem->start(); + + UniformBuffer ubo{}; + ubo.projectionView = xeCamera.getProjection() * xeCamera.getView(); + xeRenderSystem->loadUniformObject(0, &ubo); + + for(auto &obj : gameObjects) { + if(obj.model == nullptr) continue; + PushConstant pc{}; + pc.modelMatrix = obj.transform.mat4(); + pc.normalMatrix = obj.transform.normalMatrix(); + xeRenderSystem->loadPushConstant(&pc); + xeRenderSystem->render(obj); + } + + xeRenderSystem->stop(); + +} + +} \ No newline at end of file -- cgit v1.2.3-freya