Procedural Bronze Patina

I love making materials in MODO, the builtin procedural textures are great to play with and the photoshop like layering system means stacking multiple effect layers upon each other is simple and effective.

For the fountain I wanted the statues to have the appearance of weathered bronze, the point where the surface had been oxidised and a layer of patina has formed giving it a rich green tinge. While travelling europe I have been taking photos of various bronze statues in a wide array of oxidisation.


After seeing plenty of real world examples up close I decided to make more of a mix, of all the statues I had seen you either had ones that were well kept or new and still had plenty of vivid brown metal reflecting the world around it, others were complete green, with blackening where the rain doesn’t reach. I wanted a bit of both, the flat green patina and also the clean orangy alloy showing, this meant the material would have to transition between the two surface properties, and I thought what better way to do it that to use drivers in MODO.
For those unfamiliar with drivers in MODO essentially its a layer effect, very much similar to diffuse amount, roughness or any of the many other layer effects, the difference with drivers is they don’t actually affect the final material, instead you can map gradients to them with the gradient layer. Drivers are a value only, so when making them you usually are only viewing a greyscale representation, it’s good to have the gradient layers that use the drivers along side the drivers themselves so you can see what each layer is down gas you work with it.

To explain gradient mapping here’s a picture of photoshops gradient mapping.

Gradient mapping in photoshop

Now we know what gradient mapping looks like essentially what I’m doing on this bronze material is gradient mapping the separate properties that make up the final look, here I’m mapping Specular Amount(with PBS in MODO this also controls Reflection Amount), Specular Colour(Reflection Amount), Roughness, Bump and Diffuse Colour.
With Drivers in MODO there is a maximum of 4 you can have at any one time, Drivers A, B, C and D, each of these can be made up of as many layers are you want, I’ve found 4 to be enough for creating very complex materials. The Bronze material is made up of 3 drivers, DriverA I use for occlusions, DriverB is a dirt layer and DriverC is the mask for the blend between the shiny, clean bronze and the dull green patina. DriverA, the occlusion driver I tend to always use when making a material, you generally always need control over a surface where it creeps into cracks and stands out on the edges. DriverB, the dirt layer is what you would expect in the real world, unless you rendering the next iPhone you generally want some sort of wear and tear, some scuffs and smudges, these things help bring CG objects into the real world. DriverC is unique to this material, but you would find it useful in a large array of surfaces, especially on severely worn object, in this case its the layer that will decide where the surface is fully clean and un-touched by oxidisation all the way to thick almost black patina.

So after spieling a lot about the idea behind this material and how Drivers in MODO work, lets dive into the make up, we’ll do this first by looking at DriverA.


DriverA is made up of 4 layers, 2 concave layers and 2 convex layers, why so many? The occlusion layer in MODO is distance based raytracing so using a small distance gives you the small details a larger distance, larger details, so both are needed to get a nice range over all the details on the object, then we need both the cavities and convexities. In MODO 10 there is now an option on the occlusion layer that combines both convexity and concavity, as I started this project in MODO 902 I didn’t have that option, requiring me to have both separately.

This is what they look like after layers with blend modes and opacity levels.


This gives a nice range of values, one downside, raytracing all those layers of occlusion(48 rays per pixel, 4 layers) per frame, having to render this in an animation added too much time so this driver was then baked down into vertex colours by using the vertex illumination baking tool, then transferred to a single channel weight map. The reason for using a weight map(vertex based value map) was to save on having to load additional textures into memory as this is just another vertex property keeping it lite and being that the occlusion will only be as detailed as the geometry is, meant that the detail was mapped 1 to 1.

On to DriverB.


DriverB makes up the dirt layer, here we start to make use of the powerful MODO procedural textures, all are 3D, seamless, pixel-less layers, great for adding detail where you need it. First up I make use of the previous DriverA, I do this by using a gradient layer, this was it’s just remapping the previous layer, re-using it with slightly different values. The second layer is actually a classic bitmap, applied with cubic(try-planar) projection, this texture is generic enough to get away without the seams being obvious and adds some real world detail to help the rest of the procedural layers hide from being easy to spot CG noise. Next up are four procedural textures, MODO has a slew of these, all are different and all very handy for different reasons, for the bronze material I used the dirt procedural, the name explains it all, Dented is one of my favourite procedurals, its a very irregular yet detailed noise, here I set the gain quite high to give it lots of contrast. Scratches procedural is good for adding more fine scratches on top of the texture maps, finally the Etched procedural similar to dented but the details are even more random.

