Vertex Coloring Support for SurfaceAppearance

Vertex coloring is a feature which lets you tint the color of a mesh based on the vertex colors of that mesh. This can be used to blend color variations throughout your mesh.

But unfortunately this feature currently only works on Roblox “materials” and has no effect on surface appearance rendering. What this means for us is that we cannot use a UV mapped mesh and vertex coloring at the same time. And even if we could UV map materials, I do not want to use MaterialVariants for every new and unique texture set, I want to use SurfaceAppearances.

If Roblox is able to address this issue, it would enable the creation of even higher quality 3d assets.

Examples of how vertex coloring is used to add detail to a mesh:

  • “Shadows” baked into the mesh using vertex coloring.
  • “Edge wear” type color variation.
  • General color variation across a surface without the need for extra diffuse textures.

If this problem is fixed I also expect it to work with vertex alpha transparency without any weird tradeoffs.

Related: SurfaceAppearence ColorMap does not respect baked vertex colors

6 Likes

I’m currently modelling a beautiful bridge and I could use this feature to add color variation as seen on the stone blocks below:

I’m modelling some erosion on a gravel path and this feature would be good for highlighting the erosion lines and adding general color variation on the path.

I have a workaround which can produce the desired effect.

If you make your color map semi transparent you will be able to see the vertex colors of the mesh come through and blend into the color map.

Mesh with vertex colors and no surface appearance:

Surface appearance with a semi transparent (50%) color map applied:

I suspect that the final blended color from this workaround would be a bit washed out/inconsistent compared to what actual native support for this feature would produce. And obviously the downside is that you have to upload your color map textures semi transparent.

1 Like

I’m generating grass using EditableMeshes and applying a transparent grass sprite using SurfaceAppearance. This feature would help me add color variation to the grass by setting vertex colors when generating the mesh.

2 Likes