|
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 | 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 |