Files
o3de/Gems/Atom/RHI/Null/Code/Source/RHI.Builders/ShaderPlatformInterface.h
Esteban Papp a7780b6dbe Gems/Atom*
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-09-10 20:16:11 -07:00

55 lines
2.7 KiB
C++

/*
* 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.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#include <Atom/RHI.Edit/ShaderPlatformInterface.h>
#include <Atom/RHI.Reflect/Null/Base.h>
namespace AZ
{
namespace Null
{
class ShaderPlatformInterface :
public RHI::ShaderPlatformInterface
{
public:
explicit ShaderPlatformInterface(uint32_t apiUniqueIndex);
//////////////////////////////////////////////////////////////////////////
// RHI::ShaderPlatformInterface
RHI::APIType GetAPIType() const override;
AZ::Name GetAPIName() const override;
RHI::Ptr<RHI::PipelineLayoutDescriptor> CreatePipelineLayoutDescriptor() override;
RHI::Ptr<RHI::ShaderStageFunction> CreateShaderStageFunction(const StageDescriptor& stageDescriptor) override;
bool IsShaderStageForRaster(RHI::ShaderHardwareStage shaderStageType) const override;
bool IsShaderStageForCompute(RHI::ShaderHardwareStage shaderStageType) const override;
bool IsShaderStageForRayTracing(RHI::ShaderHardwareStage shaderStageType) const override;
bool CompilePlatformInternal(
const AssetBuilderSDK::PlatformInfo& platform, const AZStd::string& shaderSourcePath, const AZStd::string& functionName,
RHI::ShaderHardwareStage shaderStage, const AZStd::string& tempFolderPath, StageDescriptor& outputDescriptor,
const RHI::ShaderCompilerArguments& shaderCompilerArguments) const override;
AZStd::string GetAzslCompilerWarningParameters(const RHI::ShaderCompilerArguments& shaderCompilerArguments) const override;
bool BuildHasDebugInfo(const RHI::ShaderCompilerArguments& shaderCompilerArguments) const override;
const char* GetAzslHeader(const AssetBuilderSDK::PlatformInfo& platform) const override;
bool BuildPipelineLayoutDescriptor(
RHI::Ptr<RHI::PipelineLayoutDescriptor> pipelineLayoutDescriptor,
const ShaderResourceGroupInfoList& srgInfoList,
const RootConstantsInfo& rootConstantsInfo,
const RHI::ShaderCompilerArguments& shaderCompilerArguments) override;
AZStd::string GetAzslCompilerParameters(const RHI::ShaderCompilerArguments& shaderCompilerArguments) const override;
//////////////////////////////////////////////////////////////////////////
private:
ShaderPlatformInterface() = delete;
const Name m_apiName{APINameString};
};
}
}