SDL Wiki
(This is the documentation for SDL3, which is the current stable version. SDL2 was the previous version!)

SDL_CreateGPUShader

Creates a shader to be used when creating a graphics pipeline.

Header File

Defined in <SDL3/SDL_gpu.h>

Syntax

SDL_GPUShader* SDL_CreateGPUShader(
    SDL_GPUDevice *device,
    const SDL_GPUShaderCreateInfo *createinfo);

Function Parameters

SDL_GPUDevice * device a GPU Context.
const SDL_GPUShaderCreateInfo * createinfo a struct describing the state of the shader to create.

Return Value

(SDL_GPUShader *) Returns a shader object on success, or NULL on failure; call SDL_GetError() for more information.

Remarks

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 SDL_PROP_GPU_DEVICE_CREATE_D3D12_SEMANTIC_NAME_STRING with SDL_CreateGPUDeviceWithProperties().

Version

This function is available since SDL 3.1.3.

See Also


CategoryAPI, CategoryAPIFunction, CategoryGPU


[ edit | delete | history | feedback | raw ]

[ front page | index | search | recent changes | git repo | offline html ]

All wiki content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
Wiki powered by ghwikipp.