Skip to Main Content
Construct 3 suggestions 21H2 - ARCHIVED

This suggestions platform is now closed and will be shut down on March 1st 2024.

Please ensure any content you care about is backed up before that date.

Feature requests are now handled on GitHub here: https://github.com/Scirra/Construct-feature-requests

25 VOTE
Categories Runtime
Created by Rory S
Created on Jul 13, 2021

Smooth Pixel Art Sampling Mode

This is a suggestion that has been made by various people in the past. Reposting it here as it is still very relevant. Creating clean looking pixel art, scaling it or zooming it is not at it's best visual quality without it.

It would be great as an alternative to Bicubic/Biquadratic filtering.
Nearest Neighbour: Great for pixel art games at fixed resolutions, with no zooming at non-integer levels.

Bicubic & Biquadratic: Great for vector/illustration in any application.

This sampling method: Great for pixel art games at any resolution, and when mixed with illustrations/vector eg. pixel art games with drawn/illustrated character portraits or UI.


GLSL Fragment Shader example:

https://www.reddit.com/r/gamedev/comments/9k7xdo/fragment_shader_gist_for_smooth_pixel_scaling/

https://medium.com/@michelotti.matthew/rendering-pixel-art-c07a85d2dc43


"I've used this method before on other WebGL projects, and it really helps the overall look on modern devices."

-https://construct3.ideas.aha.io/ideas/C3-I-1385


"Is there a reason this can't be done with the effect SDK?"
-Ashley

Yeah, but I can't explain it because I'm not that savvy about shaders. I just know I've discussed it with a few others who are.

"The effects SDK can't replace the scaling mode, and if it were to take an existing rendering mode (like bilinear or nearest) it would need to make weird hacks and approximations for it to look decent. Also, applying such an effect to a layer or layout means you come after everything has been rendered to a texture, so you're working with partial, already modified information, which will cause issues. So the only solution is to go for nearest, and apply the effect on every sprite individually afaik. Which is not reasonable"
-skymen

"I think Mikal(?) has done a biquadratic filter, which applies to objects within a Nearest neighbor sampling project. And iirc Astral Ascent is using it. But it has a lot of limitations"
-Me

  • Attach files
  • Overboy
    Reply
    |
    May 13, 2022

    We definitely need a way to solve this issue of mixing Pixel Perfect and Smoothness (for highrez UI in pixel games but also smooth scrolling and zooming for Pixel Layers)

    However, there is a much simpler way to do it rather than adding per-layer sampling mode or a brand new sampling mode, and that would also give more flexibility for us : A new "Scrolling" Pixelate Effect : https://construct3-21h2.ideas.aha.io/ideas/C321H2-I-317

  • +13