transparent objects can also be in planar reflection

This commit is contained in:
Turánszki János
2022-12-03 13:18:33 +01:00
parent fd9106fbe0
commit 5e9b0a8ef7
2 changed files with 12 additions and 14 deletions
+11 -13
View File
@@ -713,6 +713,7 @@ namespace wi
camera_reflection.texture_ao_index = -1;
camera_reflection.texture_ssr_index = -1;
camera_reflection.texture_rtshadow_index = -1;
camera_reflection.texture_rtdiffuse_index = -1;
camera_reflection.texture_surfelgi_index = -1;
}
@@ -805,10 +806,6 @@ namespace wi
wi::renderer::DRAWSCENE_TESSELLATION |
wi::renderer::DRAWSCENE_OCCLUSIONCULLING
;
static const uint32_t drawscene_flags_reflections =
wi::renderer::DRAWSCENE_OPAQUE |
wi::renderer::DRAWSCENE_IMPOSTOR
;
// Main camera depth prepass + occlusion culling:
cmd = device->BeginCommandList();
@@ -1029,7 +1026,7 @@ namespace wi
device->RenderPassBegin(&renderpass_reflection_depthprepass, cmd);
wi::renderer::DrawScene(visibility_reflection, RENDERPASS_PREPASS, cmd, drawscene_flags_reflections);
wi::renderer::DrawScene(visibility_reflection, RENDERPASS_PREPASS, cmd, wi::renderer::DRAWSCENE_OPAQUE | wi::renderer::DRAWSCENE_IMPOSTOR);
device->RenderPassEnd(cmd);
@@ -1045,9 +1042,9 @@ namespace wi
wi::profiler::EndRange(range); // Planar Reflections
device->EventEnd(cmd);
});
});
// Planar reflections opaque color pass:
// Planar reflections color pass:
cmd = device->BeginCommandList();
wi::jobsystem::Execute(ctx, [cmd, this](wi::jobsystem::JobArgs args) {
@@ -1077,7 +1074,8 @@ namespace wi
device->RenderPassBegin(&renderpass_reflection, cmd);
wi::renderer::DrawScene(visibility_reflection, RENDERPASS_MAIN, cmd, drawscene_flags_reflections);
wi::renderer::DrawScene(visibility_reflection, RENDERPASS_MAIN, cmd, wi::renderer::DRAWSCENE_OPAQUE | wi::renderer::DRAWSCENE_IMPOSTOR);
wi::renderer::DrawScene(visibility_reflection, RENDERPASS_MAIN, cmd, wi::renderer::DRAWSCENE_TRANSPARENT); // separate renderscene, to be drawn after opaque and transparent sort order
wi::renderer::DrawSky(*scene, cmd);
// Blend the volumetric clouds on top:
@@ -1095,7 +1093,7 @@ namespace wi
wi::profiler::EndRange(range); // Planar Reflections
device->EventEnd(cmd);
});
});
}
// Main camera opaque color pass:
@@ -2080,15 +2078,15 @@ namespace wi
TextureDesc desc;
desc.bind_flags = BindFlag::RENDER_TARGET | BindFlag::SHADER_RESOURCE;
desc.format = Format::R11G11B10_FLOAT;
desc.width = internalResolution.x / 4;
desc.height = internalResolution.y / 4;
desc.width = internalResolution.x / 2;
desc.height = internalResolution.y / 2;
device->CreateTexture(&desc, nullptr, &rtReflection);
device->SetName(&rtReflection, "rtReflection");
desc.bind_flags = BindFlag::DEPTH_STENCIL | BindFlag::SHADER_RESOURCE;
desc.format = Format::D32_FLOAT;
desc.width = internalResolution.x / 4;
desc.height = internalResolution.y / 4;
desc.width = internalResolution.x / 2;
desc.height = internalResolution.y / 2;
desc.layout = ResourceState::DEPTHSTENCIL_READONLY;
device->CreateTexture(&desc, nullptr, &depthBuffer_Reflection);
device->SetName(&depthBuffer_Reflection, "depthBuffer_Reflection");
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wi::version
// minor features, major updates, breaking compatibility changes
const int minor = 71;
// minor bug fixes, alterations, refactors, updates
const int revision = 107;
const int revision = 108;
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);