A Rainbow for Your SurfaceAppearances [Studio Only]

Hi Creators!

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

This feature is currently enabled in Studio for all users, and we are targeting enabling it on client in four weeks on August 22.

slack_bAIFo9Vc7j

Why Studio Only?:warning: Known issue if you use Rojo

If you use the Rojo tool, you might start seeing some of your SurfaceAppearances Color Maps look all black. This is a known issue by the Rojo maintainers and they just released a new version on Tuesday July 23, which fixes it.

This issue should only be visible in Studio for now, not to your players. However, if you don’t update your Rojo version, it will become visible in production on August 22 when we will release SurfaceAppearance Tinting in Client Beta.

:triangular_flag_on_post:If you use Rojo, please make sure to publish your experience with the most recent Rojo version (v7.4.3) before August 22 to avoid this problem in production.

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.


:purple_heart: Made with love by the Engine team

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

391 Likes

This topic was automatically opened after 11 minutes.

I cannot express how happy I am to see this finally become a feature. The team has my sincerest gratitude!

44 Likes

This looks amazing! Can’t wait to start using it in studio.

22 Likes

Been waiting for this for a long time!

89 Likes

A very big thanks to the engineers behind this feature for their patience with Rojo and its team. Sorry for the issues we inadvertently caused!

Like it said in the OP,

If you use Rojo to build a model or place file, upgrade to Rojo 7.4.3.

If you don’t immediately know whether the above statement matters to you, it doesn’t.

37 Likes

Color Tinting Texture Map when?

23 Likes

yo this is unexpected

pretty cooool thoughhh

14 Likes

I am so, so, so happy to finally see this feature! I recall how our modelers had to import different colormap textures for every different-colored bush and tree model, which ate up a lot of memory :frowning: So glad colormap tinting is supported now! :tada:

18 Likes

Will UGC items (bodies, accessories) allow for recolorable surfaceappearances in the avatar editor in the future?

E.g. if I make a dragon body with white scales, it would be awesome if a player could recolor those scales to be red using this new feature!

32 Likes

Woah, a much needed feature, thank you Roblox!

Are we going to be seeing any improvements to the channel inputs we have generally? Such as the possibility of including displacement maps?

18 Likes

I have been waiting so long for this! Thank you!! I have always had to resort to making two copies of the same asset and overlaying one with a tinted transparency. Not. Performant. Thank you so much for this update!

15 Likes

I got super confused reading this for a sec, thinking “wait, hasn’t recolouring meshes been a thing for ages using VertexColor? Did they finally change it from Vector3 to Color3?” A lesson in reading comprehension if there ever was one… and also staying up to date with engine changes, I keep forgetting MeshParts are even a feature to begin with.

The demo gifs do look pretty nice, either way.

15 Likes

Thank you :purple_heart:

surfaceappearancecolor3

40 Likes

Amazing work, I hope Alpha mapping and Emissive mapping can be separate texture models in the near future :pray:

19 Likes

Oh this is so awesome!
Can we please perhaps also get masks and hue shifting?

Sometimes textures come with colors by default, being able to adjust the hue and saturation real-time sometimes just looks better than using a all gray/white texture and sometimes achieves way better results.

And using masks allows changing colors of only certain parts of a texture while preserving the rest.
(Super useful for clothing and metal with rust on it!)

25 Likes

This is just incredible, the property we needed for a long time, I’m glad it’s finally here.

14 Likes

Thank you so much. This will save so much productivity for us!

16 Likes

BLESS, I don’t have to wrap meshes around my character models anymore to do trivial body markings. :heart_eyes:

13 Likes

Thank you!!! This can help save a lot of time!!!

12 Likes