"Pixelated" ResampleMode for SurfaceAppearances (Pixel Art Meshes)

As a Roblox developer, it’s currently impossible to create true pixel art or low-fidelity 3D models that look correct. Textures on models are always blurred by forced bilinear filtering, meaning there’s no way to make them render pixel-perfect like UI images can.

While SurfaceGuis can technically achieve a similar look, they are memory-heavy, inefficient, and don’t work on Meshes, making them practically useless for teams looking to achieve this look with tile-based tools such as SpryTile or CrocoTile 3D.

The only current workaround is to upscale tiny textures (like 16×16) to extremely large resolutions (such as 1024×1024). This approach:

  1. Consumes unnecessary memory
  2. Increases load times
  3. Still looks blurry when viewed up close
  4. Introduces texture bleeding and visible seams due to filtering artifacts

Practical examples

The following are real, practical examples I have encountered while developing a game with this artstyle:

Blurry edges

Even at maximum texture resolution (1024×1024), edges appear smeared and lose their sharp pixel definition.



Texture bleeding

Pixels near UV edges blend into each other, producing visible seams. Developers must manually add 2–3px padding per tile to hide these artifacts, further inflating texture size and wasting memory.



Why SurfaceAppeareance would work

Roblox Staff have previously mentioned that adding ResampleMode to legacy Textures and Decals isn’t possible due to backwards compatibility with older systems (“legacy avatars”).
However, that limitation does not apply to SurfaceAppearance, which:

  • Is a modern rendering system with no legacy dependencies
  • Already supports PBR materials and layered maps
  • Is not used by Legacy avatar types (PBR hats are not supported on R6)

Considering it is the most versatile Texture Instance in the entire engine, it would be an ideal place to introduce a property like:


SurfaceAppearance.ResampleMode = Enum.ResampleMode.{Default, Pixelated}

Conclusion

Nearest Neighbour filtering Textures (NOT SurfaceGuis) has been one of the most consistently requested features on this Forum, and the approach proposed on this Feature Request could bring some of that desired functionality into the engine, today.

These filtering limitations have forced our team to maintain a two-page internal document filled with workarounds, warnings, and specific export instructions just to avoid visual artifacts.

Every other major engine supports nearest-neighbor texture sampling natively, without any of these complications. It’s frustrating that we need to spend so much time fighting the engine instead of creating content, and the only reason we continue doing so is because we genuinely love this platform and want to see it improve.

40 Likes

19 Likes

finally, also you should take a moment to look at this,

so many people have been wanting this for their projects (me included), and nobody ever got the attention of a staff member on something like this

3 Likes

This is like a dream come true, thank you!

Is there an ETA for when this’ll be in-engine? We’d love to know if we should halt all asset creation while this is being added, or if we should continue with the current methods for a short while.

1 Like

Thanks for the orientative timeframe you’ve provided me, helps out a ton!

Looks like we’re going to keep using the current methods at least until it is in Studio Beta, and start updating the UVs of the old models with refreshed “true pixel” ones once the feature is available.

Again, this is just like a dream come true specifically for the needs of my project. Huge kudos to the team working on this, hope to hear more about it soon! :))

1 Like

Idk what happened cuz the Roblox Staff deleted all their post but this is a really good idea tbh, alot of the time when making models I have an idea to make a low poly game but pixelated textures get messed up each time. I could do pixel by pixel but it would be alot more memory.
Also this could be HUGE for ugcs! I would love to have this for Meshes and UGCs.

2 Likes

did the staff member accidentally say stuff that was either not actually planned or was a secret? or else why did delete all their replies

7 Likes

I have confirmation that the feature is still planned, we just don’t know when the feature will be worked on and released.

This is still a win in my book, if I’m honest.

7 Likes

YAY!!! That’s very awesome! Very lovely!

1 Like

Please add this feature it would be fairly easy would it not?

Ok cool but is it only for SurfaceAppearences or all image-type instances? If it’s the former then i do not care because i have never once used SurfaceAppearences.

Only for SuraceAppeareance instances. Staff have confirmed other image-type instances cannot have this feature due to “legacy avatar use cases” (likely R6 and its legacy roots).

1 Like

Alright, then i couldn’t care less…

“legacy avatar use cases” (likely R6 and its legacy roots).

This is pure BS btw.

1 Like

it will most likely release in 1 billion years, good thing is that now i have a reason to keep living

1 Like

Might be, might not be. I don’t know how they implemented R6 back in 2006 in such a way that it cannot be tweaked to allow Nearest Neighbour textures.

What we know for sure is that they sure as hell have made it clear they don’t want to support/add new features to R6 unless forced to.

Perhaps once R6 is discontinued we could look forward to Nearest Neighbour decals being a reality.

1 Like

The thing is nobody asked this feature for R6 avatars or whatever, we want it for Decals, Materials, Textures, etc. bro :wilted_flower:

1 Like

SurfaceAppearance uses a more advanced graphics pipeline (that’s why it was introduced). It is not using the same technology behind decals or textures, which use a simpler, cheaper method with the downside of being a “one-size-fits-all” solution (notably not requiring pre-processing). Somewhere in those differences is your answer as to why we won’t get this for decals, materials and textures

2 Likes

And? It’s not something that requires lots of effort to add. This is a basic and crucial feature that all game engines except Studio have, damn it.

textures, decals, and basically all the surface appearance alternatives were introduced to roblox almost 2 decades ago. Most devs werent born, this engine was barely put together, the entire platform had less than 30k ccu, most other engines had either recently introduced resampling options or wouldnt until mid 2010s. I can see how it’d be difficult for older implementations to handle new technology, so just consider this a wake up call to use surf apps and move on

Your right because theyre adding PBR to decals/textures so why not texture filtering options

1 Like