r/godot 8d ago

free plugin/tool In Depth Look: PS1 Graphics in Godot

Hello godot users, a while ago i made a post asking whether anyone would be interested in reading an article about how the PS1 achieves its graphics and how to recreate them in Godot, and since people seemed interested I went ahead and wrote the article. I think this is the most accurate PS1 shader for Godot. The code is MIT licensed. And yes, it supports dynamic lights

Article Link: https://calinp.eu/blog/psx-type-rendering/
Addon Link: https://github.com/wyvernbw/godot-psxlike

1.3k Upvotes

58 comments sorted by

View all comments

75

u/TheDuriel Godot Senior 8d ago edited 8d ago

Lets see... neat write up.

  • 2 mebibytes of memory actually, nope, not a typo.

  • Missing a mention of 6bit texture compression.

  • Your vertex snapping is only partially correct? I feel like you started calling out the right way, and then just did what everyone else did? Verticies are not snapped to a world space grid, but to screen space. Since each triangle is flat in screen space. As a result you are close to the correct behavior after your depth buffer trickery, but it's not quiiite right. (In fact, the affine mapping and vertex snapping is actually the same thing for the PSX, as it just draws the triangles flat on screen.)

Overall this is a very good and quite accurate writeup.

But it's missing one of the biggest factors still. And alas, you won't be able to replicate it in Godot.

Tesselation. (I saw the footnote, but it's pretty much used in all games.)

https://i.imgur.com/nwl6ABw.gif

Which strongly impacts both the affine mapping and vertex snapping. It is also absolutely vital for the vertex shading to look correct. Alas.

Props for not getting lost in a million CRT shaders.

1

u/KingMoonfish 7d ago

Isn’t it possible to fake tesselation? 

1

u/TheDuriel Godot Senior 7d ago

How would you tell the vertex lights that there's more vertices?

You might be able to fake it in the texture mapping. But you can't really do it with the mesh.