particle distortion renderpass update

This commit is contained in:
turanszkij
2019-11-09 20:40:59 +00:00
parent b9bce48f3c
commit 8b0400edec
3 changed files with 20 additions and 7 deletions
+17 -5
View File
@@ -42,8 +42,15 @@ void RenderPath3D::ResizeBuffers()
desc.Format = wiRenderer::RTFormat_hdr;
desc.Width = wiRenderer::GetInternalResolution().x;
desc.Height = wiRenderer::GetInternalResolution().y;
desc.SampleDesc.Count = getMSAASampleCount();
device->CreateTexture2D(&desc, nullptr, &rtParticleDistortion);
device->SetName(&rtParticleDistortion, "rtParticle");
device->SetName(&rtParticleDistortion, "rtParticleDistortion");
if (getMSAASampleCount() > 1)
{
desc.SampleDesc.Count = 1;
device->CreateTexture2D(&desc, nullptr, &rtParticleDistortion_Resolved);
device->SetName(&rtParticleDistortion_Resolved, "rtParticleDistortion_Resolved");
}
}
{
TextureDesc desc;
@@ -288,9 +295,9 @@ void RenderPath3D::ResizeBuffers()
RenderPassDesc desc;
desc.numAttachments = 2;
desc.attachments[0] = { RenderPassAttachment::RENDERTARGET,RenderPassAttachment::LOADOP_CLEAR,&rtParticleDistortion,-1 };
desc.attachments[1] = { RenderPassAttachment::DEPTH_STENCIL,RenderPassAttachment::LOADOP_LOAD,&depthBuffer,-1 };
desc.attachments[1] = { RenderPassAttachment::DEPTH_STENCIL,RenderPassAttachment::LOADOP_LOAD,&depthBuffer,-1,RenderPassAttachment::STOREOP_DONTCARE };
device->CreateRenderPass(&desc, &renderpass_particles);
device->CreateRenderPass(&desc, &renderpass_particledistortion);
}
{
RenderPassDesc desc;
@@ -605,7 +612,7 @@ void RenderPath3D::RenderTransparents(const RenderPass& renderpass_transparent,
// Distortion particles:
{
device->RenderPassBegin(&renderpass_particles, cmd);
device->RenderPassBegin(&renderpass_particledistortion, cmd);
ViewPort vp;
vp.Width = (float)rtParticleDistortion.GetDesc().Width;
@@ -615,6 +622,11 @@ void RenderPath3D::RenderTransparents(const RenderPass& renderpass_transparent,
wiRenderer::DrawSoftParticles(wiRenderer::GetCamera(), rtLinearDepth, true, cmd);
device->RenderPassEnd(cmd);
if (getMSAASampleCount() > 1)
{
device->MSAAResolve(&rtParticleDistortion_Resolved, &rtParticleDistortion, cmd);
}
}
}
void RenderPath3D::TemporalAAResolve(const Texture2D& srcdstSceneRT, const Texture2D& srcGbuffer1, CommandList cmd) const
@@ -716,7 +728,7 @@ void RenderPath3D::RenderPostprocessChain(const Texture2D& srcSceneRT, const Tex
wiRenderer::Postprocess_Tonemap(
*rt_read,
getEyeAdaptionEnabled() ? *wiRenderer::ComputeLuminance(srcSceneRT, cmd) : *wiTextureHelper::getColor(wiColor::Gray()),
rtParticleDistortion,
getMSAASampleCount() > 1 ? rtParticleDistortion_Resolved : rtParticleDistortion,
*rt_write,
cmd,
getExposure()
+2 -1
View File
@@ -49,6 +49,7 @@ protected:
wiGraphics::Texture2D rtSceneCopy; // contains the rendered scene that can be fed into transparent pass for distortion effect
wiGraphics::Texture2D rtWaterRipple; // water ripple sprite normal maps are rendered into this
wiGraphics::Texture2D rtParticleDistortion; // contains distortive particles
wiGraphics::Texture2D rtParticleDistortion_Resolved; // contains distortive particles
wiGraphics::Texture2D rtVolumetricLights; // contains the volumetric light results
wiGraphics::Texture2D rtDof[2]; // depth of field blurred out-of focus part
wiGraphics::Texture2D rtTemporalAA[2]; // temporal AA history buffer
@@ -71,7 +72,7 @@ protected:
wiGraphics::RenderPass renderpass_downsampledepthbuffer;
wiGraphics::RenderPass renderpass_lightshafts;
wiGraphics::RenderPass renderpass_volumetriclight;
wiGraphics::RenderPass renderpass_particles;
wiGraphics::RenderPass renderpass_particledistortion;
wiGraphics::RenderPass renderpass_waterripples;
// Post-processes are ping-ponged, this function helps to obtain the last postprocess render target that was written
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wiVersion
// minor features, major updates
const int minor = 31;
// minor bug fixes, alterations, refactors, updates
const int revision = 5;
const int revision = 6;
long GetVersion()