SurfaceAppearence ColorMap does not respect baked vertex colors

Meshes on Roblox support vertex coloring when imported from a *.fbx file, and this tinting normally applies to the MeshPart’s applied texture as well.

In an effort to optimize our memory consumption on mobile, we’ve been trying to optimize our meshes to use smaller textures and fewer individual MeshParts, while still preserving graphical fidelity.

Trouble is, MeshParts on their own don’t support the alpha channel. So we tried using the SurfaceAppearance class to utilize the Transparency AlphaMode. This is where the problem rapidly became apparent:

As you can see, our grayscale texture is appearing as an overlay and isn’t respecting the vertex colors of the underlying geometry when using the Overlay AlphaMode. Results weren’t much better when we tried using the Transparency option either:

While we could expand our texture map to have 4 tinted copies of the same texture, that defeats the end-goal of this optimization. Texture memory and part counts on mobile are huge bottlenecks to our scalability. Ideally we want the mesh to look something like this:

I’m hoping this issue is easy to fix and we can utilize these optimization techniques in our worlds as soon as possible.

Thank you in advance!

43 Likes

Hello, thank you for the report. Unfortunately, fixing it isn’t currently on the roadmap. Please see below as to why your reported issue is occurring:

  • Overlay behavior is meant to layer the texture on top of the part color. This is designed mostly to support clothing on top of avatar body colors. For technical reasons, it is cheap to tint the underlying body color by vertex color, but it would be more expensive to tint just the texture by vertex color and overlay that on top of Part.Color
  • Transparency behavior is designed mostly for foliage
4 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.