SurfaceAppearance Studio Beta

Hey, Developers.

At Roblox, we are continually upgrading our technology so you can create a wider range of content. Until now, uploaded textures have been limited to a simply-shaded, low detail style. Today we are opening up much more expressive controls. We are proud to present SurfaceAppearance, a new object for assigning PBR textures to MeshParts.

meshpart-vs-sa

What does SurfaceAppearance do?

SurfaceAppearance allows you to specify new texture inputs to our Physically Based Rendering system for MeshParts:

  • Normal maps - add details like bumps and dents to your mesh.
  • Metalness maps - make parts of your mesh metallic and highly reflective.
  • Roughness maps - control how smooth or rough parts of your mesh are, modifying specular highlights.

Because this PBR format is commonly used in 3D games, artists already familiar with these formats will be able to import their content into Roblox with minimal modification. You can also import meshes from 3rd party stores such as SketchFab, TurboSquid, CGTrader, and more if you have rights to use the content.

Meshes with partially transparent textures using SurfaceAppearance also benefit from proper distance-based occlusion and work better with various effects like DepthOfField and water reflections.

MeshPart.TextureId vs SurfaceAppearance:
leaves-comparison

Comparison

MeshPart.TextureId:
image

SurfaceAppearance:
image

How to Use SurfaceAppearance

Learn how to use SurfaceAppearance with our API documentation. (This documentation will be available on the Developer Hub soon).

UPDATE: SurfaceAppearance is now enabled in all games. You still need to opt-in to the Studio Beta to edit SurfaceAppearance instances in Studio. Once we believe the feature is fully stable, we will end the Studio Beta and stop requiring opt-in to edit the instances.

Participating in the Studio Beta

Disclaimer: We had to add new mechanisms to the Roblox engine to make custom PBR textures look good and have minimal impact on memory and performance. These mechanisms have many moving parts, so there may be bugs and areas where the development experience is rough. Some issues you may run into are described later in this post. If you encounter anything, please share your feedback on this thread or send me a message including your model/place file so we can improve the system.

In Studio, under File, select Beta Features.


Find and enable Advanced SurfaceAppearance Textures, then click Save.
image
Select a MeshPart in your place and press the plus button in the Explorer (or press Ctrl/Cmd + I)
image
Find and insert a SurfaceAppearance instance.
image
You should see these properties in your Properties widget. They will be hidden if you haven’t enabled the beta.
image

A few warnings during the beta:

SurfaceAppearance does not support rbxgameasset:// references.

For some technical reasons, you must use rbxassetid:// format references right now. Currently the texture picker drop down menu uses rbxgameasset references, and will not work on SurfaceAppearance. You need to type or paste your image’s asset id directly in the texture property field. You can get this id by right clicking on your image in the Toolbox or Game Explorer and selecting Copy ID to Clipboard.
image

We will add support for the texture picker drop down soon.

Roblox Studio can sometimes fail to save SurfaceAppearance data.

If you open a file you previously saved and find that your SurfaceAppearance textures do not appear correct, try changing a property on the SurfaceAppearance then waiting up to 30 seconds for this message to appear in the Output widget before saving or publishing the place again: “Successfully uploaded compressed SurfaceAppearance.” We want over time to make the system robust enough that you never have to worry about this.

While SurfaceAppearance is not active in your published games yet, we have created a special place where it is enabled for testing purposes. You can see it in action here.
image

Future Work

SurfaceAppearance does not currently work on regular Parts. The biggest use cases for PBR textures with repeated tiling on arbitrary parts are for making custom looking versions of our built in materials - grass, wood planks, floor tiles, etc. We know there’s high demand for this. Materials with physical data, in addition to custom textures, are a fundamental concept in Roblox that many future features will be built on, so we’ve been taking our time with this. We plan to ship features to support this later this year.

Thanks for reading. I’m excited to see what you all create!

897 Likes

I’m beyond excited to see what developers make with SurfaceAppearances. Make me proud :pleading_face:

277 Likes

This topic was automatically opened after 16 minutes.

Now I feel even more accomplished in getting into modelling and texture design.
Here’s some questions I want to ask:
Normally when importing a material, it will take up 100mb no matter what, is this true for surface appearance?
Does this have performance costs?
Is it optimized for low quality users?

