Recreating the PS1's Rendering Quirks in Godot.
by Vicente C.
Published |
8
Share
Calin P. turned lessons from building a PS1 emulator into a Godot 4 addon that follows the original console's rendering behavior.
Low-resolution textures and wobbling vertices are easy to associate with PlayStation games. Recreating the way the console drew a scene takes more than adding those effects to a modern shader.

Calin P. recently released godot-psxlike, a rendering addon for recreating several quirks of the original PlayStation in Godot 4. It grew from his work on P-chan, his own PS1 emulator. 
Calin's advice for understanding the look is simple: play some PS1 games. Building an emulator, even an incomplete one, forced him to learn what the hardware was doing.

Unlike a modern programmable GPU, the PS1's GPU was a 2D rasterizer with a fixed set of drawing options. The CPU sorted polygons by depth, then sent them to the GPU in the order they should appear.

The console had 1 MB of VRAM shared by its framebuffers and textures. Calin renders at 320x240 and limits each RGB channel to five bits. An optional 4x4 dither pattern is applied per mesh before the colors are reduced, not across the entire screen as a post-processing effect.

Modern GPUs automatically correct texture coordinates for perspective. The PS1 GPU only received 2D screen positions, so it interpolated those coordinates evenly across each polygon. This is known as affine texture mapping, and it makes textures bend as a surface turns away from the camera.

In Godot, Calin adjusts the UV coordinates to cancel the modern GPU's perspective correction and bring that distortion back.

The addon creates the familiar vertex wobble by projecting each vertex onto the screen and snapping it to the nearest pixel. Those positions shift in visible steps as the camera moves.

That wobble is only part of the effect. Modern GPUs track depth for every pixel, but the PS1 had no depth buffer. Because it relied on draw order, one triangle could completely cover another. 

To get a similar result, the addon uses one flat depth value per triangle. This can make large surfaces appear in front of nearby objects. Subdividing large surfaces helps with both depth issues and texture distortion.

For lighting, the addon calculates directional and point lights at each vertex, then blends their colors across the triangle. The lights can still move, but the shading remains coarse.
The same effects appear in his game, STAR BREW: OVEREXTRACT, Calin's PSX-inspired puzzle game about making pour-over coffee.
You can read Calin's full hardware breakdown, try the addon, or just follow his work through the links below:

Learn more ⬇️
If you are interested in shaders and the math behind game visuals, the Shaders Bible Collection brings together six books covering shader programming, procedural shapes, and core math concepts in Unity and Godot. (45%OFF)
Jettelly wishes you success in your professional career! Did you find an error? No worries! Write to us at [email protected], and we'll fix it!

Subscribe to our newsletter to stay up to date with our latest offers

© 2026 Jettelly Inc. All rights reserved. Made with ❤️ in Toronto, Canada