167 template<typename Processor> static constexpr
void reflect(Processor&& RTTI) {
186 template<
typename Processor>
static constexpr void reflect(Processor&& RTTI) {
237 : type(binary.type), source(binary.data.data(), binary.data.size()), sourceType(
ShaderSourceType::Binary) {}
242 : type(source.type), source(source.source), sourceType(
ShaderSourceType::Source) {}
247 template<
typename Processor>
static constexpr void reflect(Processor&& RTTI) {
265 :
TDeviceObject(device, descriptor), reflection(reflection) {}
296 template<typename Processor> static constexpr
void reflect(Processor&& RTTI) {
350 template<typename Processor> static constexpr
void reflect(Processor&& RTTI) {
370 :
TDeviceObject(device, descriptor), reflection(reflection) {}
373 using TDeviceObject::TDeviceObject;
#define CE_FLAGS_OPERATORS(Enum)
Defines global operators for a Flags<Enum, Storage> implementation.
Definition Flags.hpp:216
#define CE_REFLECT_HASH(T)
Definition Hash.hpp:89
#define CE_REFL_DATA(N)
Definition Macros.hpp:541
#define CE_SCRIPT_EXPORT(...)
The CE_SCRIPT_EXPORT macro marks a class or method as exportable and available in scripting environme...
Definition Macros.hpp:247
#define CE_EXPLICIT(EXPR)
Definition Macros.hpp:413
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
Definition GPUDevice.hpp:357
Definition GPUShader.hpp:256
GPUShader(GPUDevice &device, const Descriptor &descriptor, const GPUShaderReflectionDescriptor &reflection)
Initializes a new Shader object instance.
Definition GPUShader.hpp:264
const GPUShaderReflectionDescriptor & reflection
The shader reflection descriptor.
Definition GPUShader.hpp:260
GPUShader & operator=(const GPUShader &)=delete
GPUShader & operator=(GPUShader &&)=delete
GPUShader(const GPUShader &)=delete
Deleted copy constructor.
GPUShader(GPUShader &&)=delete
Deleted move constructor.
Definition GPUShader.hpp:361
GPUShaderProgram(const GPUShaderProgram &)=delete
Deleted copy constructor.
const GPUShaderReflectionDescriptor & reflection
The shader reflection descriptor.
Definition GPUShader.hpp:365
GPUShaderProgram & operator=(const GPUShaderProgram &)=delete
GPUShaderProgram & operator=(GPUShaderProgram &&)=delete
GPUShaderProgram(GPUDevice &device, const Descriptor &descriptor, const GPUShaderReflectionDescriptor &reflection)
Initializes a new ShaderProgram object instance.
Definition GPUShader.hpp:369
GPUShaderProgram(GPUShaderProgram &&)=delete
Deleted move constructor.
virtual GPUPipelineLayoutPtr getPipelineLayout() const =0
The pipeline layout deduced for this shader program.
A base class for all mesh implementations.
Definition Mesh.hpp:112
A ShaderBinary is an object responsible for wrapping the binary representation of a shader (i....
Definition ShaderSource.hpp:40
A ShaderSource is an object responsible for wrapping the textual representation of a shader (i....
Definition ShaderSource.hpp:112
Definition Application.hpp:19
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
GPUResourceType
An enumeration of supported resource types.
Definition GPUResource.hpp:15
ShaderSourceType
Shader source type enumeration.
Definition ShaderSource.hpp:21
std::uint32_t UInt32
Definition DataTypes.hpp:23
GPUPipelineStage
Shader stage flags enumeration.
Definition GPUShader.hpp:37
@ ReadOnlyResource
Specifies whether a resource is bound to the shader stages for reading only.
@ Tesselation
Specifies all tessellation stages, i.e.
@ All
Specifies all shader stages.
@ Graphics
Specifies all graphics pipeline shader stages, i.e.
@ Fragment
Specifies the fragment shader stage (also "Pixel Shader").
@ TesselationEvaluation
Specifies the tessellation-evaluation shader stage (also "Domain Shader").
@ TesselationControl
Specifies the tessellation-control shader stage (also "Hull Shader").
@ Compute
Specifies the compute shader stage.
@ RayTracingRayGeneration
@ Geometry
Specifies the geometry shader stage.
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Shader source and binary code descriptor structure.
Definition GPUShader.hpp:193
static constexpr void reflect(Processor &&RTTI)
Executes the given processor for every field of the struct.
Definition GPUShader.hpp:247
Descriptor structure for shader programs.
Definition GPUShader.hpp:303
Definition GPUShader.hpp:282
Shader reflection descriptor view structure.
Definition GPUShader.hpp:124
Shader reflection descriptor structure.
Definition GPUShader.hpp:108
Vector< GPUVertexAttribute > vertexAttributes
List of all vertex attributes.
Definition GPUShader.hpp:179
Vector< DescriptorView > descriptorViews
List of all shader reflection descriptor views.
Definition GPUShader.hpp:182
static constexpr void reflect(Processor &&RTTI)
Executes the given processor for every field of the struct.
Definition GPUShader.hpp:186
Shader type enumeration.
Definition ShaderType.hpp:59
A basic vertex type.
Definition Mesh.hpp:51