Trying to import this into my existing project. Copied the folder 'Shaders', but then I am confused with " 2. Add the precision_multiplier as a float shader global in Project Settings, ensuring it's value is minimum 0 (non-inclusive), and maximum 1 (inclusive).". What do you mean by this?
Edit: I got it to work, my dumb ah just had to look at the demo project for reference :)
These are just shaders to emulate PS1 rendering quirks, actually running Godot on PS1 hardware would be a very different project (and probably impossible).
First of all, thank you so much for the work!! The shader is amazing :)
I have a question though, I've noticed shadows are not being cast into meshes with this shader while the meshes do in fact cast shadows. Is there any way I could make the shadows visible?
I'm quite the beginner to shaders so it's probably way simpler or way more complex than im imagining, regardless, im probably missing something. In any case, thanks again for the amazing work!
UPDATE: After looking a bit into the documentation it was quite simple, I only needed to delete the shadows_disabled flag from the render mode on the psx_base shader, but be warned, this kinda breaks the lighting since the meshes are constantly shifting
This is great, thanks! Do you know how to disable/reduce the warping effect (affine texture mapping?) that happens on textures though as you get close? I'm pretty new to this so I'm sure there's a simple solution that I just don't understand yet!
It's been a year (pretty much precisely) since I took a look at this. I see you've moved the color depth and dithering into postprocessing. It's now far more accurate as a result, but now we have lost the ability to dither only certain materials in our scene.
I'm guessing there was no way to get an accurate reduction in color depth without using postprocessing?
IIRC it was accurate dithering that led to moving it to a post process effect rather than object-level (had issues dithering between colours, and didn’t play nicely with transparency).
Wasn’t overly happy with cutting per-object dithering, but it was a relatively obscure hardware feature to begin with (so far you’re the first person to bring it up). Hopefully we’ll be able to get it back in 4.0 by rendering to a buffer to mask dithering, AFAIK that should do the job.
I'm slightly confused about the license. If I use this in my game, or some of it in my game, does that mean I have to make my game open source or make the code public?
Not at all! MIT license just requires that you place a copy of this license in a visible place somewhere (as in, “I used X code, here is the license”). Godot engine itself is also MIT license, so this is a requirement you have to fulfill when releasing a Godot engine game regardless.
← Return to demo
Comments
Log in with itch.io to leave a comment.
Trying to import this into my existing project. Copied the folder 'Shaders', but then I am confused with " 2. Add the
precision_multiplier
as afloat
shader global in Project Settings, ensuring it's value is minimum 0 (non-inclusive), and maximum 1 (inclusive).". What do you mean by this?Edit: I got it to work, my dumb ah just had to look at the demo project for reference :)
God, this looks incredible! Have you managed to get this to work on an actual PS1? Or know someone who has?
These are just shaders to emulate PS1 rendering quirks, actually running Godot on PS1 hardware would be a very different project (and probably impossible).
Ah... shame. There goes that idea.
First of all, thank you so much for the work!! The shader is amazing :)
I have a question though, I've noticed shadows are not being cast into meshes with this shader while the meshes do in fact cast shadows. Is there any way I could make the shadows visible?
I'm quite the beginner to shaders so it's probably way simpler or way more complex than im imagining, regardless, im probably missing something. In any case, thanks again for the amazing work!
UPDATE: After looking a bit into the documentation it was quite simple, I only needed to delete the shadows_disabled flag from the render mode on the psx_base shader, but be warned, this kinda breaks the lighting since the meshes are constantly shifting
Yeah, these shaders are not designed to play nice with lighting. For best results, keep lighting as static as humanly possible.
This is great, thanks! Do you know how to disable/reduce the warping effect (affine texture mapping?) that happens on textures though as you get close? I'm pretty new to this so I'm sure there's a simple solution that I just don't understand yet!
This is normal, try adding more edge loops to your mesh - polycounts were often a little higher than you’d expect to accommodate this.
If you want to disable it completely, comment out this line: https://github.com/MenacingMecha/godot-psx-style-demo/blob/91bd24988f70636efca505e2c8022b143b61780e/shaders/psx_base.gdshaderinc#L55
Thank you! That's very helpful and much appreciated
Terrific! This is a trully PSX-like looking demo!
This looks amazing! Any advice for getting started using this in a project?
Thanks!
For an existing project, copy-pasting the shaders and setting up the materials yourself using the demo as a reference.
For a completely new project, copy-paste the project itself and start making changes from there.
Don’t forget to include the license info in whatever it is you make.
how do you use this in a project? i can't figure out how to import it into godot
for 4.0: https://github.com/MenacingMecha/godot-psx-style-demo?tab=readme-ov-file#existing-projects
ballin!!
Nice!
This is immensely helpful. Thank you.
It's been a year (pretty much precisely) since I took a look at this. I see you've moved the color depth and dithering into postprocessing. It's now far more accurate as a result, but now we have lost the ability to dither only certain materials in our scene.
I'm guessing there was no way to get an accurate reduction in color depth without using postprocessing?
IIRC it was accurate dithering that led to moving it to a post process effect rather than object-level (had issues dithering between colours, and didn’t play nicely with transparency).
Wasn’t overly happy with cutting per-object dithering, but it was a relatively obscure hardware feature to begin with (so far you’re the first person to bring it up). Hopefully we’ll be able to get it back in 4.0 by rendering to a buffer to mask dithering, AFAIK that should do the job.
By any chance, do you still have the old version of the shader in one piece anywhere?
It’s all on the GitHub, check the older commits
Any chance you could make this open source?
It is! It’s available on GitHub under MIT License
https://github.com/MenacingMecha/godot-psx-style-demo
I'm slightly confused about the license. If I use this in my game, or some of it in my game, does that mean I have to make my game open source or make the code public?
Not at all! MIT license just requires that you place a copy of this license in a visible place somewhere (as in, “I used X code, here is the license”). Godot engine itself is also MIT license, so this is a requirement you have to fulfill when releasing a Godot engine game regardless.
Credits are a good place to dump this - self plug but I did this in one of my games if you want to see an example.
Thanks so much!
Excellent stuff, but there is a problem with the lit alpha scissor shader; fog color is applied over the alpha areas.
The lit transparent version doesn't have this problem, so presumably, it is a case of oversight with a simple fix?
[EDIT] I have fixed it by taking the code from the working transparent shader and adding
uniform float alpha_scissor : hint_range(0, 1) = 0.1;
to the declarations, and
ALPHA_SCISSOR = alpha_scissor;
to the final fragment.
I also pasted the billboard stuff in there too, although I'm fairly clueless about shaders and just bumbled through this.
Fixed https://github.com/MenacingMecha/godot-psx-style-demo/commit/2d6bbeda81533de7b73c1db3c578a11677aa81b3
Thanks for pointing this out!