Skip to content

attic-stuff/twodee-threedee-pixel-art-aa-filter

Repository files navigation

cool anti aliasing for lowrez sprites in a highrez world

about a year or more ago this youtuber named t3ssel8r uploaded a video describing a new and cool method for antialiasing what is essentially low resolution billboards on high resolution render targets, in 3d. this is really nice if you make the kinds of things that i like to make: twodee threedee.

click the image below to see an example of the filter in use, make sure you watch at fullscreen and in hd. the left side is with the filter, the right side is without it.

YouTube

how to use it

download the yymps and drag it to your project. the rest is pretty easy: you need to disable automatic app surface drawing and then apply the filter to your app surface when its time to render the frame:

so, for example your create event might look like this:

frame_width = 1920;
frame_height = 1080;

surface_resize(application_surface, frame_width, frame_height);
application_surface_draw_enable(false);

frame_size_uniform = shader_get_uniform(twodee_threedee_pixel_art_aa_filter, "frame_size");

and then your post draw event would look like this:

shader_set(twodee_threedee_pixel_art_aa_filter) {
    shader_set_uniform_f(frame_size_uniform, frame_width, frame_height);
    gpu_set_tex_filter(true);

    draw_surface(application_surface, 0, 0);

    gpu_set_tex_filter(false);
    shader_reset();
}

and that's really it. its a very small shader, doesn't blow out your render pipeline. the only requirement is that you need a higher resolution app surface for this to make sense, and you have to use the hardware texture filter to take advantage of what makes this method so cool.

have fun, babies!

license

you are free to use this shader in your gamemaker games or port it to whatever weird game engine you prefer but you must link to the original video from t3ssel8r

About

a gamemaker implementation of t3ssel8r's filter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages