| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- /*
- * 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
- *
- */
- #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
- #include <AzCore/Serialization/SerializeContext.h>
- #include <AzCore/Utils/TypeHash.h>
- namespace AZ::RHI
- {
- void ShaderInputBufferDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputBufferDescriptor>()
- ->Version(5)
- ->Field("m_name", &ShaderInputBufferDescriptor::m_name)
- ->Field("m_type", &ShaderInputBufferDescriptor::m_type)
- ->Field("m_access", &ShaderInputBufferDescriptor::m_access)
- ->Field("m_count", &ShaderInputBufferDescriptor::m_count)
- ->Field("m_strideSize", &ShaderInputBufferDescriptor::m_strideSize)
- ->Field("m_registerId", &ShaderInputBufferDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputBufferDescriptor::m_spaceId);
- }
- ShaderInputBufferIndex::Reflect(context);
- }
- ShaderInputBufferDescriptor::ShaderInputBufferDescriptor(
- const Name& name,
- ShaderInputBufferAccess access,
- ShaderInputBufferType type,
- uint32_t bufferCount,
- uint32_t strideSize,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_access{ access }
- , m_type{ type }
- , m_count{ bufferCount }
- , m_strideSize{ strideSize }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputBufferDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_access, seed);
- seed = TypeHash64(m_type, seed);
- seed = TypeHash64(m_count, seed);
- seed = TypeHash64(m_strideSize, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputImageDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputImageDescriptor>()
- ->Version(4)
- ->Field("m_name", &ShaderInputImageDescriptor::m_name)
- ->Field("m_type", &ShaderInputImageDescriptor::m_type)
- ->Field("m_access", &ShaderInputImageDescriptor::m_access)
- ->Field("m_count", &ShaderInputImageDescriptor::m_count)
- ->Field("m_registerId", &ShaderInputImageDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputImageDescriptor::m_spaceId);
- }
- ShaderInputImageIndex::Reflect(context);
- }
- ShaderInputImageDescriptor::ShaderInputImageDescriptor(
- const Name& name,
- ShaderInputImageAccess access,
- ShaderInputImageType type,
- uint32_t imageCount,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_access{ access }
- , m_type{ type }
- , m_count{ imageCount }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputImageDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_access, seed);
- seed = TypeHash64(m_type, seed);
- seed = TypeHash64(m_count, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputBufferUnboundedArrayDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputBufferUnboundedArrayDescriptor>()
- ->Version(2)
- ->Field("m_name", &ShaderInputBufferUnboundedArrayDescriptor::m_name)
- ->Field("m_type", &ShaderInputBufferUnboundedArrayDescriptor::m_type)
- ->Field("m_access", &ShaderInputBufferUnboundedArrayDescriptor::m_access)
- ->Field("m_strideSize", &ShaderInputBufferUnboundedArrayDescriptor::m_strideSize)
- ->Field("m_registerId", &ShaderInputBufferUnboundedArrayDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputBufferUnboundedArrayDescriptor::m_spaceId);
- }
- ShaderInputBufferUnboundedArrayIndex::Reflect(context);
- }
- ShaderInputBufferUnboundedArrayDescriptor::ShaderInputBufferUnboundedArrayDescriptor(
- const Name& name,
- ShaderInputBufferAccess access,
- ShaderInputBufferType type,
- uint32_t strideSize,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_access{ access }
- , m_type{ type }
- , m_strideSize { strideSize }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputBufferUnboundedArrayDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_access, seed);
- seed = TypeHash64(m_type, seed);
- seed = TypeHash64(m_strideSize, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputImageUnboundedArrayDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputImageUnboundedArrayDescriptor>()
- ->Version(2)
- ->Field("m_name", &ShaderInputImageUnboundedArrayDescriptor::m_name)
- ->Field("m_type", &ShaderInputImageUnboundedArrayDescriptor::m_type)
- ->Field("m_access", &ShaderInputImageUnboundedArrayDescriptor::m_access)
- ->Field("m_registerId", &ShaderInputImageUnboundedArrayDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputImageUnboundedArrayDescriptor::m_spaceId);
- }
- ShaderInputImageUnboundedArrayIndex::Reflect(context);
- }
- ShaderInputImageUnboundedArrayDescriptor::ShaderInputImageUnboundedArrayDescriptor(
- const Name& name,
- ShaderInputImageAccess access,
- ShaderInputImageType type,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_access{ access }
- , m_type { type }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputImageUnboundedArrayDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_access, seed);
- seed = TypeHash64(m_type, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputSamplerDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputSamplerDescriptor>()
- ->Version(4)
- ->Field("m_name", &ShaderInputSamplerDescriptor::m_name)
- ->Field("m_count", &ShaderInputSamplerDescriptor::m_count)
- ->Field("m_registerId", &ShaderInputSamplerDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputSamplerDescriptor::m_spaceId);
- }
- ShaderInputSamplerIndex::Reflect(context);
- }
- ShaderInputSamplerDescriptor::ShaderInputSamplerDescriptor(
- const Name& name,
- uint32_t samplerCount,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_count{ samplerCount }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputSamplerDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_count, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputConstantDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputConstantDescriptor>()
- ->Version(4)
- ->Field("m_name", &ShaderInputConstantDescriptor::m_name)
- ->Field("m_constantByteOffset", &ShaderInputConstantDescriptor::m_constantByteOffset)
- ->Field("m_constantByteCount", &ShaderInputConstantDescriptor::m_constantByteCount)
- ->Field("m_registerId", &ShaderInputConstantDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputConstantDescriptor::m_spaceId);
- }
- ShaderInputConstantIndex::Reflect(context);
- }
- ShaderInputConstantDescriptor::ShaderInputConstantDescriptor(
- const Name& name,
- uint32_t constantByteOffset,
- uint32_t constantByteCount,
- uint32_t registerId,
- uint32_t spaceId)
- : m_name{ name }
- , m_constantByteOffset{ constantByteOffset }
- , m_constantByteCount{ constantByteCount }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputConstantDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = TypeHash64(m_constantByteOffset, seed);
- seed = TypeHash64(m_constantByteCount, seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- void ShaderInputStaticSamplerDescriptor::Reflect(ReflectContext* context)
- {
- if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<ShaderInputStaticSamplerDescriptor>()
- ->Version(2)
- ->Field("m_name", &ShaderInputStaticSamplerDescriptor::m_name)
- ->Field("m_samplerState", &ShaderInputStaticSamplerDescriptor::m_samplerState)
- ->Field("m_registerId", &ShaderInputStaticSamplerDescriptor::m_registerId)
- ->Field("m_spaceId", &ShaderInputStaticSamplerDescriptor::m_spaceId);
- }
- ShaderInputStaticSamplerIndex::Reflect(context);
- }
- ShaderInputStaticSamplerDescriptor::ShaderInputStaticSamplerDescriptor(
- const Name& name, const SamplerState& samplerState, uint32_t registerId, uint32_t spaceId)
- : m_name{name}
- , m_samplerState{ samplerState }
- , m_registerId{ registerId }
- , m_spaceId{ spaceId }
- {}
- HashValue64 ShaderInputStaticSamplerDescriptor::GetHash(HashValue64 seed) const
- {
- seed = TypeHash64(m_name.GetHash(), seed);
- seed = m_samplerState.GetHash(seed);
- seed = TypeHash64(m_registerId, seed);
- return seed;
- }
- const char* GetShaderInputTypeName(ShaderInputBufferType bufferInputType)
- {
- switch (bufferInputType)
- {
- case ShaderInputBufferType::Structured:
- return "Structured";
- case ShaderInputBufferType::Typed:
- return "Typed";
- case ShaderInputBufferType::Raw:
- return "Raw";
- case ShaderInputBufferType::AccelerationStructure:
- return "AccelerationStructure";
- }
- return "";
- }
- const char* GetShaderInputTypeName(ShaderInputImageType imageInputType)
- {
- switch (imageInputType)
- {
- case ShaderInputImageType::Image1D:
- return "Image1D";
- case ShaderInputImageType::Image1DArray:
- return "Image1DArray";
- case ShaderInputImageType::Image2D:
- return "Image2D";
- case ShaderInputImageType::Image2DArray:
- return "Image2DArray";
- case ShaderInputImageType::Image2DMultisample:
- return "Image2DMultisample";
- case ShaderInputImageType::Image2DMultisampleArray:
- return "Image2DMultisampleArray";
- case ShaderInputImageType::Image3D:
- return "Image3D";
- case ShaderInputImageType::ImageCube:
- return "ImageCube";
- case ShaderInputImageType::ImageCubeArray:
- return "ImageCubeArray";
- case ShaderInputImageType::SubpassInput:
- return "SubpassInput";
- }
- return "";
- }
- const char* GetShaderInputAccessName(ShaderInputBufferAccess bufferInputAcces)
- {
- switch (bufferInputAcces)
- {
- case ShaderInputBufferAccess::Constant:
- return "BufferConstant";
- case ShaderInputBufferAccess::Read:
- return "BufferRead";
- case ShaderInputBufferAccess::ReadWrite:
- return "BufferReadWrite";
- }
- return "";
- }
- const char* GetShaderInputAccessName(ShaderInputImageAccess imageInputAccess)
- {
- switch (imageInputAccess)
- {
- case ShaderInputImageAccess::Read:
- return "ImageRead";
- case ShaderInputImageAccess::ReadWrite:
- return "ImageReadWrite";
- }
- return "";
- }
- }
|