// Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #pragma once #include #include #include #include namespace anki { /// @addtogroup renderer /// @{ /// Contains some interesting visible scene components that will be used by various renderer systems. /// @memberof PrimaryNonRenderableVisibility class InterestingVisibleComponents { public: WeakArray m_shadowLights; WeakArray m_reflectionProbes; WeakArray m_globalIlluminationProbes; }; /// Multiple passes for GPU visibility of non-renderable entities. class PrimaryNonRenderableVisibility : public RendererObject { public: Error init() { return Error::kNone; } void populateRenderGraph(RenderingContext& ctx); const InterestingVisibleComponents& getInterestingVisibleComponents() const { return m_runCtx.m_interestingComponents; } BufferHandle getVisibleIndicesBufferHandle(GpuSceneNonRenderableObjectType type) const { return m_runCtx.m_visibleIndicesHandles[type]; } const BufferView& getVisibleIndicesBuffer(GpuSceneNonRenderableObjectType type) const { return m_runCtx.m_visibleIndicesBuffers[type]; } private: Array m_readbacks; class { public: Array m_visibleIndicesHandles; Array m_visibleIndicesBuffers; /// Feedback from the GPU InterestingVisibleComponents m_interestingComponents; } m_runCtx; }; /// @} } // end namespace anki