We got a skybox

This commit is contained in:
2026-01-21 06:05:35 +01:00
parent b9878f2a06
commit a5b26f3bdd
27 changed files with 843 additions and 42 deletions
+24
View File
@@ -2,6 +2,7 @@
#include <destrum/Graphics/Util.h>
#include "destrum/Util/GameState.h"
#include "spdlog/spdlog.h"
GameRenderer::GameRenderer(MeshCache& meshCache, MaterialCache& matCache): meshCache{meshCache}, materialCache{matCache} {
@@ -19,6 +20,11 @@ void GameRenderer::init(GfxDevice& gfxDevice, const glm::ivec2& drawImageSize) {
meshPipeline = std::make_unique<MeshPipeline>();
meshPipeline->init(gfxDevice, drawImageFormat, depthImageFormat);
skyboxPipeline = std::make_unique<SkyboxPipeline>();
skyboxPipeline->init(gfxDevice, drawImageFormat, depthImageFormat);
GameState::GetInstance().SetRenderer(this);
}
void GameRenderer::beginDrawing(GfxDevice& gfxDevice) {
@@ -80,6 +86,9 @@ void GameRenderer::draw(VkCommandBuffer cmd, GfxDevice& gfxDevice, const Camera&
meshDrawCommands,
sortedMeshDrawCommands);
skyboxPipeline->draw(cmd, gfxDevice, camera);
vkCmdEndRendering(cmd);
// vkutil::cmdEndLabel(cmd);
@@ -106,6 +115,21 @@ const GPUImage& GameRenderer::getDrawImage(const GfxDevice& gfx_device) const {
return gfx_device.getImage(drawImageId);
}
Material& GameRenderer::getMaterialMutable(MaterialID id) {
assert(id != NULL_MATERIAL_ID);
return materialCache.getMaterialMutable(id);
}
void GameRenderer::updateMaterialGPU(MaterialID id) {
assert(id != NULL_MATERIAL_ID);
materialCache.updateMaterialGPU(GameState::GetInstance().Gfx(), id);
}
void GameRenderer::setSkyboxTexture(ImageID skyboxImageId) {
spdlog::debug("Set skybox texture to image id {}", skyboxImageId);
skyboxPipeline->setSkyboxImage(skyboxImageId);
}
void GameRenderer::createDrawImage(GfxDevice& gfxDevice,
const glm::ivec2& drawImageSize,
bool firstCreate)