Once these are comped down by was of overlays, multiply and screens.


Now with all those layers comped, DriverB has some great details that will hold up at distant shots as well as close ups making a good map to add details with.

On to the last one, DriverC.


DriverC makes up what will be used as a mask to blend between fully oxidised patina and raw bronze, from looking at reference photos, the patina accumulates where the weather is exposed to it most. First up we re-use the occlusion from DriverA though it is remapped to be inverted and has much more contrast. A slope gradient is also used, it is generated based on the normals of the mesh and their facing up on  this will make the patina appear more on the top facing parts as if weathered by rain. I’ve added a noise in here, it’s a very basic noise just to add some more larger variation to the mask, then I use two cellular procedurals, one with sharp round cells and another softer and inverted these when both layered they create a splotchy effect akin to large water droplets. Lastly I reuse DriverB as well, layered up DriverC looks like this.


Now there is one issue with this, the water droplets are too regular, being perfect circles they stand out quite a bit and once I use this as a mask for controlling an abrupt surface change it will  be even more obvious. In come Texture Offsets, this is another layer effect in MODO essentially what it does is warp every texture above it, but by default each new texture layer is set to not be affected by it, the Texture Offset Amplitude setting on the texture locator which acts as a multiplier on the effect. This is what the offset layer looks like.


This layer is red because each channel, R, G, B, affects the texture in 3 dimensions, grey acts as a neutral so no offset comes from it. Now DriverC looks like this when offset.


The effect is subtle and only the cellular, noise and the DriverA remap layer are being affected by the offset leaving the DriverB(Dirt) untouched by it.

So thats the breakdown of all the drivers, the maps and values that will drive the gradients which make up the final material, lets have a look at the material gradients and how they use each of the previous drivers.

The final material uses drivers B&C as both include driver A in them somehow, also C includes driver B too.
Starting with the diffuse colouring, here we use both drivers B&C, B is used for the patina colouring going from a dark forest green to the main cyan then mapping the white of DriverB to a khaki green, DriverC is used for colouring where the bronze will show through and since metallic surfaces should not have any diffuse colouring this is simply a grey layer with DriverC masking it to only the darkest levels.
Bump is going to use the dirt driver and is pretty much a direct mapping, this brings in small scratches and dents which would require too much geometry to displace or sculpt in.
Specular/Reflection amount is using DriverC, and is a sharp cutoff between ~4% and ~80%, this gives us our insulator vs conductor reflectance values, in MODO a gradient layer has the option to remap colour and value at the same time so for Specular/Reflection colour I just re-use the same gradient remap and just punch in a tan colour for where the bronze is and then white for the patina as only metals(conductive surfaces) should have coloured reflectance values.
Roughness uses DriverC mapping the patina to a very high roughness and then a range of roughness over the bronze area.

Final material.


So thats it, if you wish to download a preset of this for MODO click here, it’s a post from the Foundry forums WIP post(it’s a bit out of date compared to these renders). Creating up a material like this makes it ver easy to go and tweak, as you are only needing to real change or add to one of the drivers and all the material properties that actually make up the final surface will update, since none of the layers use UVs this makes setup on new models pretty much a drag and drop scenario, other than baking down DriverA(which still doesn’t require UVs) for efficiency sakes the rest just works based off the geometry you feed it.

[Edit]Since writing this I have added a 4th driver, this uses DriverD and is a stain map that was created in Substance Painter using the particle brushes(thoroughly recommend checking it out) to add drip lines, example below.


The upside to this is I can easily add the effect to the existing drivers making the areas around the drips become more heavily oxidised. The one downside was having to UV the mesh now but the added effect was worth it in this case, and aside from this layer the rest is fully automated and procedural which is perfect for this since I know I’ll be moving in for super closeup shots and texture resolution would have become an issue.

With tools like Substance Designer, Houdini and more focus on re-usable workflows, MODOs layered based shading system is surprisingly good considering it has been this way from way back in the earliest versions, it’s powerful and once you don’t think of any existing shader systems from other tools such as Maya or Max then the possibilities are endless.

Recent Posts

Recent Comments




Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *