BasePart.CustomDisplayProperties

CustomPhysicalProperties have done wonders in allowing us to unlink BasePart behavior from their materials. Materials still do limit what we can do with parts though. CustomDisplayProperties for BaseParts would resolve this issue. Here are a number of useful features that could be packed into CustomDisplayProperties:

###Intensity
One of the most annoying problems I’ve experienced while building levels is that they’re always way too shiny. I use Plastic because it’s an all-rounder material that fits the bill for most cases, but pieces of the map that are made of Plastic but meant to be other materials inherit Plastic’s shininess. For instance, compare the following parts:

The one on the left is slate, and the one on the right is plastic. You’d think they would look the same with the same texture, but the difference is significant. An intensity property would allow us to still use generic plastic in our builds, but also empower us to tweak the appearance of the components so they more closely resembled what we intended plastic to be a substitute for.

Another use would be with Neon and allow us to decrease its overwhelming brightness without changing transparency or changing it globally.

###Texture size
Some materials don’t play well with different scales of parts. For instance, compare the two models of the following pistol:

The left one looks great. The one on the right on the other hand is a different story. The metal looks smudged because it didn’t scale with the part and the diamond plate now only has a couple diamonds rather than the many it had on the scaled up version. Automatic scaling isn’t a solution because while I might want more diamonds here, that isn’t the case when I use different sized tiles of flooring for instance. By changing texture size similarly to how the Texture object works with repeating, I could make the texture repeat over smaller distances and achieve the same look on the scaled down version. I could also stretch the texture to make slightly thicker planks if I wanted.

###Secondary Color
Some materials have an innate secondary color that isn’t affected by BrickColor – take CorrodedMetal for instance:

No matter what I change the color to, the corrosion is always brown. I may want black/grey corrosion though, and a custom display property “Secondary Color” would allow me to change it. Other materials like Cobblestone don’t have an innate second color and instead use the part’s BrickColor but modified to be darker. Using the secondary color property, I could change that and make the cracks in black cobblestone appear red, creating a fiery basalt pathway.

33 Likes

Please

1 Like

Yes, Yes, and Yes to all of this. As an avid builder I would love to have all of these things and I would totally use them. All of these options, especially the second two would allow me to tweak my materials to fit better and I would have more incentive to use some of the current materials.

Some examples I can think of off the top of my head:
Brick - useful as brick but if I had control over secondary color I could make a wider variety of looks and with the addition of texture scale would allow me to make it look like stuff was built out of larger blocks instead of small bricks
Corrosion - same complaint as in op, being able to color the secondary color would really help
Granite - often too dark and shiny for my needs
Marble - also quite shiny which isn’t always useful
Wood - would allow for more polished looking wood
Wood Planks - would allow for variations in polish look and also board size so I can use larger planks in my builds where I need them.

2 Likes

The one on the left is slate, and the one on the right is plastic. You’d think they would look the same with the same texture, but the difference is significant.

This is what materials are actually for. If you put a texture on it, you’re essentially just overriding the diffuse and normal maps. The specular response is still dictated by the material shader and is a little more complex than just “intensity.” I’m not sure how much more flexibility you’d gain over the current system by having another property. The only other properties of the material are already configurable by CustomPhysicalProperties, so you can make something that looks and behaves like non-shiny plastic.

I would personally rather switch the specular model to Cook-Torrance or similar and have roughness and a dielectric/conductor ratio, but that’s too expensive right now in the context of Roblox. It implies actual reflections and a lot more fragment shader operations than the simple Phong model. Not my department though!

The use of one in the OP was to display the difference in specular between Plastic/Slate. I don’t use textures on all of my parts (very few in fact). Plastic, specular aside, provides the look I need. I can spend exorbitant amounts of time make textures for materials I’d like in my game, cover the part, and then be able to control specular by changing the now-hidden material, but I don’t want to use textures. Plastic already looks like what I need – the only thing I’d want to change is its specular.