From 81e41d51c88848abdfacfdb89f1ce404bce83cc9 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 10 Feb 2021 11:37:14 +0100 Subject: [PATCH] Remove Unlink from asset reference --- .../Editor/Utilities/ViewportIconsRenderer.cpp | 2 +- Source/Engine/Content/AssetReference.h | 10 +--------- Source/Engine/Content/Assets/SkeletonMask.cpp | 2 +- Source/Engine/Debug/DebugDraw.cpp | 2 +- Source/Engine/Foliage/Foliage.cpp | 2 +- Source/Engine/Graphics/GPUDevice.cpp | 10 +++++----- Source/Engine/Level/Scene/Lightmap.cpp | 4 ++-- Source/Engine/Level/Scene/Scene.cpp | 4 ++-- Source/Engine/Navigation/NavMesh.cpp | 3 +-- Source/Engine/Particles/ParticleManager.cpp | 2 +- Source/Engine/Render2D/Render2D.cpp | 2 +- Source/Engine/Renderer/AmbientOcclusionPass.cpp | 2 +- Source/Engine/Renderer/AntiAliasing/FXAA.cpp | 6 ++---- Source/Engine/Renderer/AntiAliasing/SMAA.cpp | 10 ++++------ Source/Engine/Renderer/AntiAliasing/TAA.cpp | 3 ++- Source/Engine/Renderer/AtmospherePreCompute.cpp | 2 +- Source/Engine/Renderer/ColorGradingPass.cpp | 6 ++---- Source/Engine/Renderer/DepthOfFieldPass.cpp | 16 ++++++---------- Source/Engine/Renderer/EyeAdaptationPass.cpp | 6 ++---- Source/Engine/Renderer/ForwardPass.cpp | 6 ++---- Source/Engine/Renderer/GBufferPass.cpp | 11 ++++------- Source/Engine/Renderer/HistogramPass.cpp | 3 ++- Source/Engine/Renderer/LightPass.cpp | 6 ++---- Source/Engine/Renderer/MotionBlurPass.cpp | 6 ++---- Source/Engine/Renderer/PostProcessingPass.cpp | 12 +++++------- Source/Engine/Renderer/ProbesRenderer.cpp | 2 +- Source/Engine/Renderer/ReflectionsPass.cpp | 10 ++++------ .../Renderer/ScreenSpaceReflectionsPass.cpp | 8 +++----- Source/Engine/Renderer/ShadowsPass.cpp | 5 +++-- Source/Engine/Renderer/Utils/BitonicSort.cpp | 6 ++---- Source/Engine/Renderer/Utils/MultiScaler.cpp | 10 ++++------ Source/Engine/Renderer/VolumetricFogPass.cpp | 15 ++++----------- Source/Engine/ShadowsOfMordor/Builder.cpp | 2 +- Source/Engine/Terrain/TerrainChunk.cpp | 2 +- Source/Engine/Terrain/TerrainPatch.cpp | 6 +++--- 35 files changed, 80 insertions(+), 124 deletions(-) diff --git a/Source/Editor/Utilities/ViewportIconsRenderer.cpp b/Source/Editor/Utilities/ViewportIconsRenderer.cpp index 631e8b56f..889d94052 100644 --- a/Source/Editor/Utilities/ViewportIconsRenderer.cpp +++ b/Source/Editor/Utilities/ViewportIconsRenderer.cpp @@ -138,7 +138,7 @@ bool ViewportIconsRendererService::Init() void ViewportIconsRendererService::Dispose() { - QuadModel.Unlink(); + QuadModel = nullptr; for (int32 i = 0; i < ARRAY_COUNT(InstanceBuffers); i++) InstanceBuffers[i].Release(); ActorTypeToIconType.Clear(); diff --git a/Source/Engine/Content/AssetReference.h b/Source/Engine/Content/AssetReference.h index c78aa5aef..658545d1a 100644 --- a/Source/Engine/Content/AssetReference.h +++ b/Source/Engine/Content/AssetReference.h @@ -78,14 +78,6 @@ public: return _asset ? _asset->GetOrCreateManagedInstance() : nullptr; } - /// - /// Clears the asset reference. - /// - FORCE_INLINE void Unlink() - { - OnSet(nullptr); - } - /// /// Gets the asset property value as string. /// @@ -135,7 +127,7 @@ protected: if (_asset == asset) { Unload(); - Unlink(); + OnSet(nullptr); } } }; diff --git a/Source/Engine/Content/Assets/SkeletonMask.cpp b/Source/Engine/Content/Assets/SkeletonMask.cpp index 4747e0e44..0742e2951 100644 --- a/Source/Engine/Content/Assets/SkeletonMask.cpp +++ b/Source/Engine/Content/Assets/SkeletonMask.cpp @@ -38,7 +38,7 @@ Asset::LoadResult SkeletonMask::load() void SkeletonMask::unload(bool isReloading) { - Skeleton.Unlink(); + Skeleton = nullptr; _maskedNodes.Resize(0); _mask.Resize(0); } diff --git a/Source/Engine/Debug/DebugDraw.cpp b/Source/Engine/Debug/DebugDraw.cpp index 320a991a3..1f7e0c596 100644 --- a/Source/Engine/Debug/DebugDraw.cpp +++ b/Source/Engine/Debug/DebugDraw.cpp @@ -487,7 +487,7 @@ void DebugDrawService::Dispose() DebugDrawPsDepthTest.Release(); DebugDrawPsDepthTest.Release(); SAFE_DELETE(DebugDrawVB); - DebugDrawShader.Unlink(); + DebugDrawShader = nullptr; } void DebugDraw::Draw(RenderContext& renderContext, GPUTextureView* target, GPUTextureView* depthBuffer, bool enableDepthTest) diff --git a/Source/Engine/Foliage/Foliage.cpp b/Source/Engine/Foliage/Foliage.cpp index dcfd50212..c38191adf 100644 --- a/Source/Engine/Foliage/Foliage.cpp +++ b/Source/Engine/Foliage/Foliage.cpp @@ -201,7 +201,7 @@ void Foliage::RemoveFoliageType(int32 index) FoliageTypes[i].Index--; } auto& item = FoliageTypes[index]; - item.Model.Unlink(); + item.Model = nullptr; item.Entries.Release(); FoliageTypes.RemoveAtKeepOrder(index); diff --git a/Source/Engine/Graphics/GPUDevice.cpp b/Source/Engine/Graphics/GPUDevice.cpp index 47ec6d3a6..821031454 100644 --- a/Source/Engine/Graphics/GPUDevice.cpp +++ b/Source/Engine/Graphics/GPUDevice.cpp @@ -13,10 +13,10 @@ #include "Engine/Platform/Windows/WindowsWindow.h" #include "Engine/Render2D/Render2D.h" #include "Engine/Engine/CommandLine.h" +#include "Engine/Engine/Engine.h" #include "Engine/Engine/EngineService.h" #include "Engine/Profiler/Profiler.h" #include "Engine/Renderer/RenderList.h" -#include "Engine/Engine/Engine.h" #include "Engine/Core/Utilities.h" GPUPipelineState* GPUPipelineState::Spawn(const SpawnParams& params) @@ -230,10 +230,10 @@ void GPUDevice::preDispose() RenderTargetPool::Flush(); // Release resources - _res->DefaultMaterial.Unlink(); - _res->DefaultNormalMap.Unlink(); - _res->DefaultWhiteTexture.Unlink(); - _res->DefaultBlackTexture.Unlink(); + _res->DefaultMaterial = nullptr; + _res->DefaultNormalMap = nullptr; + _res->DefaultWhiteTexture = nullptr; + _res->DefaultBlackTexture = nullptr; SAFE_DELETE_GPU_RESOURCE(_res->PS_CopyLinear); SAFE_DELETE_GPU_RESOURCE(_res->PS_Clear); SAFE_DELETE_GPU_RESOURCE(_res->FullscreenTriangleVB); diff --git a/Source/Engine/Level/Scene/Lightmap.cpp b/Source/Engine/Level/Scene/Lightmap.cpp index b55b603f5..4a2eec796 100644 --- a/Source/Engine/Level/Scene/Lightmap.cpp +++ b/Source/Engine/Level/Scene/Lightmap.cpp @@ -79,7 +79,7 @@ void Lightmap::EnsureSize(int32 size) { // Unlink texture that cannot be loaded LOG(Warning, "Lightmap::EnsureSize failed to load texture"); - texture.Unlink(); + texture = nullptr; } else { @@ -88,7 +88,7 @@ void Lightmap::EnsureSize(int32 size) { // Unlink texture and import new with valid size LOG(Info, "Changing lightmap {0}:{1} size from {2} to {3}", _index, textureIndex, texture->GetTexture()->Size(), size); - texture.Unlink(); + texture = nullptr; } } } diff --git a/Source/Engine/Level/Scene/Scene.cpp b/Source/Engine/Level/Scene/Scene.cpp index b86610ab9..d38bd4225 100644 --- a/Source/Engine/Level/Scene/Scene.cpp +++ b/Source/Engine/Level/Scene/Scene.cpp @@ -298,8 +298,8 @@ void Scene::OnDeleteObject() { // Cleanup LightmapsData.UnloadLightmaps(); - CSGData.Model.Unlink(); - CSGData.CollisionData.Unlink(); + CSGData.Model = nullptr; + CSGData.CollisionData = nullptr; // Base Actor::OnDeleteObject(); diff --git a/Source/Engine/Navigation/NavMesh.cpp b/Source/Engine/Navigation/NavMesh.cpp index ef90e2989..fe7756049 100644 --- a/Source/Engine/Navigation/NavMesh.cpp +++ b/Source/Engine/Navigation/NavMesh.cpp @@ -40,8 +40,7 @@ void NavMesh::SaveNavMesh() // Check if has no navmesh data generated (someone could just remove navmesh volumes or generate for empty scene) if (Data.Tiles.IsEmpty()) { - // Keep asset reference valid - DataAsset.Unlink(); + DataAsset = nullptr; return; } diff --git a/Source/Engine/Particles/ParticleManager.cpp b/Source/Engine/Particles/ParticleManager.cpp index c83aacbbf..429420950 100644 --- a/Source/Engine/Particles/ParticleManager.cpp +++ b/Source/Engine/Particles/ParticleManager.cpp @@ -557,7 +557,7 @@ void OnShaderReloading(Asset* obj) void CleanupGPUParticlesSorting() { - GPUParticlesSorting.Unlink(); + GPUParticlesSorting = nullptr; } void DrawEmitterGPU(RenderContext& renderContext, ParticleBuffer* buffer, DrawCall& drawCall, DrawPass drawModes, StaticFlags staticFlags, ParticleEmitterInstance& emitterData, const RenderModulesIndices& renderModulesIndices) diff --git a/Source/Engine/Render2D/Render2D.cpp b/Source/Engine/Render2D/Render2D.cpp index 2413686aa..1aed94a8e 100644 --- a/Source/Engine/Render2D/Render2D.cpp +++ b/Source/Engine/Render2D/Render2D.cpp @@ -522,7 +522,7 @@ void Render2DService::Dispose() Lines.Resize(0); Lines2.Resize(0); - GUIShader.Unlink(); + GUIShader = nullptr; PsoDepth.Dispose(); PsoNoDepth.Dispose(); diff --git a/Source/Engine/Renderer/AmbientOcclusionPass.cpp b/Source/Engine/Renderer/AmbientOcclusionPass.cpp index dfae20792..e72de509b 100644 --- a/Source/Engine/Renderer/AmbientOcclusionPass.cpp +++ b/Source/Engine/Renderer/AmbientOcclusionPass.cpp @@ -196,7 +196,7 @@ void AmbientOcclusionPass::Dispose() SAFE_DELETE_GPU_RESOURCE(_psApplyHalf); // Release asset - _shader.Unlink(); + _shader = nullptr; } void AmbientOcclusionPass::Render(RenderContext& renderContext) diff --git a/Source/Engine/Renderer/AntiAliasing/FXAA.cpp b/Source/Engine/Renderer/AntiAliasing/FXAA.cpp index 159e481a6..3dcb6ae71 100644 --- a/Source/Engine/Renderer/AntiAliasing/FXAA.cpp +++ b/Source/Engine/Renderer/AntiAliasing/FXAA.cpp @@ -55,11 +55,9 @@ void FXAA::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline state + // Cleanup _psFXAA.Delete(); - - // Release asset - _shader.Unlink(); + _shader = nullptr; } void FXAA::Render(RenderContext& renderContext, GPUTexture* input, GPUTextureView* output) diff --git a/Source/Engine/Renderer/AntiAliasing/SMAA.cpp b/Source/Engine/Renderer/AntiAliasing/SMAA.cpp index cf7e53f40..7c1ee0c16 100644 --- a/Source/Engine/Renderer/AntiAliasing/SMAA.cpp +++ b/Source/Engine/Renderer/AntiAliasing/SMAA.cpp @@ -82,15 +82,13 @@ void SMAA::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup _psEdge.Delete(); _psBlend.Delete(); SAFE_DELETE_GPU_RESOURCE(_psNeighbor); - - // Release assets - _shader.Unlink(); - _areaTex.Unlink(); - _searchTex.Unlink(); + _shader = nullptr; + _areaTex = nullptr; + _searchTex = nullptr; } void SMAA::Render(RenderContext& renderContext, GPUTexture* input, GPUTextureView* output) diff --git a/Source/Engine/Renderer/AntiAliasing/TAA.cpp b/Source/Engine/Renderer/AntiAliasing/TAA.cpp index 7b8dfe17f..a1fee93ad 100644 --- a/Source/Engine/Renderer/AntiAliasing/TAA.cpp +++ b/Source/Engine/Renderer/AntiAliasing/TAA.cpp @@ -42,8 +42,9 @@ void TAA::Dispose() // Base RendererPass::Dispose(); + // Cleanup _psTAA = nullptr; - _shader.Unlink(); + _shader = nullptr; } bool TAA::NeedMotionVectors(RenderContext& renderContext) diff --git a/Source/Engine/Renderer/AtmospherePreCompute.cpp b/Source/Engine/Renderer/AtmospherePreCompute.cpp index 66576e55f..cef9964ca 100644 --- a/Source/Engine/Renderer/AtmospherePreCompute.cpp +++ b/Source/Engine/Renderer/AtmospherePreCompute.cpp @@ -305,7 +305,7 @@ void release() SAFE_DELETE_GPU_RESOURCE(_psInscatterS); SAFE_DELETE_GPU_RESOURCE(_psInscatterN); SAFE_DELETE_GPU_RESOURCE(_psCopyInscatterNAdd); - _shader.Unlink(); + _shader = nullptr; SAFE_DELETE(_task); SAFE_DELETE_GPU_RESOURCE(AtmosphereTransmittance); SAFE_DELETE_GPU_RESOURCE(AtmosphereIrradiance); diff --git a/Source/Engine/Renderer/ColorGradingPass.cpp b/Source/Engine/Renderer/ColorGradingPass.cpp index 94caf2b46..c40248caa 100644 --- a/Source/Engine/Renderer/ColorGradingPass.cpp +++ b/Source/Engine/Renderer/ColorGradingPass.cpp @@ -121,11 +121,9 @@ void ColorGradingPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline state + // Cleanup _psLut.Delete(); - - // Release assets - _shader.Unlink(); + _shader = nullptr; } GPUTexture* ColorGradingPass::RenderLUT(RenderContext& renderContext) diff --git a/Source/Engine/Renderer/DepthOfFieldPass.cpp b/Source/Engine/Renderer/DepthOfFieldPass.cpp index b5382ec72..4e4ee7ed1 100644 --- a/Source/Engine/Renderer/DepthOfFieldPass.cpp +++ b/Source/Engine/Renderer/DepthOfFieldPass.cpp @@ -66,21 +66,17 @@ void DepthOfFieldPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psDofDepthBlurGeneration); SAFE_DELETE_GPU_RESOURCE(_psBokehGeneration); SAFE_DELETE_GPU_RESOURCE(_psDoNotGenerateBokeh); SAFE_DELETE_GPU_RESOURCE(_psBokeh); SAFE_DELETE_GPU_RESOURCE(_psBokehComposite); - - // Release assets - _shader.Unlink(); - _defaultBokehHexagon.Unlink(); - _defaultBokehOctagon.Unlink(); - _defaultBokehCircle.Unlink(); - _defaultBokehCross.Unlink(); - - // Release resources + _shader = nullptr; + _defaultBokehHexagon = nullptr; + _defaultBokehOctagon = nullptr; + _defaultBokehCircle = nullptr; + _defaultBokehCross = nullptr; SAFE_DELETE_GPU_RESOURCE(_bokehBuffer); SAFE_DELETE_GPU_RESOURCE(_bokehIndirectArgsBuffer); } diff --git a/Source/Engine/Renderer/EyeAdaptationPass.cpp b/Source/Engine/Renderer/EyeAdaptationPass.cpp index a85e0a72b..3bfbb9daa 100644 --- a/Source/Engine/Renderer/EyeAdaptationPass.cpp +++ b/Source/Engine/Renderer/EyeAdaptationPass.cpp @@ -244,15 +244,13 @@ void EyeAdaptationPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psManual); SAFE_DELETE_GPU_RESOURCE(_psLuminanceMap); SAFE_DELETE_GPU_RESOURCE(_psBlendLuminance); SAFE_DELETE_GPU_RESOURCE(_psApplyLuminance); SAFE_DELETE_GPU_RESOURCE(_psHistogram); - - // Release asset - _shader.Unlink(); + _shader = nullptr; } bool EyeAdaptationPass::setupResources() diff --git a/Source/Engine/Renderer/ForwardPass.cpp b/Source/Engine/Renderer/ForwardPass.cpp index ad178fe67..93ccf0750 100644 --- a/Source/Engine/Renderer/ForwardPass.cpp +++ b/Source/Engine/Renderer/ForwardPass.cpp @@ -62,11 +62,9 @@ void ForwardPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psApplyDistortion); - - // Release assets - _shader.Unlink(); + _shader = nullptr; } void ForwardPass::Render(RenderContext& renderContext, GPUTexture* input, GPUTexture* output) diff --git a/Source/Engine/Renderer/GBufferPass.cpp b/Source/Engine/Renderer/GBufferPass.cpp index b9e91ee01..2165e25dc 100644 --- a/Source/Engine/Renderer/GBufferPass.cpp +++ b/Source/Engine/Renderer/GBufferPass.cpp @@ -77,14 +77,11 @@ void GBufferPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline state + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psDebug); - - // Release assets - _gBufferShader.Unlink(); - _skyModel.Unlink(); - _boxModel.Unlink(); - + _gBufferShader = nullptr; + _skyModel = nullptr; + _boxModel = nullptr; #if USE_EDITOR SAFE_DELETE(_lightmapUVsDensityMaterialShader); SAFE_DELETE(_vertexColorsMaterialShader); diff --git a/Source/Engine/Renderer/HistogramPass.cpp b/Source/Engine/Renderer/HistogramPass.cpp index fe16dbd19..e8bfc9fad 100644 --- a/Source/Engine/Renderer/HistogramPass.cpp +++ b/Source/Engine/Renderer/HistogramPass.cpp @@ -102,8 +102,9 @@ void HistogramPass::Dispose() // Base RendererPass::Dispose(); + // Cleanup SAFE_DELETE_GPU_RESOURCE(_histogramBuffer); - _shader.Unlink(); + _shader = nullptr; } bool HistogramPass::setupResources() diff --git a/Source/Engine/Renderer/LightPass.cpp b/Source/Engine/Renderer/LightPass.cpp index d021ede01..c79033c37 100644 --- a/Source/Engine/Renderer/LightPass.cpp +++ b/Source/Engine/Renderer/LightPass.cpp @@ -164,7 +164,7 @@ void LightPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup _psLightDir.Delete(); _psLightPointNormal.Delete(); _psLightPointInverted.Delete(); @@ -172,9 +172,7 @@ void LightPass::Dispose() _psLightSpotInverted.Delete(); SAFE_DELETE_GPU_RESOURCE(_psLightSkyNormal); SAFE_DELETE_GPU_RESOURCE(_psLightSkyInverted); - - // Release assets - _sphereModel.Unlink(); + _sphereModel = nullptr; } void LightPass::RenderLight(RenderContext& renderContext, GPUTextureView* lightBuffer) diff --git a/Source/Engine/Renderer/MotionBlurPass.cpp b/Source/Engine/Renderer/MotionBlurPass.cpp index f10ef442b..689916708 100644 --- a/Source/Engine/Renderer/MotionBlurPass.cpp +++ b/Source/Engine/Renderer/MotionBlurPass.cpp @@ -134,16 +134,14 @@ void MotionBlurPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline state + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psCameraMotionVectors); SAFE_DELETE_GPU_RESOURCE(_psMotionVectorsDebug); SAFE_DELETE_GPU_RESOURCE(_psTileMax); SAFE_DELETE_GPU_RESOURCE(_psTileMaxVariable); SAFE_DELETE_GPU_RESOURCE(_psNeighborMax); SAFE_DELETE_GPU_RESOURCE(_psMotionBlur); - - // Release asset - _shader.Unlink(); + _shader = nullptr; } void MotionBlurPass::RenderMotionVectors(RenderContext& renderContext) diff --git a/Source/Engine/Renderer/PostProcessingPass.cpp b/Source/Engine/Renderer/PostProcessingPass.cpp index 02469aa81..4e5b4d4fb 100644 --- a/Source/Engine/Renderer/PostProcessingPass.cpp +++ b/Source/Engine/Renderer/PostProcessingPass.cpp @@ -167,19 +167,17 @@ void PostProcessingPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psThreshold); SAFE_DELETE_GPU_RESOURCE(_psScale); SAFE_DELETE_GPU_RESOURCE(_psBlurH); SAFE_DELETE_GPU_RESOURCE(_psBlurV); SAFE_DELETE_GPU_RESOURCE(_psGenGhosts); _psComposite.Delete(); - - // Release assets - _shader.Unlink(); - _defaultLensColor.Unlink(); - _defaultLensDirt.Unlink(); - _defaultLensStar.Unlink(); + _shader = nullptr; + _defaultLensColor = nullptr; + _defaultLensDirt = nullptr; + _defaultLensStar = nullptr; } void PostProcessingPass::Render(RenderContext& renderContext, GPUTexture* input, GPUTexture* output, GPUTexture* colorGradingLUT) diff --git a/Source/Engine/Renderer/ProbesRenderer.cpp b/Source/Engine/Renderer/ProbesRenderer.cpp index 6688c4716..3f48f8c6e 100644 --- a/Source/Engine/Renderer/ProbesRenderer.cpp +++ b/Source/Engine/Renderer/ProbesRenderer.cpp @@ -333,7 +333,7 @@ void ProbesRenderer::Release() SAFE_DELETE_GPU_RESOURCE(_psAccDiffuseIrradiance); SAFE_DELETE_GPU_RESOURCE(_psAccumulateCubeFaces); SAFE_DELETE_GPU_RESOURCE(_psCopyFrameLHB); - _shader.Unlink(); + _shader = nullptr; SAFE_DELETE_GPU_RESOURCE(_output); SAFE_DELETE(_task); SAFE_DELETE_GPU_RESOURCE(_probe); diff --git a/Source/Engine/Renderer/ReflectionsPass.cpp b/Source/Engine/Renderer/ReflectionsPass.cpp index 40f3aeb30..c3108cf0d 100644 --- a/Source/Engine/Renderer/ReflectionsPass.cpp +++ b/Source/Engine/Renderer/ReflectionsPass.cpp @@ -324,15 +324,13 @@ void ReflectionsPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psProbeNormal); SAFE_DELETE_GPU_RESOURCE(_psProbeInverted); SAFE_DELETE_GPU_RESOURCE(_psCombinePass); - - // Release assets - _shader.Unlink(); - _sphereModel.Unlink(); - _preIntegratedGF.Unlink(); + _shader = nullptr; + _sphereModel = nullptr; + _preIntegratedGF = nullptr; } bool sortProbes(EnvironmentProbe* const& p1, EnvironmentProbe* const& p2) diff --git a/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp b/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp index 491f53262..5e81db45c 100644 --- a/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp +++ b/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp @@ -152,16 +152,14 @@ void ScreenSpaceReflectionsPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psRayTracePass); SAFE_DELETE_GPU_RESOURCE(_psCombinePass); SAFE_DELETE_GPU_RESOURCE(_psTemporalPass); SAFE_DELETE_GPU_RESOURCE(_psMixPass); _psResolvePass.Delete(); - - // Release assets - _shader.Unlink(); - _preIntegratedGF.Unlink(); + _shader = nullptr; + _preIntegratedGF = nullptr; } void ScreenSpaceReflectionsPass::Render(RenderContext& renderContext, GPUTextureView* reflectionsRT, GPUTextureView* lightBuffer) diff --git a/Source/Engine/Renderer/ShadowsPass.cpp b/Source/Engine/Renderer/ShadowsPass.cpp index 11812a45c..4c3260045 100644 --- a/Source/Engine/Renderer/ShadowsPass.cpp +++ b/Source/Engine/Renderer/ShadowsPass.cpp @@ -193,11 +193,12 @@ void ShadowsPass::Dispose() // Base RendererPass::Dispose(); + // Cleanup _psShadowDir.Delete(); _psShadowPoint.Delete(); _psShadowSpot.Delete(); - _shader.Unlink(); - _sphereModel.Unlink(); + _shader = nullptr; + _sphereModel = nullptr; SAFE_DELETE_GPU_RESOURCE(_shadowMapCSM); SAFE_DELETE_GPU_RESOURCE(_shadowMapCube); } diff --git a/Source/Engine/Renderer/Utils/BitonicSort.cpp b/Source/Engine/Renderer/Utils/BitonicSort.cpp index 5dc4fffee..89313a95d 100644 --- a/Source/Engine/Renderer/Utils/BitonicSort.cpp +++ b/Source/Engine/Renderer/Utils/BitonicSort.cpp @@ -69,7 +69,7 @@ void BitonicSort::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_dispatchArgsBuffer); _cb = nullptr; _indirectArgsCS = nullptr; @@ -77,9 +77,7 @@ void BitonicSort::Dispose() _innerSortCS = nullptr; _outerSortCS = nullptr; _copyIndicesCS = nullptr; - - // Release asset - _shader.Unlink(); + _shader = nullptr; } void BitonicSort::Sort(GPUContext* context, GPUBuffer* sortingKeysBuffer, GPUBuffer* countBuffer, uint32 counterOffset, bool sortAscending, GPUBuffer* sortedIndicesBuffer) diff --git a/Source/Engine/Renderer/Utils/MultiScaler.cpp b/Source/Engine/Renderer/Utils/MultiScaler.cpp index c415c1900..2c6e8ba14 100644 --- a/Source/Engine/Renderer/Utils/MultiScaler.cpp +++ b/Source/Engine/Renderer/Utils/MultiScaler.cpp @@ -81,14 +81,12 @@ void MultiScaler::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup SAFE_DELETE_GPU_RESOURCE(_psHalfDepth); _psBlur5.Delete(); _psBlur9.Delete(); _psBlur13.Delete(); - - // Release asset - _shader.Unlink(); + _shader = nullptr; } void MultiScaler::Filter(const FilterMode mode, GPUContext* context, const int32 width, const int32 height, GPUTextureView* src, GPUTextureView* dst, GPUTextureView* tmp) @@ -121,7 +119,7 @@ void MultiScaler::Filter(const FilterMode mode, GPUContext* context, const int32 ps = &_psBlur13; break; default: - CRASH; + CRASH; return; } @@ -177,7 +175,7 @@ void MultiScaler::Filter(const FilterMode mode, GPUContext* context, const int32 ps = &_psBlur13; break; default: - CRASH; + CRASH; return; } diff --git a/Source/Engine/Renderer/VolumetricFogPass.cpp b/Source/Engine/Renderer/VolumetricFogPass.cpp index 0bf8d838e..ff8f469ae 100644 --- a/Source/Engine/Renderer/VolumetricFogPass.cpp +++ b/Source/Engine/Renderer/VolumetricFogPass.cpp @@ -89,26 +89,19 @@ void VolumetricFogPass::Dispose() // Base RendererPass::Dispose(); - // Delete pipeline states + // Cleanup _psInjectLight.Delete(); - _csInitialize = nullptr; _csLightScattering.Clear(); _csFinalIntegration = nullptr; - SAFE_DELETE_GPU_RESOURCE(_vbCircleRasterize); SAFE_DELETE_GPU_RESOURCE(_ibCircleRasterize); - - // Release assets - _shader.Unlink(); + _shader = nullptr; } -float ComputeZSliceFromDepth(float SceneDepth, const VolumetricFogOptions& options, int32 GridSizeZ) +float ComputeZSliceFromDepth(float sceneDepth, const VolumetricFogOptions& options, int32 gridSizeZ) { - // This must match frustum voxels depth distribution - // See ComputeNormalizedZSliceFromDepth() in VolumetricFog.shader - - return SceneDepth / options.Distance * GridSizeZ; + return sceneDepth / options.Distance * (float)gridSizeZ; } bool VolumetricFogPass::Init(RenderContext& renderContext, GPUContext* context, VolumetricFogOptions& options) diff --git a/Source/Engine/ShadowsOfMordor/Builder.cpp b/Source/Engine/ShadowsOfMordor/Builder.cpp index 715803839..b9cb57376 100644 --- a/Source/Engine/ShadowsOfMordor/Builder.cpp +++ b/Source/Engine/ShadowsOfMordor/Builder.cpp @@ -499,7 +499,7 @@ void ShadowsOfMordor::Builder::releaseResources() SAFE_DELETE_GPU_RESOURCE(_psRenderCacheModel); SAFE_DELETE_GPU_RESOURCE(_psRenderCacheTerrain); SAFE_DELETE_GPU_RESOURCE(_psBlurCache); - _shader.Unlink(); + _shader = nullptr; SAFE_DELETE_GPU_RESOURCE(_irradianceReduction); diff --git a/Source/Engine/Terrain/TerrainChunk.cpp b/Source/Engine/Terrain/TerrainChunk.cpp index 6cff541f3..9dab924c2 100644 --- a/Source/Engine/Terrain/TerrainChunk.cpp +++ b/Source/Engine/Terrain/TerrainChunk.cpp @@ -21,7 +21,7 @@ void TerrainChunk::Init(TerrainPatch* patch, uint16 x, uint16 z) _yHeight = 1; _heightmapUVScaleBias = Vector4(1.0f, 1.0f, _x, _z) * (1.0f / TerrainPatch::CHUNKS_COUNT_EDGE); _perInstanceRandom = (_patch->_terrain->_id.C ^ _x ^ _z) * (1.0f / MAX_uint32); - OverrideMaterial.Unlink(); + OverrideMaterial = nullptr; } bool TerrainChunk::PrepareDraw(const RenderContext& renderContext) diff --git a/Source/Engine/Terrain/TerrainPatch.cpp b/Source/Engine/Terrain/TerrainPatch.cpp index 791e93c7f..61e6f456e 100644 --- a/Source/Engine/Terrain/TerrainPatch.cpp +++ b/Source/Engine/Terrain/TerrainPatch.cpp @@ -64,12 +64,12 @@ void TerrainPatch::Init(Terrain* terrain, int16 x, int16 z) { Chunks[i].Init(this, i % CHUNKS_COUNT_EDGE, i / CHUNKS_COUNT_EDGE); } - Heightmap.Unlink(); + Heightmap = nullptr; for (int32 i = 0; i < TERRAIN_MAX_SPLATMAPS_COUNT; i++) { - Splatmap[i].Unlink(); + Splatmap[i] = nullptr; } - _heightfield.Unlink(); + _heightfield = nullptr; #if TERRAIN_UPDATING _cachedHeightMap.Resize(0); _cachedHolesMask.Resize(0);