SurfaceAppearance.Color

This method becomes very inaccurate and rigid when working with things like skin textures on stylized characters like Roblox’s own “stylized” other packages, shading can become wildly inaccurate resulting in an ashy-looking complexion when you are a shade darker than nougat or peach. Working with transparent textures such as hair and leaves, as mentioned by Fennec, is also impossible unless you work with outdated SpecialMeshes that go under parts. SpecialMeshes already have a texture recoloring feature but lack various features such as PBR and skinned mesh deformation. The framework for recolorable mesh textures already exists under special meshes, the main problem is that MeshParts, the more updated dynamic mesh system is rigid regarding textures and colors.

2 Likes

I’m aware it doesn’t work with multi-colored images, but trying to re-color multi colored textures is a mess anyways. All I’ve done here was add a Black & White filter to my texture, then I set the white values of my texture to transparent, via (cant be done in photoshop) Photopea > Filter > Other > Color To Alpha (Set the base color to white). Then you simply export as PNG (to keep transparencies) and you make a surface appearance with the AlphaMode set to “Overlay” then boom. Fully Colorable. Idk what else you’d ask for. in my opinion this seems perfectly fine. SurfaceAppearance.Color would only remove the process of having to make the white values of the texture to be transparent…

Here’s the image.

A Video showing that it’s colorable.

we need this, i’m not going through 100 shades of the color spectrum. please, roblox i’m begging for you to add this.

I am very sorry for your request about the stool being white.
The best solution is to duplicate the object and set the transparency up to 0.5 and you can change the color.

Images with alpha transparency like leaves and hair can not be recolored via this method, and as with solid textures the work around with transparent shading as shown by you can work in some situations but others resulting in messy and inaccurate results. With decals, when color3 is changed, the actual hue of the texture/image is changed which makes way for more accurate recoloring, especially important when working with certain textures. Again, this method you have listed may work in some situations but it is very rigid and does not support textures that have alpha transparency such as hair. This may work for your style or you specifically, but in many cases having a texture just contain a shading overlay can be very limiting.

3 Likes

There’s an AMA happening tomorrow, someone ask about this! (I would but I have another question for them)

2 Likes

Any updates?

I pretty regularly run into situations (many of which listed in this thread) where color changing SurfaceAppearance objects would be really really helpful. The amount of bloat and workaround mess I can remove from my projects is going to be huge if this is ever added.

1 Like

Need this feature urgently for my game in order to change the colours of the character’s eyes (I’m using SurfaceAppearances instead of Decals because Decals don’t wrap properly around my head mesh).

1 Like

the fact that this texture recoloring feature already exists on the outdated and practically deprecated special meshes is so painful like no one on the team thought “huh this might come in handy when we basically make all the cool lil surface appearance and mesh deformation features work exclusively on meshparts”?!?

2 Likes

I have no idea why this has yet to be implemented. It should be extremely trivial to add. Maybe they had some broader plans? I know they don’t want to deprecate features left and right, but geez, “dont let the perfect be the enemy of the good,” or something.

1 Like

Hi! Just posting here to +1. I was doing quick research today since I stumbled into a development wall and found this thread. I really want this feature to be added too. I heavily use PBR since a while ago here in Roblox [Scenes, showcases, some personal stuff, etc.]. Please when making the system if you guys will go for it, please before making anything refer to how the Unreal Engine Material Instances [_MI] behave via parameters and its possibilities [derivate from a Master Material].

A heavy benefit of implementing this is that this will reduce textures and potential resources used for our games or scenes, etc. It will add so much customization and will add so many variations made in-engine.

An example may be to make a quick variation of a PBR enemy mob. That way I will not need to go to Substance Painter again and make a variation there [example making a mob Red through PBR and then making it for example Yellow [BaseColor texture]], then bring another maybe 1mb or 2mb of potential 1024x1024 textures [potential exaggeration, could be reduced more maybe via using less res], etc. It stacks and so on… you get the idea hopefully.

Also please, please, please consider adding an Emissive slot for the PBR materials.

Thanks for doing what you do Roblox for the PBR system. So far it is really cool, it just needs some tweaks here and there to allow for more flexibility. Thanks for what you do.

Cheers!!! and happy building!

PS: Throwing here some Wishlist hopefully it will be seen.

  1. Material Instances like in Unreal via a more customizable Master Material
  2. Height Map support to do displacement or maybe POM / Parallax O
  3. Emissive Channel Support - PBR
  4. I forgot what else lol sorry. But you get the idea hopefully.

Thank you!!! So far, I love the PBR system, cannot wait to see where you guys will take it next!

5 Likes

Well, its been a year now, and… nothing. Not even an update on progress.

Here is the latest statement I have seen on it.

4 Likes

Why hasn’t this been added yet, would be so useful.

2 Likes

robloss please… roblox i beg you please robloss… here to bump it…

2 Likes

roblox is literally prioritizing so many wacky new features over basic texture recoloring… I beg of you like the fact motion capture animation was added before surface appearance recoloring is beyond me

What I find the most ridiculous is that we are missing features that were standard in engines 1-2 decades ago…

  • No custom Emissive Textures on SurfaceAppearance (yet the engine has Lava as a emissive material??)
  • No basic recoloring of surface appearance without a hacky workaround
  • No Shadergraph for materials, post processing etc…
  • Still no proper implementation of cubemap reflections, current implementation is unusably buggy

its just such a huge list and even making threads about them gives you 0 response from Roblox engineers. The lack of transparency with feature requests is insane.

5 Likes

funnily enough, some of these features were a thing pre-2014 when they used a previous engine. I get some features being cut from an optimization standpoint like we don’t exactly need high poly realtime mesh merging or whatever it was… but basic texture recoloring??? not to mention the awful and usually shoddy attempts the engine makes at generating uv maps in instances where it quite literally makes no sense, I have yet to see an imported mesh with a material such as brick actually look decent given the strange uv unwrapping system roblox uses for materials.

edit: to add on, custom materials in the new material system literally can have their own color maps/basic 2d textures that do get tinted by part color, the only caveat being that its the crappy in-engine unwrapping that makes it literally useless in texturing compared to surface appearances

I don’t know if I’ve ever been as lost for words as much as I am now.

2 Likes

Yeah, Same here. They could really update surfaceappearance by changing its texture inputs, if their issue is adding too many textures.

For example, most game engines use something called ARGB image packing.

You would pack your PBR onto a single image in each channel of the image.

An example for this would be:

  • Alpha Channel: Ambient Occlusion
  • Red Channel: Specular
  • Green Channel: Roughness
  • Blue Channel: Metallic

This is what you can do to optimize pbr textures and i think if roblox would use this approach it would be a lot more optimized, but developers would need to switch and learn this workflow which seems disruptive. So the best idea would be to just have a shadergraph, since then said optimization challenges can be solved by developers and not have to be locked behind restrictions but by roblox.

3 Likes