SDL3pp
A slim C++ wrapper for SDL3
|
An opaque handle representing a compiled shader object. More...
Public Member Functions | |
constexpr | GPUShader (GPUShaderRaw gPUShader={}) |
Wraps GPUShader. More... | |
GPUShader (GPUDeviceParam device, const GPUShaderCreateInfo &createinfo) | |
Creates a shader to be used when creating a graphics pipeline. More... | |
constexpr bool | operator== (const GPUShader &other) const =default |
Default comparison operator. | |
constexpr bool | operator== (GPUShaderRaw gPUShader) const |
Compares with the underlying type. | |
constexpr | operator GPUShaderRaw () const |
Unwraps to the underlying GPUShader. More... | |
|
inlineconstexpr |
gPUShader | the value to be wrapped |
|
inline |
Shader resource bindings must be authored to follow a particular order depending on the shader format.
For SPIR-V shaders, use the following resource sets:
For vertex shaders:
For fragment shaders:
For DXBC and DXIL shaders, use the following register order:
For vertex shaders:
For pixel shaders:
For MSL/metallib, use the following order:
Shader semantics other than system-value semantics do not matter in D3D12 and for ease of use the SDL implementation assumes that non system-value semantics will all be TEXCOORD. If you are using HLSL as the shader source language, your vertex semantics should start at TEXCOORD0 and increment like so: TEXCOORD1, TEXCOORD2, etc. If you wish to change the semantic prefix to something other than TEXCOORD you can use prop::GpuDevice.CREATE_D3D12_SEMANTIC_NAME_STRING with GPUDevice.GPUDevice().
There are optional properties that can be provided through props
. These are the supported properties:
prop::GPUShader.CREATE_NAME_STRING
: a name that can be displayed in debugging tools.device | a GPU Context. |
createinfo | a struct describing the state of the shader to create. |
Error | on failure. |
|
inlineconstexpr |