So if I were to have a texture with neon on it, and I import it to Roblox, there will be neon the the texture, right?

Overall, this would improve realism an the overall variety of design. Keep imagining!

34 Likes

This is very exciting to see, I am glad Roblox introduced this. I was initially worried about the delay, and I am still a little concerned that we didn’t get an announcement sooner, but regardless the feature is here! Thanks!

Any ETA on when this will be out of beta? And with Q3 be pushed back due to the delays of Q2?

The demo looks amazing! The character is great! Is the demo place in the post using skinned meshes and bone instances? If so, is that out yet and if not, when will it be coming out?

I am so excited!

16 Likes

I see a bunch of people making new wooden textures and then misusing said new wooden textures.

162 Likes

Oh my god, I cannot wait to start experimenting with this!

When will it be available for regular parts, and will we be able to use seamless textures, like how the Texture object behaves? Do all meshes have to be UV unwrapped to make this work?

18 Likes

This is amazing. It’s so realistic.

It’s too bad on the lowest graphic level it looks like nothing’s changed:

Hold up. What is this. Why is there an anime girl behind my mask.

128 Likes

Now I can make AAA looking games, look like AAAAAAA games, better than actual game engines. Ah yes.

In all seriousness, knowing that the majority of Roblox players are on mobile, what does performance look like to these players, are we trading off playability for aesthetics? Of course we are, but to what extent?

18 Likes

now this, is truly epic. thank you all for this!!!

11 Likes

Finally, meshes won’t be singular things… details now. If any developers want an easy way to convert their already-made textures and be able to generate Normal Maps, Roughness Maps, and Metallic maps from them I recommend Materialize. It’s a PBR generator for unity, but should work fine with Studio!

16 Likes

Wow, another awesome update on studio that will impact games in the future! :eyes:

Anyway, this update will make meshes and I guess decal on trees and bushes to look more realistic than ever before, instead of the decal on trees/decal glitching and making it look weird when looking it at a certain angle of it.

Some examples:

Also, is this supposed to happen when you insert “SurfaceAppearence” onto a mesh, or am I using it wrong?

21 Likes

OMG, FINALLY IT I CAN TEST IT OUT WITHOUT AVATAR EVOLUTION AND WITH FIB3 WOHOO. HOORAY

Here some side project I make in Avatar Evolution xd

I cannot wait to see this kind of stuff work on FIB3, I bet it might be awesome wohooo. And see another guy creativity on this kind of thing

Nice update you got there Roblox <3

Here some photo I make something using surface appear in avatar evolution and cannot wait to make this thing public xdd

124 Likes

We need to have a chat about your demo place. What are you hiding under my helmet?

88 Likes

This is absolutely huge news. Without the limitations of the default roblox textures there’s going to be a massive increase in game quality no doubt.

11 Likes

Any idea of what is the max Resolution file?

I have seen some really detailed textures. 1080p? or 4k support?

13 Likes

This is such a great update! I really feel encouraged now to get into modeling. With this update, the games earn a lot of detail. I am extremly excited to see all of the new cool stuff with it!

4 Likes

I’m so excited about this, I never knew this will be added but look, its here! I’m so ready make new stuff with this and also see the things other people will make, especially because they might be better than me xD.
Its an clear yes from me.

4 Likes

Wow! This is a huge leap in a new direction. I’m sure as soon as it gets released, many games will start to utilize this, especially showcases.

I mean, without PBRs, some games still were able to get immense realism in them, but this–this will propel the realism to a whole new dimension!

I know that builders like @thisfall manage to create super realistic environments just using textures, so this will make it much easier to create scenes like that in the future.

Possible creations with PBR:

Not only that, but I’m sure the cliche arguments of Roblox having bad graphics will cease to exist soon. I mean, it’s catering people of all computers and processors, and they’re still expanding in the higher-end computer spectrum.

Speaking of such, how will these textures be handled on mobile and lower-end computers? Will they be compressed or anything like that or will they simply not load?

I tested it out, and apparently, it starts to appear from Graphics Quality 3, which is surprising for such realism:

To be honest, I’m surprised my computer didn’t blow up…

You guys are great at making everything performat, so I guess this is no different.

Whoever worked on this is truly amazing!
Keep it up Roblox! :roblox_light: :roblox:

88 Likes