diff options
author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-10-01 14:35:16 -0400 |
---|---|---|
committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-10-01 14:35:16 -0400 |
commit | 6a001c4840140e71ba1672a4576d52d1a62c0922 (patch) | |
tree | 8b3ebdbb7e2580ca5de14dca895a779553026c6f /src/chunk_renderer.cpp | |
parent | variable chunk sizes (diff) | |
download | minecraftvulkan-6a001c4840140e71ba1672a4576d52d1a62c0922.tar.gz minecraftvulkan-6a001c4840140e71ba1672a4576d52d1a62c0922.tar.bz2 minecraftvulkan-6a001c4840140e71ba1672a4576d52d1a62c0922.zip |
rename src files, move .o to /bin
Diffstat (limited to 'src/chunk_renderer.cpp')
-rw-r--r-- | src/chunk_renderer.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
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<xe::Image*> &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<xe::GameObject> &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 |