[Full Release] SurfaceAppearance Tinting

[Update] November 14, 2024


Hi Creators!

We’re excited to launch SurfaceAppearance Tinting as a Client Beta today! :rainbow: SurfaceAppearance Tinting allows you to multiply a Color property with your SurfaceAppearance’s ColorMap to create color variations.

As a Client Beta, this feature is live in production, meaning that you can publish places with it, but we still consider it in beta for now. This feature is subject to changes or even rollback before its full release.

slack_bAIFo9Vc7j

Usage

You will first need to add a MeshPart with a SurfaceAppearance to your place, if you don’t have one already. Your SurfaceAppearance will also require a ColorMap. You can find the instructions to do so here.

  1. Select the SurfaceAppearance you would like to customize.
  2. Click on the Color Property.
  3. Choose the Color you would like to multiply your ColorMap with from the Color Picker.
  4. Click “Ok”!

Note that SurfaceAppearance Tinting is applied as a multiplier, so you will obtain Texel Color x SurfaceAppearance.Color. This means that authoring your original SurfaceAppearance in grayscale colors and as light as possible (closer to white) will give you the largest range of coloring options.

How it works with the Overlay AlphaMode

SurfaceAppearance Tinting is applied to the ColorMap itself and does not impact the MeshPart’s Color. If your ColorMap has transparency (values < 1.0 in the Alpha Channel) and your SurfaceAppearance is using AlphaMode = Overlay, the MeshPart’s color will show through the transparent areas like before.

Scripting

SurfaceAppearance Tinting is available for scripting using the SurfaceAppearance.Color API which is a Color3. This allows you to dynamically change the color of your SurfaceAppearance, enabling use cases such as in-game asset customization or time-based color tints, for instance.

Performance and Memory

SurfaceAppearance Tinting comes at no performance cost. Additionally, if you are currently uploading multiple textures to obtain tint variations of a ColorMap, you can now save memory by reusing a single ColorMap along with SurfaceAppearance Tinting to obtain your desired tint variations.

Known issue if you use Rojo

If you use the Rojo tool and you are not using version 7.4.4, you might start seeing some of your SurfaceAppearances look all black. This is a known issue by the Rojo maintainers and their new version (v7.4.4) fixes it.

NOTE: Please make sure to publish your experience with the most recent Rojo version (v7.4.4) to avoid this problem.

:purple_heart: Made with love by the Engine team

Let us know about your experience with SurfaceAppearance Tinting and if you encounter any issues!

262 Likes

This topic was automatically opened after 10 minutes.

Thank you so much for all your hard work. This is awesome!

Roblox has really been listening to the community more, and it shows!

53 Likes

Is there any chance we will be able to use Color3’s that go past the 255 limit with SurfaceAppearances?

This works with Texture objects where it will give the image a bloom effect when going past the limit.

42 Likes

Thank you guys!!! Thanks for all the awesome work! :slight_smile:

21 Likes

Bless and rejoice. I don’t have to wrap so many meshparts to make body patterns anymore. :heart:

23 Likes

This is brilliant. Very much appreciated and please keep these awesome updates coming!

13 Likes

This is really exciting. I suppose until we know for sure it’ll be available long term, I’d assume this is probably safest to use to vary rock and tree leaf colors, but once it’s out of beta? I dunno about anyone else, but the most exciting potential use case to me is character customization in morph games. I don’t just mean markings, either–you’d finally be able to change the color of transparency-dependent things like hair and fur tufts without needing a whole new texture!

11 Likes

Why is it limited to 0-255? This is a huge L if that is not possible. SpecialMesh is still preferred.

Left: SpecialMesh with VertexColor (2,2,2)
Right: SurfaceAppearance maxed out to (1,1,1) on the Color.

Also having the ability to change the behavior to add, multiply, subtract, etc

40 Likes

This is an amazing update that helps speed up my workflow a lot. Thanks guys

13 Likes

Thank you so much for this. I used to have to make like 5-10 variations of a texture to get a color perfect, but now you’ve saved me so much time!

9 Likes

Is it possible to change the color of each face of an object with this? That could make so many things easier

6 Likes

this is great. good job robloxxxxx

12 Likes

THANK YOU!! Can’t wait to finally not have to have 4000 different textures to change a basic rgb values!!!

12 Likes

I hope this can be added as an option for layered clothing so people don’t have to upload and/or buy 20 colors of the same item separately

11 Likes

This is awesome! Looking forward to it!

8 Likes

Weapons with bloom effect, sounds great.

10 Likes

I’ve waited years for this feature to come out, literally. Thank you very much.

8 Likes

hexadecimal color value is still “HTML” not “HEX”
they should fix it

7 Likes

This was a deliberate decision due to the performance and memory requirements. We see that many Devs want to have emissive maps for SA. I just want to acknowledge that we are aware of this feature requirement.
Emissive maps, color shifting and roughness/specular scalers are the top requests we see for the SA.

13 Likes