Retro console look: vertex snapping and affine textures
In your harnessGodot shaderMIT
Recreate late-1990s console rendering: vertices snap to a coarse screen grid so geometry jitters, texture coordinates interpolate without perspective correction so textures warp, and colours drop to 15-bit with ordered dithering.

What it takes and gives
- Shader type
- spatial
- Parameters
- albedo_texture (sampler2D), color_a (vec4 = 0.85, 0.75, 0.55, 1), color_b (vec4 = 0.45, 0.25, 0.2, 1), checker_cells (float = 6), snap_width (float = 160), snap_height (float = 120), affine_amount (float = 1), color_levels (float = 32) and 1 more
- Use it on
- Optional: a low-resolution texture for
albedo_texture. - Result
- A checkered floor and crate whose texture bends across large triangles and whose edges sit on a coarse grid, with dithered colour.
- Renderers
- compatibility: compiled and rendered, forward plus: not verified, mobile: not verified
- Placement
- res://baltor/godot_shaders/ps1_vertex_snap/
Limits. Affine warping depends on triangle size: finely subdivided meshes show little of it. Snapping happens in screen space, so the jitter is visible only with motion. Lighting is still Godot's per-pixel lighting, not per-vertex Gouraud.
Details
- Kind
- Godot shader
- Engine
- Godot 4.3 or later
- Files
- 11 files, 51.7 KB
- Licence
- MIT
- Declared effects
- reads files, runs commands
- Checked with
- Godot 4.7.2, opengl3 compatibility (Mesa llvmpipe, Xvfb)
- Checks
- contract static, engine run, engine log clean, shader in scene, capture written, render not uniform, shader changes pixels
- Techniques
- Clip-space vertex quantization, Affine texture mapping by dividing W-weighted UVs, 15-bit colour quantization with 4 x 4 Bayer dithering
- Tags
- godot shader, spatial, retro, ps1, vertex snapping, affine texture, low fidelity
- Identity
library.supply.creative_originals.94984d99fd5ae2204aff6e9f.0f9879b06b9bc35f- Version
0f9879b06b9bc35fd7ff26ede4f536e5e56ceb941451def3ee744aad297300a2
The version is the SHA-256 of the item your harness downloads; every file in it names its own checksum.
Something wrong with this item, its rights or its safety? Report it on the support page, or from your harness after a download.

