RenderToTextureBus.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0 OR MIT
  5. *
  6. */
  7. #pragma once
  8. #include <Atom/RPI.Reflect/Image/AttachmentImageAsset.h>
  9. namespace LyShine
  10. {
  11. //! Ebus to handle render target requests
  12. class RenderToTextureRequests
  13. : public AZ::ComponentBus
  14. {
  15. public:
  16. //! Get an attachment image to be used internally by a UI component to render to texture
  17. //! and then read that same texture (ex. UiMaskComponent, UiFaderComponent)
  18. virtual AZ::RHI::AttachmentId UseRenderTarget(const AZ::Name& renderTargetName, AZ::RHI::Size size) = 0;
  19. //! Get an attachment image from an attachment image asset to render to texture only
  20. //! and then read it outside of LyShine (ex. render UI canvas to a render target and use in a material)
  21. virtual AZ::RHI::AttachmentId UseRenderTargetAsset(const AZ::Data::Asset<AZ::RPI::AttachmentImageAsset>& attachmentImageAsset) = 0;
  22. //! Call when a render target is no longer needed by a UI canvas
  23. virtual void ReleaseRenderTarget(const AZ::RHI::AttachmentId& attachmentId) = 0;
  24. //! Get an attachment image used by a UI canvas from an attachment image Id
  25. virtual AZ::Data::Instance<AZ::RPI::AttachmentImage> GetRenderTarget(const AZ::RHI::AttachmentId& attachmentId) = 0;
  26. };
  27. using RenderToTextureRequestBus = AZ::EBus<RenderToTextureRequests>;
  28. }