3
0

ShaderManagementConsoleRequestBus.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/std/containers/vector.h>
  10. #include <AzCore/EBus/EBus.h>
  11. #include <AzCore/Asset/AssetCommon.h>
  12. #include <Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h>
  13. #include <Atom/RPI.Reflect/Material/ShaderCollection.h>
  14. #include <Atom/RPI.Reflect/Shader/ShaderOptionTypes.h>
  15. namespace ShaderManagementConsole
  16. {
  17. //! ShaderManagementConsoleRequestBus provides
  18. class ShaderManagementConsoleRequests
  19. : public AZ::EBusTraits
  20. {
  21. public:
  22. static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
  23. static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
  24. //! Returns a shader file's asset id and relative filepath
  25. virtual AZ::Data::AssetInfo GetSourceAssetInfo(const AZStd::string& sourceAssetFileName) = 0;
  26. //! Returns a list of material AssetIds that use the shader file.
  27. virtual AZStd::vector<AZ::Data::AssetId> FindMaterialAssetsUsingShader (const AZStd::string& shaderFilePath) = 0;
  28. //! Returns a list of shader items contained within an instantiated material source's shader collection.
  29. virtual AZStd::vector<AZ::RPI::ShaderCollection::Item> GetMaterialInstanceShaderItems(const AZ::Data::AssetId& assetId) = 0;
  30. //! Return the id of all built material assets
  31. virtual AZStd::vector<AZ::Data::AssetId> GetAllMaterialAssetIds() = 0;
  32. //! A wrapper to call GenerateRelativeSourcePath from python
  33. virtual AZStd::string GenerateRelativeSourcePath(const AZStd::string& fullShaderPath) = 0;
  34. //! A convenience function to generate proper ShaderOptionValue instances from scripts
  35. virtual AZ::RPI::ShaderOptionValue MakeShaderOptionValueFromInt(int value) = 0;
  36. };
  37. using ShaderManagementConsoleRequestBus = AZ::EBus<ShaderManagementConsoleRequests>;
  38. } // namespace ShaderManagementConsole