Mesh Texture Pixel Art

I really want to be able to make pixel art in Roblox, especially on meshes. However currently, this is practically impossible because of how Roblox’s compression works. As I am sure you are currently aware this is how Roblox developers tend to avoid compression on mesh textures.

image
Geometrically disconnect it

However, because of this, developers are limited to painting an entire piece of geometry one color every single time. This causes three issues

  1. It requires meshes to have more geometry to have a greater amount of art detail

  2. It forces one style of mesh art on the entirety of Roblox

  3. it requires protrusions where an artist might not want one at all.

However, this would not be the case if there were exceptions to the rule of compression. Such as a texture file size being small enough. This introduces a new type of art style that has been adored for decades. Pixel art! Allow me to give you an example:


Wow Cute!!!~~~

I think such art pieces are simple, pretty, effective, and small. This is a 64x64 texture (since its on a cube but from the angle I took a picture it looks like a flat plane). Although no Mona Lisa, I think it’s pretty fun to look at, and easy to make as well. However, once I move the mesh to Roblox and set the .png as a texture, a catastrophe occurs.


Tragedy !

Oh, I can only so woefully look at it. Such a cute heart has become nothing more than a smudge on my screen, even worse so that I cannot wipe it off. Hence I am moved to do no more than accept my reality. Such a situation however makes me evaluate why such a scenario is my reality at all. I feel there are 5 benefits to the removal of compression for smaller textures, and two good questions to be asked as to why there is compression at all for smaller textures. First allow me to start with the benefits.

  1. Adds a new art style to Roblox that has been around and adored for decades.

  2. Pixel art is much more approachable than other art styles. Friendly for beginners.

  3. There are easier to use 3D modeling software other than Blender that utilizes pixel art for textures by design. Friendly for beginners. (Such as BlockBench)

  4. Lower polygon models can be used and still look o so pretty. This benefits experiences by lowering memory usage and being less GPU intensive.

  5. Smaller textures can be used in general and still look o so pretty. This benefits experiences by lowering memory usage.

However as much as this might benefit creators I still have to ask the question why does the compression exist for smaller textures in the first place when:

  1. Roblox already allows 1024x1024 textures. Would the difference between say, of an uncompressed 128x128 be more than that of a compressed 1024x1024. If it is not, why compress it?

  2. Users who want to use pixel art will already try to workaround the compression by making the resolution unnecessarily larger. Why not just allow the uncompressed smaller size? Does it really decrease the memory that much?

If you could share the reason you’ve imposed these technical limitations in the first place, it would be really helpful in making me understand why this feature doesn’t exist, which I would appreciate.

61 Likes

Doesn’t Roblox mainly use the CPU to render?

2 Likes

Roblox “only using the CPU to render” is a giant myth that’s probably spread around due to people not knowing how computer hardware works. Roblox has always used the GPU for rendering, even back in the 2000’s software rendering would’ve been absolutely absurd.

I’m not gonna respond because you clearly do not understand how any of this works, and is off-topic anyways.

16 Likes

That doesn’t seem to be the case for me. I’ve never gotten any fps over 60 at all. I’ve used an fps unlocked and I’ve only gotten 70 fps max. I should be getting atleast 120 fps on the biggest with the GPU I have.

GPU isn’t the only factor when it comes to system performance - RAM, CPU, optimization and total system temps are also a major factor in how well your system performs, don’t expect great performance if you’re gonna pair a 4090 with a Pentium 2.

@OP:
I’m pretty sure this isn’t compression but rather how the texture is displayed; iirc most textures are displayed with bilinear filtering, ImageLabels can display textures with nearest neighbor instead if the ResampleMode property is set to Pixelated (but this obviously only works for flat surfaces and guis).
I think you should instead focus on suggesting that the property get added to the rest of the image instances (aka; Texture and Decal) or supporting an existing thread for it.

8 Likes

I know that, but it still doesn’t seem to be the case for me. I can run most RTX games at upwards of 30 fps. I feel I should have way more fps in Roblox.

that is on Roblox, they limit the fps to 60.
no matter your gpu or cpu your fps will aways be 60.

4 Likes

i would love to know why the hell whe cant use pixel art textures on mesh since they released pixel art for UI/UX.

i’ve been wanting to make a game with the goal being low poly models and pixel art textures.
busteranim

