Building a PS1 style retro 3D renderer (2021)

Tomte1 pts0 comments

Building a PS1 style retro 3D renderer

Building a PS1 style retro 3D renderer | David Colson’s Blog

David Colson

Game Development | Physics

Building a PS1 style retro 3D renderer

Posted 30 Nov 2021 | Share:

I’ve started a new side project I’m pretty excited about. I’m making a fantasy console-based inspired by PS1 era technology. There is quite a lot to the project, but for now, I wanted to talk about the rendering, which was my first step in this project. In this article, I’ll detail all I’ve learned in researching the PS1 and other retro game consoles. And of course, how I’ve implemented it in the fantasy console, which will be called Polybox. Note that I’ve not gone into 2D sprite rendering because it’s somewhat simple and this article is long enough as it is.

Here’s the end result I’ve achieved in the Polybox console,

Polybox!

What is a fantasy console?

If you’re not familiar with fantasy consoles, they are fictitious virtual game consoles for making and playing retro-style games. The most famous example is Pico-8, a 2D 8 bit fantasy console that is an absolute joy to make games for. There are now quite a few 2D fantasy consoles, but 3D is a lot more complicated and potentially difficult. Nevertheless, I decided I wanted to see if a 3D fantasy console could work, and I’d base it on my favourite retro 3D console, the Playstation 1. The other big reason I wanted to go with a PS1 inspiration is that its rendering capabilities are quite basic, which would help to keep things as simple as possible.

So what makes a PS1 game look like a PS1 game?

The first step in this process was of course figuring out what gave PS1 games that distinctive look? I’m no expert in retro hardware, and I don’t feel knowledgeable enough to explain in this article exactly how the hardware of the PS1 worked, but I did do a lot of research into this area and I’ve provided links below that you might enjoy. Learning this stuff gave me somewhat of a clear idea of the major components that led to the look. Of course, there was copious amounts of looking at and playing PS1 games myself.

Syphon Filter, image from @PS1Aesthetics

Metal Gear Solid, image from @PS1Aesthetics

The major components I could identify were roughly:

Low poly models and low resolution textures

Polygon jittering

Lack of depth buffer

Warped textures

Popping, and jittering texture mapping

Per vertex lighting

Depth cueing fog

The hardware limitations also led to certain artistic decisions and techniques which contributed to the PS1 look, but they are not directly related to the hardware so I won't go into as much detail about them here, but I'll mention them when they come up.

Let’s go into a bit more depth into each of these and how they contribute to the look

Low poly models and low resolution textures

The most obvious and clear aspect of the PS1 look is the general low fidelity of everything. This appeared to be due to the geometry transformation engine (GTE) simply not being able to process that many polygons per frame. This Wikipedia article states that the GTE could only process 90,000 polygons per second with texture mapping, lighting and smooth shading. I suspect in practice this limit was not a fixed number but rather highly dependant on your game and what features of the GTE you were using. The point is it’s not that much, compared to say modern GPUs which can render literally millions of polygons per frame let alone per second.

The model for Rinoa Heartilly (Final Fantasy 8)

Crash Bandicoot

I won't go into animation here since it was largely up to the developer, but I will mention that a lot of games used fixed vertex skinning rather than weight blending as a performance optimization, which contributed a lot to the character animation look in a lot of PS1 games.

The other obvious limit is texturing. Texture pages on the PS1 hardware had a limit of 256 by 256 pixels and so it seems this was generally the largest texture size most models used. These days games often use multiple 4k (4096x4096) textures per model, especially for hero props or primary characters so this is somewhat limiting.

Texturing is where a lot of PS1 art styles come from. The lack of complex lighting and shadowing meant that artists usually painted lighting into the textures and made heavy use of the texture to convey detail in the model that was otherwise a relatively low polygon count

Rinoa Heartilly (Final Fantasy 8) and her tiny 128x128 texture

A YouTuber named LittleNorwegians has an excellent tutorial showing how PS1 textures are often made in games like Metal Gear Solid and Silent Hill. There is a common thought that PS1 models must have textures made from spliced and edited real photographs, and while real photographs were used in PS1 textures, in all the research I did, textures were combinations of images, hand painting and various effects as is shown here.

A small note about environment art

If you attempt to make some PS1 style art you might find...

fantasy textures retro games console look

Related Articles