1.3 KiB
Rendering & coordinate conventions
Implementation notes for the renderer crate and for code that imports geometry. The project-wide coordinate convention itself (+Y up, right-handed, 1 unit = 1 block) is stated in AGENTS.md; this note collects the gotchas that arise because neighbouring systems use different conventions. These are not convention changes, only mismatches to handle in one agreed place.
Vulkan clip space
Vulkan clip space is Y-down by default, and its depth range is [0, 1] (not [-1, 1] as in OpenGL). The projection matrix must flip Y, or the viewport height is set negative, both are common idioms in ash examples. World and view space stay Y-up; only clip space differs.
Blender import
Blender is Z-up, right-handed. Models exported from Blender need a coordinate swap on import: rotate −90° around X, or swap Y/Z with a sign change. Decide once where that swap happens, at export, at import, or never (by adopting the source convention), and keep it in a single place. Performing it in two places eventually produces a model that is mirrored or upside-down.
glTF import
glTF is Y-up, right-handed, which matches the engine convention. It is therefore the most friction-free model format when there is a choice.