ResampleMode for Materials and Textures

As a Roblox developer, it is currently cumbersome to make pixel art and low-fidelity style games. Recently, ImageObjects such as ImageLabels and ImageButtons recieved the new property to set their resample mode to pixelated. Right now, the only way to have a similar effect on textures and materials is to upscale the pixel art up to 1024x1024 to get sharp edges. However, these are still not sharp when you zoom in on them, and they also take up much more memory.

For example, minecraft blocks use 16x16 textures. To get a similar effect in Roblox with as close as possible results, you would have to make them 1024x1024, using up to 4096x more data (not taking into account compression). This adds up very fast for pixel art games, reducing the performance and increasing load times.

If Roblox is able to address this issue, it would improve our development experience for pixel art and low fidelity games, as well as increase their performance on all platforms, reduce load times, and reduce data footprint and networking strain on Roblox.

119 Likes

If image labels and image buttons have it, I don’t understand why decals/textures don’t have such an option. This would really help with pixelarts and other low-resolution stuff as you mentioned.
Having resampling in general would be really helpful for games relying on pixel arts (we could also have 2x2 checker textures or other extremely small repetitive patterns that dont require much resolution to replicate)

10 Likes

Huge support. Memory is a huge limitation for Roblox in general. This has been a highly requested feature for years.

People are currently using work arounds that significantly impact memory, like adding hundreds of extra faces and using unnecessarily large textures like preacher_online mentioned.

Screenshot 2023-04-10 at 3.38.03 PM
What a waste!

Different texture sampling modes would allow for games that are very memory efficient, new game aesthetics, and easier modeling (using softwares like block bench).

11 Likes

List of all the classes I could think of that need the ResampleMode property:

  • Decal
  • Texture
  • MaterialVariant
  • Shirt*, Pants*, ShirtGraphic*
  • SurfaceAppearance
  • MeshPart
  • SpecialMesh*
  • CharacterMesh
  • Tool, HopperBin, and Flag (for the icon in your inventory)
  • VideoFrame
  • TextLabel and TextButton (if we get the option to set custom resolutions for them)
  • ParticleEmitter
  • Beam
  • Trail

*For avatar items, ResampleMode would either be set when uploading or in the avatar editor. Custom UV mapping for shirts and pants would be nice too.

(edited because I mistook MeshParts for SpecialMesh)

16 Likes

Considering there are so many instances in need of this, I wonder if it would be a good idea to add a dedicated image instance which consolidates all the image related properties into one (ResampleMode, ImageColor, ImageAssetId etc), that could then be used by other instances as a replacement for an image id.

2 Likes

HopperBin and Flag instances are both deprecated and have been for a while, they won’t get any updates.

5 Likes

we also need an option to disable image compression on all the classes i listed, especially since images are sometimes compressed for no reason.

(left = imagelabel, right = decal)


here are 2 images i made. one is 16x16 and the other is 64x64, and they both use very few colors. theres no need to compress them at all, yet i have to use imagelabels (which dont wrap onto shapes) to fix the very bad compression.

6 Likes

Bump.


I can’t stand how Roblox keeps withholding these essential features for no apparent reason. Why do I need a 1024p texture just to somewhat resemble a 128p texture? It’s stupid. Because the geniuses at Roblox didn’t implement something like this earlier in development, we now have a situation where there are numerous instances supporting images such as decals, textures, tools, mesh parts, particle emitters, etc. I doubt there’s a universally good solution for all of these.

And given Roblox’s current approach of ignoring developers and focusing on investors, I doubt we’ll ever see something like this in a timely manner. :sad:

6 Likes

I wasn’t even aware that Roblox compresses images, damn.

They likely do this to reduce the amount of storage on their servers but if the image already is small then that seems pretty unnecessary.

3 Likes

i dont think it would reduce storage on their servers since imagelabels arent compressed which means their servers save the exact un-compressed image. idk why the client gets a compressed version of the image, since the textures are (i think) immediately deleted after leaving the game, so lowering the size of the image can’t be that beneficial, especially since the compression doesn’t look like it reduces file size that much

2 Likes

Ohhh now you got me thinking.
Roblox may not be actually compresses the images that are uploaded but the images that are loaded in game.

So quick explanation, graphics cards have very small and limited amounts of memory and storing uncompressed data in their memory consumes lots of space.

So what a lotta game engines do is they use something whiiiiich I think is called… DXT compression?
(Because algorithms like PNG and JPEG compression are WAYYYYYYY too slow and can’t run on the GPU due to how GPUs are designed.)

It’s basically a way of compressing images that breaks them up into little chunks/blocks that are each individually compressed on the graphics card and the algorithm that is typically used is VERY fast and relatively efficient but comes at the cost of slightly lower image quality.

This makes it so games use less graphics memory and can load more complex textures and models.

image001

I think here you can see how different texture compression methods affect details in different ways.

3 Likes

When will we get any news regarding this extremely needed feature??? I don’t want to have to do crazy workarounds to achieve something simple as that. If imagelabels can have ResampleMode then so should textures. Can we get any info on the status regarding this?

4 Likes

we need this

its a pain to manually upscale images to 1024x1024

2 Likes

it’s also use a lot of memory for nothing…

2 Likes

This would be really useful right now! I’ve exported the palette from MagicaVoxel to use as a texture, it looks great in blender:

image

However when in Studio, the texture ends up looking like this, because (I’m assuming) all the dark greens must merge into one sloppy colour by default, due to the small size.

image

I believe this is also due to the resampling, on an ImageLabel, default looks like this:
image
Whereas pixelated makes it so much clearer:
image

And I just can’t see why this wouldn’t be an option for textures, decals, and other objects that utilise images in Roblox, not just GUI.

5 Likes

as a platform that caters to performance, this feature should be on some engineers bulletin board.

we need this. this is almost a basic feature.

5 Likes

At that rate give it to materials too, it’d be an awesome new look and personally, I’ve never done it because A) It’s impossible to do without jumping through hoops at the moment. (and) B) My games (at least the one I’m working on now) is resource heavy as is, much less does it need more memory used up by oversized parts that clog up the physics engine calculations.

3 Likes

is this still being added or what? how long will it take roblox to add this?

3 Likes

i still can’t believe roblox seems to completely ignore the idea of this specific feature that couldn’t possibly have any drawbacks

i’ve been praying for this feature for 6+ years, i’ve always had to resort to surfaceguis and 1024x1024 images if i need them to wrap around parts, or for materials, when i want pixelated textures in my games

and i often do, because i love experimenting with what kinds of art styles and graphics can be achieved in roblox, despite all of the limitations placed over us

if this one simple feature can be added, the quality and possibilities in retro-styled roblox games would be increased drastically, so would the performance of said games because NEAREST NEIGHBOUR FILTERING IS LITERALLY FASTER! plus the fact that it would take up EXTREME amounts of memory usage which preacher_online mentioned, when we’re FORCED to upscale all of our necessary textures to 1024x1024, to BARELY mimic what effect we’re actually trying to achieve!

there is absolutely no reason for why this simple feature shouldn’t be added, no argument. if imagelabels support it, how come decals, textures, surfaceappearances, and custom materials don’t?

i don’t understand why roblox ignores the most unnecessary issues that are the simplest to fix, this has been an issue for forever, and yet we’ve seen no effort from roblox and it’s moderators to even TALK about it

the closest we’ve got to this has been the resamplemode, property and when was that released? back in august of 2021

thanks roblox

7 Likes

Upscaling textures to 1024x1024 is time-consuming and memory-intensive. I hope Roblox implements this feature, as it would be very beneficial for independent games.

4 Likes