Skip to content

Commit b7286bc

Browse files
committed
Created cubemap fallback for skybox
1 parent c38e2b0 commit b7286bc

File tree

9 files changed

+34
-6
lines changed

9 files changed

+34
-6
lines changed

include/engine/core/textures/texture.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ class ITexture
113113
inline void set_adress_mode(TextureAdressModeType am) {
114114
m_settings.adressMode = am;
115115
}
116+
inline void set_type(TextureType t) {
117+
m_settings.type = t;
118+
}
119+
inline TextureType get_type() const {
120+
return m_settings.type;
121+
}
116122
};
117123

118124
Graphics::Image* const get_image(ITexture* t);

include/engine/core/textures/textureLDR.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class TextureLDR : public ITexture
2626

2727
public:
2828
static Texture* FALLBACK_TEX;
29+
static Texture* FALLBACK_CUBE_TEX;
2930
static Texture* BLUE_NOISE_TEXT;
3031

3132
TextureLDR()

include/engine/systems/renderers/forward.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class ForwardRenderer : public BaseRenderer
5454

5555
virtual void on_after_render(RenderResult& renderResult, Core::Scene* const scene);
5656

57-
virtual void setup_renderpasses();
57+
virtual void create_renderpasses();
5858

5959
};
6060
} // namespace Systems

include/engine/systems/renderers/renderer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,9 @@ class BaseRenderer
204204
#pragma region Core Functions
205205
protected:
206206
/*
207-
Init renderpasses and create framebuffers and image resources attached to them
207+
Init renderpasses and
208208
*/
209-
virtual void setup_renderpasses();
209+
virtual void create_renderpasses();
210210
/*
211211
What to do when instancing the renderer
212212
*/

src/core/renderpasses/forward_pass.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,15 @@ void ForwardPass::setup_uniforms(std::vector<Graphics::Frame>& frames) {
149149
&m_descriptors[i].objectDescritor,
150150
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
151151
1);
152+
// Set up enviroment fallback texture
153+
m_descriptorPool.set_descriptor_write(get_image(Core::Texture::FALLBACK_CUBE_TEX),
154+
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
155+
&m_descriptors[i].globalDescritor,
156+
3);
157+
m_descriptorPool.set_descriptor_write(get_image(Core::Texture::FALLBACK_CUBE_TEX),
158+
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
159+
&m_descriptors[i].globalDescritor,
160+
4);
152161
}
153162
}
154163
void ForwardPass::setup_shader_passes() {

src/core/textures/textureLDR.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ VULKAN_ENGINE_NAMESPACE_BEGIN
44
namespace Core
55
{
66
Texture *Texture::FALLBACK_TEX = nullptr;
7+
Texture *Texture::FALLBACK_CUBE_TEX = nullptr;
78
Texture *Texture::BLUE_NOISE_TEXT = nullptr;
89

910
} // namespace Core

src/systems/renderers/forward.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ void ForwardRenderer::on_before_render(Core::Scene* const scene) {
1313
->set_envmap_descriptor(m_renderPipeline.panoramaConverterPass->get_attachments()[0].image,
1414
m_renderPipeline.irradianceComputePass->get_attachments()[0].image);
1515
}
16+
17+
1618

1719
m_renderPipeline.renderpasses[FORWARD]->set_attachment_clear_value(
1820
{m_settings.clearColor.r, m_settings.clearColor.g, m_settings.clearColor.b, m_settings.clearColor.a});
@@ -35,7 +37,7 @@ void ForwardRenderer::on_after_render(RenderResult& renderResult, Core::Scene* c
3537
connect_renderpass(m_renderPipeline.renderpasses[FORWARD]);
3638
}
3739
}
38-
void ForwardRenderer::setup_renderpasses() {
40+
void ForwardRenderer::create_renderpasses() {
3941
const uint32_t SHADOW_RES = (uint32_t)m_settings2.shadowQuality;
4042
const uint32_t totalImagesInFlight = (uint32_t)m_settings.bufferingType + 1;
4143

src/systems/renderers/renderer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void BaseRenderer::init() {
2929
// Init resources
3030
init_resources();
3131

32-
setup_renderpasses();
32+
create_renderpasses();
3333
for (Core::RenderPass* pass : m_renderPipeline.renderpasses)
3434
{
3535
if (pass->is_active())
@@ -108,7 +108,7 @@ void BaseRenderer::shutdown(Core::Scene* const scene) {
108108
m_window->destroy();
109109
glfwTerminate();
110110
}
111-
void BaseRenderer::setup_renderpasses() {
111+
void BaseRenderer::create_renderpasses() {
112112
throw VKFW_Exception("Implement setup_renderpasses function ! Hint: Add at least a forward pass ... ");
113113
}
114114
void BaseRenderer::on_before_render(Core::Scene* const scene) {

src/systems/renderers/renderer_data_mgr.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,14 @@ void BaseRenderer::init_resources() {
349349
Core::Texture::FALLBACK_TEX->set_use_mipmaps(false);
350350
}
351351
upload_texture_data(Core::Texture::FALLBACK_TEX);
352+
if (!Core::Texture::FALLBACK_CUBE_TEX) // If not user set
353+
{
354+
unsigned char cube_data[6] = {0,0,0,0,0,0};
355+
Core::Texture::FALLBACK_CUBE_TEX = new Core::Texture(cube_data, {1, 1, 1}, 4);
356+
Core::Texture::FALLBACK_CUBE_TEX->set_use_mipmaps(false);
357+
Core::Texture::FALLBACK_CUBE_TEX->set_type(TextureType::TEXTURE_CUBE);
358+
}
359+
upload_texture_data(Core::Texture::FALLBACK_CUBE_TEX);
352360

353361
// Setup blue noise texture
354362
if (!Core::Texture::BLUE_NOISE_TEXT) // If not user set
@@ -368,6 +376,7 @@ void BaseRenderer::clean_resources() {
368376
destroy_geometry_data(m_vignette->get_geometry());
369377
destroy_texture_data(Core::Texture::FALLBACK_TEX);
370378
destroy_texture_data(Core::Texture::BLUE_NOISE_TEXT);
379+
destroy_texture_data(Core::Texture::FALLBACK_CUBE_TEX);
371380
}
372381
} // namespace Systems
373382

0 commit comments

Comments
 (0)