High Performance Pixelation Shader

The “Ps1” look on Roblox has been popular recently and a lot of people I know, are having trouble with making the game fulfill the look.
My friends and I have been searching for a solution to this issue for the past year. We believe a ‘Pixelation Effect’ would benefit the style the most.

But we’ve run into an issue. There is no performance worthy pixelation effect and hasn’t looked blurry. We’ve tried scripting it ourselves, we have also tried using open-source scripts. Nothing seems to work, and we are at a standstill at this moment of time.
We tried also using Ethanthegrand’s pixelation shader, but it does not provide good performance.

Here’s an example of what we wish could have access to:


We have not discovered a solution that could give us something we are looking for. We believe that it’s something that happens through a GUI.
We are mostly looking for a solution that revolves something performance related.

7 Likes

Can you send a link to the resource? I’ve never heard of it so I’ll take a look inside of it to see if I can optimize it.

2 Likes

CanvasDraw - A powerful pixel-based graphics engine (Draw pixels, lines, triangles, read PNG image data, and much more!) This is EthanTheGrands version. Provides very low performance and the canvas it provides is too small.

2 Likes

It’s currently basically impossible to get any performant custom pixel shader at high resolution (if you want something that’s 60 FPS). And if you’re saying that 256x256 is too small of a resolution for you and you want something higher, then that’s definitely not gonna work.

Hopefully once DynamicImage releases it will be farrr faster for rendering, but as for the per pixel calculations or rasterisation, that has to be done on the CPU, so it’s gonna be somewhat slow anyways.

What we really need is a pixelated post-processing effect

4 Likes

This resource is actually very diverse! How did I not hear about it before!

I can only recommend you lower the number of colors. In the original post of the resource, it specifically states this. Might improve performance?

You might also want a lower FPS (like 30) for your use case.

1 Like

CanvasDraw is the fastest non-blurry roblox canvas and graphics api as far as game engine usage goes. I have spent a year and a half developing it, and people are already doing some insane things with it.

@AsyncHero made a 3D engine with it and you could treat it as a pixelation effect.

2 Likes

It really does make the game look like it’s from the PS1. But I’m sure it is aimed towards a variety of uses.

Don’t know if it’s possible or not, but there’s no mention of multithreaded processing inside of the module. Maybe multiple lowered resolution canvases could be created on different threads, and they can communicate to the main thread to update pixels.

Not sure if it would be performant or not. It appears that you have mentioned it in the topic a while back, but that was back in January.

1 Like

I haven’t bothered with implementing parallel lua to CanvasDraw, because from my testing on many different projects, i cant seem to get any kind of FPS boost. I think the code itself is pretty performant, which means the bottleneck is most likely the amount of instances being updated.

Either that, or i am missing something each time i try to implement it.

1 Like

What I would recommend for your system (if not already) is some sort of a minimum limit to update the instances. For example, if the color on a pixel is 70, 83, 94 and you want to change it to 66, 86, 90, you don’t have to because it’s not a very big change of color, so the user won’t notice it very much. This is what the bitrate in mpegs do (I think).

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.