Image resize interpolation option!

We need the option to choose interpolation of images.
My inventory has 32x32 images.
When hovering over the item it should display a bigger image with information next to it.
But this bigger image gets SOOO blurry when resized.

Therefore I suggest we had the option to choose nearest neighbor as interpolation method when resizing images. This I believe will open for a world of new pixely games and would be VERY appreciated by the community.

image

112 Likes

What is the current method? Because if you’re adding Nearest Neighbor, might as well add Bilinear and Bicubic (but I think the default is probably something like those last 2).

4 Likes

Yea, well the most distinctive difference is nearest neighbor and all other algorithms. Sure Id appreciate them all to be implemented but to make pixel games you really need nearest neighbor.

MAN! Id be sooo happy if this got implemented :smiley: I always have to upload highres images along with my pixely ones to make it work…

4 Likes

There would be no real need for such a property. Realistically you should have used bigger images and scaled them down, rather than using smaller images and scaling them up.

1 Like

Scaling highres images gives u a blurry small image aswell.

4 Likes

Scaling highres images gives u a blurry small image aswell.[/quote]Not if they are scaled uniformly.

1 Like

This is also a waste of GPU RAM, which is limited to a few MBs on integrated chips, there’s also not much reason to waste all that file size in useless pixels

9 Likes

This is also a waste of GPU RAM, which is limited to a few MBs on integrated chips, there’s also not much reason to waste all that file size in useless pixels[/quote]

Plus it takes years to download the image in the first place on some connections. I hate staring at my invisible, non-usable Gui while every other player jumps around laughing and overall having a great time without me :frowning:

For whatever reason it takes the Roblox client a lot more time to load a decal than it does my browser for the same decal :uhhh:

5 Likes

[quote] This is also a waste of GPU RAM, which is limited to a few MBs on integrated chips, there’s also not much reason to waste all that file size in useless pixels [/quote]If you want to display a larger image, you use a larger image. GPU RAM is irrelevant since the image is being scaled regardless given the context.


[quote] Scaling highres images gives u a blurry small image aswell. [/quote]If you are scaling uniformly then this shouldn't be an issue.
1 Like

@Woot: Larger image dimensions = larger file size = longer download time. Lots of big images = noticeable download time. Better to upload as a small image.

7 Likes

There should be an ImageInterpolationStyle Enum. It will contain:

None – i.e. when you make the image larger, each ‘pixel’ scales with the image. It will produce results similar to Minecraft (where you make a small 16x16 texture, and it ends up something like 128x128 in-game keeping the same ratio)
Linear/Bilinear – Normal scaling (current)

This way, the option is there in the future to add more interpolation types which improve the quality of the image more, at the cost of CPU cycles. For example, Lanczos3 interpolation could be added in the future.

1 Like

I’m currently working on a project which has a pixelized style, and I would like to render these at 2-5x in both dimensions.

It would be really nice if we could have constant / nearest-neighbor interpolation as a feature for textures, at the very least for the 2D image objects (ImageLabel and ImageButton).

Right now, if I don’t want the image to look smoothed due to interpolation like in OP, with N the scale factor:

  • I would have to upload about O(N^2) times the amount of spritesheets :frowning:

  • Clients would have to download ~O(N^2) times the size in textures :frowning:

  • Devices would need to use/swap/free/whatever O(N^2) times as much texture memory as well :frowning:

This all seems really inefficient especially for large pixel-art backgrounds. More interpolation methods for textures would make this kind of art style a lot easier to pull off.

25 Likes

I’m also working on a game whose art style would benefit from nearest neighbor interpolation. Since I doubt we’d use anything beyond NN or bilinear interpolation, a boolean “Smooth” parameter could be added to textures etc. Alternatively there could be an Enum “Interpolation” that could be either “Smooth” or “None” to keep names simple.

6 Likes

image

It looks bad. Please consider adding at least NN for pixel art games.

10 Likes

Been making my game entirely around a pixelated style. It’s pretty annoying having to deal with blurry images, even in non-pixelated games. Even if the image looks off, I want it to look crisp – we should at least have the option to choose blurry or crisp.

3 Likes

I say Roblox implement some level of MipMaps to images. Sure, it would increase load times (which is minuscule 99% of the time. If your connection is too poor to handle a few images, you shouldn’t be on an Online platform in the first place in my opinion) but it would definitely increase the range of the type of games people could create.

The only problem I can see with choosing what texture-filter an image uses is I think filtering like Bilinear and Trilinear might have some level of performance impact, or that might just be Anisotropic Filtering x2 and above. But something like Nearest Neighbor, aka pretty much no filtering at all, should definitely be an option.

In the mean time, you can increase an image’s size to 512 x 512 in Gimp or PaintDOTNet and set the rescaling system to Nearest Neighbor. Of course, you’ll have to reupload your assets, but it’ll give you the effect you want.

1 Like

As a Roblox developer, it is currently too hard to have pixelated textures look smooth when upscaled, so please just add a toggle or something to make this not happen.

If Roblox is able to address this issue, it would improve my development experience because things like this wouldn’t look cut-off and blurry

This is what the texture used looks like:

score

15 Likes

Currently on Roblox it’s almost impossible or too hard to disable texture filtering.

I came with the idea to make a game on Roblox that uses semi-low-poly models with a low resolution/pixelated texture style to make it look more retro/classic/old.

But stumbled upon this problem.

Image of my texture getting blurry/stretched out due the “texture quality filter”.

So to test this out, I uploaded a cube that I UV mapped and that uses a 400x400 texture (I use only about 1/20th of the whole image to go down to even lower resolutions), the issue is, when a texture is stretched over a surface, the render engine begins to filter and blur it, which is going to be a big problem.

I have found a band-aid solution to this which is to downscale my textures and then rescale them to full resolution with nearest-neighbor on, that way it still looks pixely, sort of, it still tends to get blurry at some edges or when you stretch the texture over a part, it’s impossible to get 100% sharp/hard pixels without a filter applied to it.

I’d greatly appreciate if Roblox (or the engineers) were to implement a feature where this blurry texture filter can be disabled on textures that have to be intentionally low-resolution/pixelated for the style and feel of certain games.

Because of this issue I have to seek band-aid solutions and makes it fairly difficult to make my game, forcing me almost to come up with a new graphics design.

Just a simple feature to set texture quality filtering mode or at least be able to exclude some textures/decals from it would be amazing so said graphic styles can be made more easily without this obnoxious blurring and stretching.

Edit: It so appears to be 2021 and somehow this is still a feature request despite a ton of game engines already having this as a literal primitive/default option for textures ever since the beginning of the first 3D games that supported rendering with textures.

12 Likes

This is especially true for sprite sheets. The new video frame feature isn’t a good alternative for this use case, but stuffing 10 or more frames into a single pitiful 1024x1024, only to have them upscaled with the worst possible algorithm isn’t much better.

6 Likes

Five years later and this is still an issue:
image
My use case is also spritesheets. If I had a series of 16x16 sprites I’d be able to fit 4096 of them onto one 1024x1024 image (the maximum image size), but if I have to scale them up to 128x128, I’d only be able to fit 64 into one image. A property to select scaling quality on a Decal/ImageLabel/ImageButton would help us out immensely.
image

23 Likes