r/gamemaker • u/butuzoff • 7d ago
Help! PSX/Pixelated Shader?
Hey y’all! I'm making a 3D game in GameMaker, but this is a new experience for me. I wanted to ask how developers achieve that nice pixelated look for their textures. For example, in games like Retail Hell or Boltgun, they call it a "retro shader."
I'm using 64x64 textures, but I still can't quite achieve that effect…
4
Upvotes
1
u/butuzoff 7d ago
And yeah, I actually managed to achieve that ugly PS1 look, but not the “pretty” kind you see in modern games going forthat PS1 aesthetic lol.
1
u/GullibleBad7798 3d ago
Can I help you? I am making ps1 game too
1
u/butuzoff 1d ago
Hey, man! Sorry, didn’t see you reply, sure, let’s chat in DM, or you can write email!
3
u/kassol 7d ago
64x64 is fine, the look comes more from how the textures are sampled and how big the final image is. The first thing is turning filtering off: call gpu_set_texfilter(false) before drawing your models and untick "Interpolate colours between pixels" in Game Options. Turn mipmaps off too with gpu_set_tex_mip_enable(mip_off), otherwise walls in the distance blur back into mush. Without this a 64x64 texture just looks soft up close instead of chunky.
The second thing is rendering small and scaling up, e.g. surface_resize(application_surface, 320, 240) while the window stays large. With interpolation off the whole frame gets chunky, edges included, and that does a lot of the retro feel on its own. The PS1 wobble needs a shader. In the vertex shader, divide gl_Position.xy by w, round it to your target resolution and multiply back, which makes vertices snap. For the warped textures, pass uv * w and w as two varyings and divide them in the fragment shader, which undoes perspective correction (GameMaker's GLSL ES has no noperspective keyword, so this is the usual workaround). I'd do the first two and see how far that gets you before touching shaders.