Added an advanced shader for the GPU renderer

This allows us to support YUV colorspaces and HDR in the GPU renderer.

Fixes https://github.com/libsdl-org/SDL/issues/11281
Fixes https://github.com/libsdl-org/SDL/issues/11282
This commit is contained in:
Sam Lantinga 2025-09-29 21:23:15 -07:00
parent fe3b399b7e
commit 9735c45db6
42 changed files with 5205 additions and 3589 deletions

View file

@ -106,52 +106,31 @@ static const GPU_ShaderSources vert_shader_sources[NUM_VERT_SHADERS] = {
static const GPU_ShaderSources frag_shader_sources[NUM_FRAG_SHADERS] = {
[FRAG_SHADER_COLOR] = {
.num_samplers = 0,
.num_uniform_buffers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(color_frag_spv)
SHADER_DXIL60(color_frag_dxil)
SHADER_METAL(color_frag_msl)
},
[FRAG_SHADER_TEXTURE_PALETTE] = {
.num_samplers = 2,
.num_uniform_buffers = 0,
SHADER_SPIRV(texture_palette_frag_spv)
SHADER_DXIL60(texture_palette_frag_dxil)
SHADER_METAL(texture_palette_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGB] = {
.num_samplers = 1,
.num_uniform_buffers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgb_frag_spv)
SHADER_DXIL60(texture_rgb_frag_dxil)
SHADER_METAL(texture_rgb_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGBA] = {
.num_samplers = 1,
.num_uniform_buffers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgba_frag_spv)
SHADER_DXIL60(texture_rgba_frag_dxil)
SHADER_METAL(texture_rgba_frag_msl)
},
[FRAG_SHADER_TEXTURE_PALETTE_PIXELART] = {
.num_samplers = 2,
[FRAG_SHADER_TEXTURE_ADVANCED] = {
.num_samplers = 3,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_palette_pixelart_frag_spv)
SHADER_DXIL60(texture_palette_pixelart_frag_dxil)
SHADER_METAL(texture_palette_pixelart_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGB_PIXELART] = {
.num_samplers = 1,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgb_pixelart_frag_spv)
SHADER_DXIL60(texture_rgb_pixelart_frag_dxil)
SHADER_METAL(texture_rgb_pixelart_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGBA_PIXELART] = {
.num_samplers = 1,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgba_pixelart_frag_spv)
SHADER_DXIL60(texture_rgba_pixelart_frag_dxil)
SHADER_METAL(texture_rgba_pixelart_frag_msl)
SHADER_SPIRV(texture_advanced_frag_spv)
SHADER_DXIL60(texture_advanced_frag_dxil)
SHADER_METAL(texture_advanced_frag_msl)
},
};
// clang-format on