This commit is contained in:
Wojtek Figat
2021-10-07 15:04:48 +02:00
parent 1af5ec8492
commit 96a903afd1
3 changed files with 13 additions and 11 deletions

View File

@@ -18,9 +18,8 @@ LODPreviewMaterialShader::LODPreviewMaterialShader()
const MaterialInfo& LODPreviewMaterialShader::GetInfo() const const MaterialInfo& LODPreviewMaterialShader::GetInfo() const
{ {
if (_material) ASSERT_LOW_LAYER(_material);
return _material->GetInfo(); return _material->GetInfo();
return MaterialInfo();
} }
bool LODPreviewMaterialShader::IsReady() const bool LODPreviewMaterialShader::IsReady() const

View File

@@ -151,7 +151,11 @@ void MaterialComplexityMaterialShader::Draw(RenderContext& renderContext, GPUCon
} }
// Draw transparency into Light buffer to include it into complexity drawing // Draw transparency into Light buffer to include it into complexity drawing
context->SetRenderTarget(*renderContext.Buffers->DepthBuffer, lightBuffer); GPUTexture* depthBuffer = renderContext.Buffers->DepthBuffer;
GPUTextureView* readOnlyDepthBuffer = depthBuffer->View();
if (depthBuffer->GetDescription().Flags & GPUTextureFlags::ReadOnlyDepthView)
readOnlyDepthBuffer = depthBuffer->ViewReadOnlyDepth();
context->SetRenderTarget(readOnlyDepthBuffer, lightBuffer);
auto& distortionList = renderContext.List->DrawCallsLists[(int32)DrawCallsListType::Distortion]; auto& distortionList = renderContext.List->DrawCallsLists[(int32)DrawCallsListType::Distortion];
if (!distortionList.IsEmpty()) if (!distortionList.IsEmpty())
{ {

View File

@@ -503,9 +503,7 @@ void VolumetricFogPass::Render(RenderContext& renderContext)
context->Dispatch(_csInitialize, groupCountX, groupCountY, groupCountZ); context->Dispatch(_csInitialize, groupCountX, groupCountY, groupCountZ);
context->UnBindUA(0); context->ResetUA();
context->UnBindUA(1);
context->FlushState();
} }
// Render local fog particles // Render local fog particles
@@ -656,6 +654,9 @@ void VolumetricFogPass::Render(RenderContext& renderContext)
const int32 csIndex = cache.TemporalReprojection ? 1 : 0; const int32 csIndex = cache.TemporalReprojection ? 1 : 0;
context->Dispatch(_csLightScattering.Get(csIndex), groupCountX, groupCountY, groupCountZ); context->Dispatch(_csLightScattering.Get(csIndex), groupCountX, groupCountY, groupCountZ);
context->ResetSR();
context->ResetUA();
} }
// Release resources // Release resources
@@ -689,20 +690,18 @@ void VolumetricFogPass::Render(RenderContext& renderContext)
{ {
PROFILE_GPU("Final Integration"); PROFILE_GPU("Final Integration");
context->ResetSR();
context->BindUA(0, integratedLightScattering->ViewVolume()); context->BindUA(0, integratedLightScattering->ViewVolume());
context->FlushState();
context->BindSR(0, lightScattering->ViewVolume()); context->BindSR(0, lightScattering->ViewVolume());
context->Dispatch(_csFinalIntegration, groupCountX, groupCountY, 1); context->Dispatch(_csFinalIntegration, groupCountX, groupCountY, 1);
} }
// Cleanup // Cleanup
context->UnBindUA(0); context->ResetUA();
context->ResetSR();
context->ResetRenderTarget(); context->ResetRenderTarget();
auto viewport = renderContext.Task->GetViewport(); auto viewport = renderContext.Task->GetViewport();
context->SetViewportAndScissors(viewport); context->SetViewportAndScissors(viewport);
context->FlushState();
} }
void VolumetricFogPass::InitCircleBuffer() void VolumetricFogPass::InitCircleBuffer()