MipmapGenerator.h 884 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Renderer/RendererObject.h>
  7. namespace anki {
  8. /// @addtogroup renderer
  9. /// @{
  10. /// @memberof MipmapGenerator
  11. class MipmapGeneratorTargetArguments
  12. {
  13. public:
  14. RenderTargetHandle m_handle;
  15. UVec2 m_targetSize = UVec2(0u); ///< Size of the 1st mip
  16. U32 m_layerCount = 1;
  17. U8 m_mipmapCount = 0;
  18. Bool m_isCubeTexture = false;
  19. };
  20. /// Generates a mipmap chain.
  21. class MipmapGenerator : public RendererObject
  22. {
  23. public:
  24. Error init();
  25. void populateRenderGraph(const MipmapGeneratorTargetArguments& target, RenderGraphBuilder& rgraph, CString passesName = {});
  26. private:
  27. ShaderProgramResourcePtr m_genMipsProg;
  28. ShaderProgramPtr m_genMipsGrProg;
  29. };
  30. /// @}
  31. } // end namespace anki