/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/RendererCore/Pipeline/Passes/AOPass.h
67 строк
2 KB
Sanakan8472
Render Graph (#1948)
03 июн 2026, 10:19
Не верифицирован
03 июн 2026, 10:19
60bb12c
Код
Авторство
О чём код?
#pragma once #include <RendererCore/Declarations.h> #include <RendererCore/Pipeline/RenderPipelinePass.h> #include <RendererCore/Shader/ConstantBufferStorage.h> #include <RendererCore/Shader/ShaderResource.h> /// Render pass that computes screen-space ambient occlusion (SSAO). /// /// Generates an ambient occlusion texture from the depth buffer. The effect darkens areas /// where geometry is close together, simulating indirect lighting occlusion. Supports distance-based /// fade-out and various quality parameters. class EZ_RENDERERCORE_DLL ezAOPass : public ezRenderPipelinePass { EZ_ADD_DYNAMIC_REFLECTION(ezAOPass, ezRenderPipelinePass); public: ezAOPass(); ~ezAOPass(); virtual ezStatus AddRenderPasses(const ezViewData& viewData, const ezCamera& camera, ezRenderGraph& ref_graph, const ezArrayPtr<const ezRenderPipelinePinConnection> inputs, ezArrayPtr<ezRenderPipelinePinConnection> outputs) override; virtual ezStatus AddRenderPassesInactive(const ezViewData& viewData, const ezCamera& camera, ezRenderGraph& ref_graph, const ezArrayPtr<const ezRenderPipelinePinConnection> inputs, ezArrayPtr<ezRenderPipelinePinConnection> outputs) override; virtual ezResult Serialize(ezStreamWriter& inout_stream) const override; virtual ezResult Deserialize(ezStreamReader& inout_stream) override; void SetFadeOutStart(float fStart); float GetFadeOutStart() const; void SetFadeOutEnd(float fEnd); float GetFadeOutEnd() const; protected: void CreateSamplerState(); ezRenderPipelineNodeInputPin m_PinDepthInput; ezRenderPipelineNodeOutputPin m_PinOutput; float m_fRadius = 1.0f; float m_fMaxScreenSpaceRadius = 1.0f; float m_fContrast = 2.0f; float m_fIntensity = 0.7f; float m_fFadeOutStart = 80.0f; float m_fFadeOutEnd = 100.0f; float m_fPositionBias = 5.0f; float m_fMipLevelScale = 10.0f; float m_fDepthBlurThreshold = 2.0f; ezConstantBufferStorageHandle m_hDownscaleConstantBuffer; ezConstantBufferStorageHandle m_hSSAOConstantBuffer; ezTexture2DResourceHandle m_hNoiseTexture; ezGALSamplerStateHandle m_hSSAOSamplerState; ezShaderResourceHandle m_hDownscaleShader; ezShaderResourceHandle m_hSSAOShader; ezShaderResourceHandle m_hBlurShader; // Graph state ezRenderGraphTextureHandle m_hHzbTexture; ezTempHybridArray<ezVec2, 8> m_HzbSizes; ezTempHybridArray<ezGALTextureRange, 8> m_HzbResourceViews; ezRenderGraphTextureHandle m_hSSAOTemp; };