Explorar el Código

Add a renderer object definition file

Panagiotis Christopoulos Charitos hace 4 años
padre
commit
7d951048eb
Se han modificado 3 ficheros con 63 adiciones y 172 borrados
  1. 21 21
      AnKi/Renderer/Renderer.cpp
  2. 10 151
      AnKi/Renderer/Renderer.h
  3. 32 0
      AnKi/Renderer/RendererObjectDefs.h

+ 21 - 21
AnKi/Renderer/Renderer.cpp

@@ -130,11 +130,11 @@ Error Renderer::initInternal(const ConfigSet& config)
 	m_genericCompute.reset(m_alloc.newInstance<GenericCompute>(this));
 	ANKI_CHECK(m_genericCompute->init(config));
 
-	m_volLighting.reset(m_alloc.newInstance<VolumetricLightingAccumulation>(this));
-	ANKI_CHECK(m_volLighting->init(config));
+	m_volumetricLightingAccumulation.reset(m_alloc.newInstance<VolumetricLightingAccumulation>(this));
+	ANKI_CHECK(m_volumetricLightingAccumulation->init(config));
 
-	m_gi.reset(m_alloc.newInstance<GlobalIllumination>(this));
-	ANKI_CHECK(m_gi->init(config));
+	m_globalIllumination.reset(m_alloc.newInstance<GlobalIllumination>(this));
+	ANKI_CHECK(m_globalIllumination->init(config));
 
 	m_probeReflections.reset(m_alloc.newInstance<ProbeReflections>(this));
 	ANKI_CHECK(m_probeReflections->init(config));
@@ -148,14 +148,14 @@ Error Renderer::initInternal(const ConfigSet& config)
 	m_shadowMapping.reset(m_alloc.newInstance<ShadowMapping>(this));
 	ANKI_CHECK(m_shadowMapping->init(config));
 
-	m_volFog.reset(m_alloc.newInstance<VolumetricFog>(this));
-	ANKI_CHECK(m_volFog->init(config));
+	m_volumetricFog.reset(m_alloc.newInstance<VolumetricFog>(this));
+	ANKI_CHECK(m_volumetricFog->init(config));
 
 	m_lightShading.reset(m_alloc.newInstance<LightShading>(this));
 	ANKI_CHECK(m_lightShading->init(config));
 
-	m_depth.reset(m_alloc.newInstance<DepthDownscale>(this));
-	ANKI_CHECK(m_depth->init(config));
+	m_depthDownscale.reset(m_alloc.newInstance<DepthDownscale>(this));
+	ANKI_CHECK(m_depthDownscale->init(config));
 
 	m_forwardShading.reset(m_alloc.newInstance<ForwardShading>(this));
 	ANKI_CHECK(m_forwardShading->init(config));
@@ -166,8 +166,8 @@ Error Renderer::initInternal(const ConfigSet& config)
 	m_ssao.reset(m_alloc.newInstance<Ssao>(this));
 	ANKI_CHECK(m_ssao->init(config));
 
-	m_downscale.reset(getAllocator().newInstance<DownscaleBlur>(this));
-	ANKI_CHECK(m_downscale->init(config));
+	m_downscaleBlur.reset(getAllocator().newInstance<DownscaleBlur>(this));
+	ANKI_CHECK(m_downscaleBlur->init(config));
 
 	m_ssr.reset(m_alloc.newInstance<Ssr>(this));
 	ANKI_CHECK(m_ssr->init(config));
@@ -203,8 +203,8 @@ Error Renderer::initInternal(const ConfigSet& config)
 	}
 	else
 	{
-		m_smResolve.reset(m_alloc.newInstance<ShadowmapsResolve>(this));
-		ANKI_CHECK(m_smResolve->init(config));
+		m_shadowmapsResolve.reset(m_alloc.newInstance<ShadowmapsResolve>(this));
+		ANKI_CHECK(m_shadowmapsResolve->init(config));
 	}
 
 	m_motionVectors.reset(m_alloc.newInstance<MotionVectors>(this));
@@ -309,9 +309,9 @@ Error Renderer::populateRenderGraph(RenderingContext& ctx)
 	}
 
 	// Import RTs first
-	m_downscale->importRenderTargets(ctx);
+	m_downscaleBlur->importRenderTargets(ctx);
 	m_tonemapping->importRenderTargets(ctx);
-	m_depth->importRenderTargets(ctx);
+	m_depthDownscale->importRenderTargets(ctx);
 
 	// Populate render graph. WARNING Watch the order
 	m_genericCompute->populateRenderGraph(ctx);
@@ -321,29 +321,29 @@ Error Renderer::populateRenderGraph(RenderingContext& ctx)
 		m_accelerationStructureBuilder->populateRenderGraph(ctx);
 	}
 	m_shadowMapping->populateRenderGraph(ctx);
-	m_gi->populateRenderGraph(ctx);
+	m_globalIllumination->populateRenderGraph(ctx);
 	m_probeReflections->populateRenderGraph(ctx);
