Texture Filtering

Hey there!

As a Roblox Developer, it is currently impossible to create pixel perfect textures for meshes.


The game that I’m currently working on is made using only meshes and in order to stop their textures from stretching and blurring I have to scale them up almost 16* which leads to a lot of unnecessary and unneeded data being downloaded by players and I’m often finding that my texture file sizes are double the size of my .obj’s at roughly 29KB rather than their original of 2KB. 36 of those textures alone is about 1MB.

For example, I have tilled soil in my game and it requires 2 separate meshes, one for grass and the other for the dirt (the reason behind them being separated is so that I can use VertexColor to change the hue of the grass depending on season or position). Each tilled soil tile requires 15 variants for direction and connections. That’s already 30 textures at 29KB each just for soil. Being able to upload them and use them at their original size would cut down the amount of data that a player would have to download massively and would hopefully be less taxing on their hardware.

It would be really useful to asset artists if their decals and textures were not automatically scaled up, and if SpecialMesh and MeshPart instances had a ‘Filter Mode’ option that would allow the developers to alter the way that textures are rendered.

Options could similar to Unity Engine:

  1. Point - texture becomes blocky up close.
  2. Bilinear - texture samples are averaged.
  3. Trilinear - texture samples are averaged and also blended between mipmap levels.
    src: https://docs.unity3d.com/ScriptReference/FilterMode.html

Many thanks,


Bumping because I’m currently struggling with this. You can bypass this by upscaling your textures without filtering, but it takes way too much time to do.


7 months later and we still cant make pixel perfect textures :pensive:


Feature request filed!


is there any update on this? I am also likely one of the many waiting for the implementation of this small, yet important feature!


It doesn’t seem like anything has been done to implement this yet

1 Like