Adds a runtime GPU shader-backend selection layer so the engine is no longer hardcoded to #load SPIR-V only.
- Introduce Shader_Runtime / choose_shader_runtime (engine/shader_backend.odin)
- Create the GPU device with {.SPIRV, .DXIL, .MSL}, then pick a supported format + shaders/<backend>/ directory
- Load shader blobs from disk and build the sprite pipeline with the chosen format/entrypoint
- Add shader build scripts + Makefile targets (shaders-vulkan / d3d12 / metal / all)
Migrates the toad example from SDL’s 2D Renderer API to SDL_GPU, keeping the same Character_Data / Sprite engine API and baked asset pipeline.
- Replaces CreateWindowAndRenderer / RenderTexture with GPU device + swapchain framing (begin_frame / end_frame)
- Adds sprite vertex/fragment GLSL shaders and compiled SPIR-V (shaders/sprite.*.glsl / .spv)
- Uploads atlas PNGs as GPUTexture via transfer buffer + copy pass (with fence sync)
- Draws sprites as UV quads (DrawGPUPrimitives) using atlas frame rects from char.json