From 8e0b39f465c31492f9386d42e15b9df8a3bd7e21 Mon Sep 17 00:00:00 2001 From: SDL Wiki Bot Date: Thu, 17 Apr 2025 18:06:43 +0000 Subject: [PATCH] Sync SDL3 wiki -> header [ci skip] --- include/SDL3/SDL_gpu.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/SDL3/SDL_gpu.h b/include/SDL3/SDL_gpu.h index 6a2e667fe3..216a2ac142 100644 --- a/include/SDL3/SDL_gpu.h +++ b/include/SDL3/SDL_gpu.h @@ -237,6 +237,23 @@ * - iOS/tvOS requires an A9 GPU or newer * - iOS Simulator and tvOS Simulator are unsupported * + * ## Coordinate System + * + * The GPU API uses a left-handed coordinate system, following the convention + * of D3D12 and Metal. Specifically: - **Normalized Device Coordinates:** The + * lower-left corner has an x,y coordinate of `(-1.0, -1.0)`. The upper-right + * corner is `(1.0, 1.0)`. Z values range from `[0.0, 1.0]` where 0 is the + * near plane. - **Viewport Coordinates:** The top-left corner has an x,y + * coordinate of `(0, 0)` and extends to the bottom-right corner at + * `(viewportWidth, viewportHeight)`. +Y is down. - **Texture Coordinates:** + * The top-left corner has an x,y coordinate of `(0, 0)` and extends to the + * bottom-right corner at `(1.0, 1.0)`. +Y is down. + * + * If the backend driver differs from this convention (e.g. Vulkan, which has + * an NDC that assumes +Y is down), SDL will automatically convert the + * coordinate system behind the scenes, so you don't need to perform any + * coordinate flipping logic in your shaders. + * * ## Uniform Data * * Uniforms are for passing data to shaders. The uniform data will be constant