From 1701aa5a616f3de55b0a426f8d9e679f2c98a0c6 Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Mon, 3 Oct 2022 06:50:49 -0400 Subject: mouse picking --- src/skinned_renderer.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/skinned_renderer.cpp (limited to 'src/skinned_renderer.cpp') diff --git a/src/skinned_renderer.cpp b/src/skinned_renderer.cpp new file mode 100644 index 0000000..0b65d0d --- /dev/null +++ b/src/skinned_renderer.cpp @@ -0,0 +1,42 @@ +#include "skinned_renderer.hpp" +#include "chunk.hpp" + +namespace app { + +SkinnedRenderer::SkinnedRenderer(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) + .setWireframe(false) + .build(); +} + +void SkinnedRenderer::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