-	m_volLighting->populateRenderGraph(ctx);
+	m_volumetricLightingAccumulation->populateRenderGraph(ctx);
 	m_gbuffer->populateRenderGraph(ctx);
 	m_motionVectors->populateRenderGraph(ctx);
 	m_gbufferPost->populateRenderGraph(ctx);
-	m_depth->populateRenderGraph(ctx);
+	m_depthDownscale->populateRenderGraph(ctx);
 	if(m_rtShadows)
 	{
 		m_rtShadows->populateRenderGraph(ctx);
 	}
 	else
 	{
-		m_smResolve->populateRenderGraph(ctx);
+		m_shadowmapsResolve->populateRenderGraph(ctx);
 	}
-	m_volFog->populateRenderGraph(ctx);
+	m_volumetricFog->populateRenderGraph(ctx);
 	m_ssao->populateRenderGraph(ctx);
 	m_lensFlare->populateRenderGraph(ctx);
 	m_ssr->populateRenderGraph(ctx);
 	m_ssgi->populateRenderGraph(ctx);
 	m_lightShading->populateRenderGraph(ctx);
 	m_temporalAA->populateRenderGraph(ctx);
-	m_downscale->populateRenderGraph(ctx);
+	m_downscaleBlur->populateRenderGraph(ctx);
 	m_tonemapping->populateRenderGraph(ctx);
 	m_bloom->populateRenderGraph(ctx);
 
@@ -372,7 +372,7 @@ void Renderer::finalize(const RenderingContext& ctx)
 		F32* depthValues;
 		U32 width;
 		U32 height;
-		m_depth->getClientDepthMapInfo(depthValues, width, height);
+		m_depthDownscale->getClientDepthMapInfo(depthValues, width, height);
 		ctx.m_renderQueue->m_fillCoverageBufferCallback(ctx.m_renderQueue->m_fillCoverageBufferCallbackUserData,
 														depthValues, width, height);
 	}

+ 10 - 151
AnKi/Renderer/Renderer.h

@@ -43,136 +43,19 @@ public:
 
 	~Renderer();
 
-	ProbeReflections& getProbeReflections()
-	{
-		return *m_probeReflections;
-	}
-
-	VolumetricLightingAccumulation& getVolumetricLightingAccumulation()
-	{
-		return *m_volLighting;
-	}
-
-	ShadowMapping& getShadowMapping()
-	{
-		return *m_shadowMapping;
-	}
-
-	GBuffer& getGBuffer()
-	{
-		return *m_gbuffer;
-	}
-
-	LightShading& getLightShading()
-	{
-		return *m_lightShading;
-	}
-
-	DepthDownscale& getDepthDownscale()
-	{
-		return *m_depth;
-	}
-
-	ForwardShading& getForwardShading()
-	{
-		return *m_forwardShading;
-	}
-
-	VolumetricFog& getVolumetricFog()
-	{
-		return *m_volFog;
-	}
-
-	Tonemapping& getTonemapping()
-	{
-		return *m_tonemapping;
-	}
-
-	Ssao& getSsao()
-	{
-		return *m_ssao;
-	}
-
-	Bloom& getBloom()
-	{
-		return *m_bloom;
-	}
-
-	FinalComposite& getFinalComposite()
-	{
-		return *m_finalComposite;
-	}
-
-	Dbg& getDbg()
-	{
-		return *m_dbg;
-	}
-
-	TemporalAA& getTemporalAA()
-	{
-		return *m_temporalAA;
-	}
-
-	DownscaleBlur& getDownscaleBlur()
-	{
-		return *m_downscale;
-	}
-
-	LensFlare& getLensFlare()
-	{
-		return *m_lensFlare;
-	}
-
-	const LensFlare& getLensFlare() const
-	{
-		return *m_lensFlare;
-	}
-
-	const GlobalIllumination& getGlobalIllumination() const
-	{
-		return *m_gi;
-	}
-
-	UiStage& getUiStage()
-	{
-		return *m_uiStage;
-	}
-
-	ShadowmapsResolve& getShadowmapsResolve()
-	{
-		return *m_smResolve;
-	}
-
-	AccelerationStructureBuilder& getAccelerationStructureBuilder()
-	{
-		return *m_accelerationStructureBuilder;
-	}
-
-	RtShadows& getRtShadows()
-	{
-		return *m_rtShadows;
-	}
-
-	MotionVectors& getMotionVectors()
-	{
-		return *m_motionVectors;
+#define ANKI_RENDERER_OBJECT_DEF(a, b) \
+	a& get##a() \
+	{ \
+		return *m_##b; \
 	}
+#include <AnKi/Renderer/RendererObjectDefs.h>
+#undef ANKI_RENDERER_OBJECT_DEF
 
 	Bool getRtShadowsEnabled() const
 	{
 		return m_rtShadows.isCreated();
 	}
 
-	Ssr& getSsr()
-	{
-		return *m_ssr;
-	}
-
-	Ssgi& getSsgi()
-	{
-		return *m_ssgi;
-	}
-
 	U32 getWidth() const
 	{
 		return m_width;
@@ -345,33 +228,9 @@ private:
 
 	/// @name Rendering stages
 	/// @{
-	UniquePtr<VolumetricLightingAccumulation> m_volLighting;
-	UniquePtr<GlobalIllumination> m_gi;
-	UniquePtr<ProbeReflections> m_probeReflections;
-	UniquePtr<ShadowMapping> m_shadowMapping; ///< Shadow mapping.
-	UniquePtr<GBuffer> m_gbuffer; ///< Material rendering stage
-	UniquePtr<GBufferPost> m_gbufferPost;
-	UniquePtr<Ssr> m_ssr;
-	UniquePtr<Ssgi> m_ssgi;
-	UniquePtr<LightShading> m_lightShading; ///< Illumination rendering stage
-	UniquePtr<DepthDownscale> m_depth;
-	UniquePtr<ForwardShading> m_forwardShading; ///< Forward shading.
-	UniquePtr<VolumetricFog> m_volFog; ///< Volumetric fog.
-	UniquePtr<LensFlare> m_lensFlare; ///< Forward shading lens flares.
-	UniquePtr<DownscaleBlur> m_downscale;
-	UniquePtr<TemporalAA> m_temporalAA;
-	UniquePtr<Tonemapping> m_tonemapping;
-	UniquePtr<Ssao> m_ssao;
-	UniquePtr<Bloom> m_bloom;
-	UniquePtr<FinalComposite> m_finalComposite; ///< Postprocessing rendering stage
-	UniquePtr<Dbg> m_dbg; ///< Debug stage.
-	UniquePtr<UiStage> m_uiStage;
-	UniquePtr<GenericCompute> m_genericCompute;
-	UniquePtr<ShadowmapsResolve> m_smResolve;
-	UniquePtr<AccelerationStructureBuilder> m_accelerationStructureBuilder;
-	UniquePtr<RtShadows> m_rtShadows;
-	UniquePtr<MotionVectors> m_motionVectors;
-	UniquePtr<ClusterBinning> m_clusterBinning;
+#define ANKI_RENDERER_OBJECT_DEF(a, b) UniquePtr<a> m_##b;
+#include <AnKi/Renderer/RendererObjectDefs.h>
+#undef ANKI_RENDERER_OBJECT_DEF
 	/// @}
 
 	U32 m_tileSize = 0;
@@ -414,7 +273,7 @@ private:
 	ANKI_USE_RESULT Error initInternal(const ConfigSet& initializer);
 
 	void initJitteredMats();
-};
+}; // namespace anki
 /// @}
 
 } // end namespace anki

