Baltor Get started

Gallery / Godot shaders

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.

Render of Retro console look: vertex snapping and affine textures
The render its check recorded in Godot 4.7.2, 256 by 256 pixels.

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.