10 Likes

A Roblox engineer addressed this question in the past iirc, the rendering pipeline between UI elements (such as ImageLabels, etc.) and mesh textures, decals, etc are simply too different for the same code to work on both of them.

4 Likes

Bumping this thread. This is an absolutely essential feature for a game engine that is missing from Roblox. I have to jump through hoops to get this art style working in Roblox.

I’ve seen many posts/comments calling this compression, but this is not the case. This is a filter being applied to the texture, and there needs to be a way to disable said filter.

Below is an example of the issue at play.


As you can see the texture is an absolute mess, and is bleeding horribly. A “solution” would be to upscale the texture to an unreasonable size, such as 1024x1024.

This is significantly less performant and increases load times. The textures are still bleeding as well.

There is already a way to disable this filter for UI instances such as image labels. Here is an example from my 2D Roblox game.

Implementing this property to objects such as SurfaceAppearances would open the door to a whole new art style on Roblox, and would would reduce the unhealthy behavior of upscaling textures as a band-aid fix.

23 Likes

Why would you use a CPU to render? Obviously the GPU is being used if you have the time to right click your taskbar.

image

4 Likes

It’s been 2 months, so I’m gonna try bumping this thread again.

The addition of a toggle to disable bilinear filtering on textures in the 3D worldspace is an essential feature for a game engine, and is absent from Roblox. The following is an example of a roadblock I’m running into right now. Having to resort to SurfaceGuis on every surface is completely tanking my project’s performance.


A large scale project of this art style in the current state of studio is almost completely impossible at this point. I’m desperately bumping this thread in hope of change.

18 Likes

I can agree with maple on this fact, and what he’s doing is manually changing the texture size to such absurb resolutions which allows for pixelated textures, but this manual fix is very taxing on roblox, so having an option to turn off this bilinear filtering would allow him to make these changes with a button instead of manually by hand which takes more time and computer resources.

1 Like

Gonna bump this again. Currently making a 3d pixel art retro shooter game and I just found out about this issue, I’ve made a lot of progress on my game, and I’m considering just scrapping it all because resampling mode still does not exist for mesh parts, textures, or surface appearances, etc… (Me and my 3d artist were shocked when we learned about this).

^ The only other method to avoid this that is currently present is:

image

Yay! No texture bleeding… but at what cost you may ask?

image

:exploding_head:

11 Likes

Bumping this once more. A feature like this would make it significantly easier to make pixel art style games on roblox. Like many visual effects right now, it just boils down to doing a hacky workaround to trick the engine into doing what you want (usually with a hefty performance sacrifice). Also, it would mean I wouldn’t have to upscale my textures to the maximum resolution to get them to not render blurry such that they take up roblox’s resources and lead to a good amount of memory bloat and longer load times.

4 Likes

Another Bump. We really need this roblox. Not only for GUIs, but any Instance that uses an ImageID or DecalID. Having to use workarounds that tank performance greatly isnt a good thing, and not all developers want to make realistic experiences. Sometimes simplicity is best, especially for small studios or solo developers.

4 Likes

Adding on another bump.

The fact that this feature hasn’t been implemented on all the other Instances that support images is mind-boggling. One simple feature can optimize so many games as loading big images that simulate pixels really take a toll on memory. SurfaceGuis are very inefficient and clip into eachother.

3 Likes

This has already been a feature request since like 2017 I believe if it isn’t earlier.

Roblox by default uses Linear texture filtering if I’m not mistaken which basically views all pixels as infinitely small points and draws smooth color gradients between each point.

The downside to this is that low-res images look HORRIBLY blurry and you may start noticing a very obvious “star” or “diamond” pattern.

We desperately need more texture filter options, most notably Nearest neighbor or Closest.
This basically displays textures with “no interpolation” so you get those sharp and crisp, square-shaped pixels.

Roblox, kindly, with all love, please make this a thing already.

15 Likes

Bumping this again. Desperately in need of these changes, this is the biggest limitation to me as a developer on this platform currently.

4 Likes

Just as a temporary fix for all you people out there who want pixelated textures.

In MOST cases, uploading a say… 128 x 128 pixel texture upscaled to 256 x 256 in PaintDotNet gives decent results.
You get some pixel bleeding but it is only visible from up close in most cases.

8 Likes