+ 32 - 0
AnKi/Renderer/RendererObjectDefs.h

@@ -0,0 +1,32 @@
+// Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
+// All rights reserved.
+// Code licensed under the BSD License.
+// http://www.anki3d.org/LICENSE
+
+ANKI_RENDERER_OBJECT_DEF(GBuffer, gbuffer)
+ANKI_RENDERER_OBJECT_DEF(GBufferPost, gbufferPost)
+ANKI_RENDERER_OBJECT_DEF(ShadowMapping, shadowMapping)
+ANKI_RENDERER_OBJECT_DEF(LightShading, lightShading)
+ANKI_RENDERER_OBJECT_DEF(ForwardShading, forwardShading)
+ANKI_RENDERER_OBJECT_DEF(LensFlare, lensFlare)
+ANKI_RENDERER_OBJECT_DEF(Ssao, ssao)
+ANKI_RENDERER_OBJECT_DEF(Tonemapping, tonemapping)
+ANKI_RENDERER_OBJECT_DEF(Bloom, bloom)
+ANKI_RENDERER_OBJECT_DEF(FinalComposite, finalComposite)
+ANKI_RENDERER_OBJECT_DEF(Dbg, dbg)
+ANKI_RENDERER_OBJECT_DEF(ProbeReflections, probeReflections)
+ANKI_RENDERER_OBJECT_DEF(DownscaleBlur, downscaleBlur)
+ANKI_RENDERER_OBJECT_DEF(VolumetricFog, volumetricFog)
+ANKI_RENDERER_OBJECT_DEF(DepthDownscale, depthDownscale)
+ANKI_RENDERER_OBJECT_DEF(TemporalAA, temporalAA)
+ANKI_RENDERER_OBJECT_DEF(UiStage, uiStage)
+ANKI_RENDERER_OBJECT_DEF(Ssr, ssr)
+ANKI_RENDERER_OBJECT_DEF(Ssgi, ssgi)
+ANKI_RENDERER_OBJECT_DEF(VolumetricLightingAccumulation, volumetricLightingAccumulation)
+ANKI_RENDERER_OBJECT_DEF(GlobalIllumination, globalIllumination)
+ANKI_RENDERER_OBJECT_DEF(GenericCompute, genericCompute)
+ANKI_RENDERER_OBJECT_DEF(ShadowmapsResolve, shadowmapsResolve)
+ANKI_RENDERER_OBJECT_DEF(RtShadows, rtShadows)
+ANKI_RENDERER_OBJECT_DEF(AccelerationStructureBuilder, accelerationStructureBuilder)
+ANKI_RENDERER_OBJECT_DEF(MotionVectors, motionVectors)
+ANKI_RENDERER_OBJECT_DEF(ClusterBinning, clusterBinning)