3D Artist

V-Ray tutorial: Realistic procedural shaders

Tips & Tutorials
Carrie Mok

Discover how to create realistic shaders without the use of UV maps

V-Ray tutorial: Realistic procedural shaders

This tutorial was written by the amazing Patrick van Rooijen and Reinier Reynhout appeared in issue 103 of 3D Artist

Tools used

3ds Max,

To illustrate the workflow of texturing and shading, we wanted to create a tutorial based around a helmet. We’re not big fans of creating UV maps, so we did it all in a procedural workflow driven by custom made textures. This way it’s easy to re-use, make changes and it’s suitable for low and high-res imaging.  

We experimented with a lot of different workflows, and every time we bumped into unwrapping and lack of texture details. In order to combat this, we decided to switch to a procedural workflow. There are multiple advantages with this approach, which we will explore over the next few steps.

The shaders are layered, so the amount of dirt or damage is easy to control without changing textures in Photoshop – so if you want more dirt but less damage, this can be easily adjusted within the shader itself. On top of that, you’ll have a good setup for your next project!  

For this purpose the shader is built for a helmet material, but when you change the base material for car paint you could use it for a dirty damaged car or similar. 


Step 01 – Make a concept

V-Ray tutorial: Realistic procedural shaders

We wanted to create a dirty and damaged procedural texture-driven shader and we needed a subject to apply it to. Since we saw quite a lot of beach shots in the latest Star Wars movie, we decided to create an image that feels like it could belong in that particular fictional universe. It is intended to show the aftermath of a fierce battle.

Step 02 – Model the scene

V-Ray tutorial: Realistic procedural shaders

We started modelling the helmet by setting up orthographic views from the front and side of the helmet to use as reference. Afterwards we made a plane and, using Edge Extrusion, we quickly created the basic shape of the helmet, keeping the overall topology in mind but not being too concerned with it. When we were done with all the basic shapes we finalised the topology to get it to smooth how we wanted it to using the TurboSmooth modifier.

If needed you can apply one more level of TurboSmooth in order to get some more geometry to work with to add extra detail. The water and ground surface is modelled with the Waves texture in a high-res displaced poly plane until it looks nice enough. Just stack new Displace modifiers with other wave seeds to get enough randomness. The water splashes and droplets are models that we put in the scene for a stronger depth of field and motion effect. The fish has been modelled to slightly resemble the Rebel Alliance logo.

Step 03 – Create your own HDRIs

V-Ray tutorial: Realistic procedural shaders

For this tutorial we decided to create our own HDR. We did it with common gear, so it is easy to re-create. We used a Samsung Gear 360 for the HDRI, Canon 70D for textures and backplates and a living tripod named Patrick. We went out at 12.30pm so we had a nice, high winter sun. We took 13 pictures with the Gear 360, stitched them on a mobile phone and cleaned them up in Photoshop so you can’t see the top of Patrick’s head and shoulders. Normally we’d use more expensive equipment and this process would take way longer, but for what we had in mind this would do the trick. It all happened in 20 minutes, including the drive to the park.

Step 04 – Set up the lighting in 3ds Max

V-Ray tutorial: Realistic procedural shaders

In 3ds Max we created the V-Ray dome light, added the vrayHdri texture and loaded the HDRI we just made in the park. Increase the Overall Multiplier to boost the sun and change Inverse Gamma to 0.9 to get a bit more contrast in the shadows and highlights. With colour correction we reduced the amount of blue in the HDR. Rotate the dome to the correct angle corresponding to the backplate. Add a Material Overwrite with a standard V-Ray material to check your lighting setup. The camera settings in 3ds Max are the same as my real camera, so we used the same aperture, shutter speed, ISO and lens.

Step 05 – Shade the base material

V-Ray tutorial: Realistic procedural shaders

For the basic material we created a new VrayMtl, set the BRDF to GGX and because we knew we wanted to do everything procedurally, we added a Composite map to the Diffuse channel so that we could build our Diffuse texture in there. We added a VrayColor with the base colour of our helmet. After that, we gave the shader some slight reflections and lowered the Glossiness a little bit to use as a base to start from.

Step 06 – Shade the dirt

V-Ray tutorial: Realistic procedural shaders

Now that we had the basic shader set up, we decided to tackle every part of the shader one step at a time, so we started with the Diffuse channel. We added a second layer in our Diffuse Composite map and gave it another VrayColor, using a darker colour for the dirt. To not get the dirt everywhere we added a VrayDirt in the Mask of Layer 2 in our Composite map. For the settings we adjusted the Distribution to 0,1 to get the dirt closer to the edges of the model. We wanted to get a bit of randomisation in our dirt, so in the Radius channel we added a VrayTriplanarTex with a Dirt texture in the Texture slot. After that we adjusted the Radius of the VrayDirt and the scale of the Triplanar map until we were happy with the result.

Step 07 – Add more dirt

V-Ray tutorial: Realistic procedural shaders

Dirt in just the edges wasn’t enough for this model, so we added some more layers to the Composite, setting them to Multiply, and using VrayTriplanar texture maps with black and white images to give the shader a more dirty look. We adjusted the Opacity of the layers to make the effect subtle but still visible.

Step 08 – Reuse maps

V-Ray tutorial: Realistic procedural shaders

Now that we have most of the Diffuse finished, we moved on to the Reflection / Glossiness and Bump channels of the shader. We wanted the dirtier parts of the Diffuse to be less reflective and glossy, so we copied the work we’d done there to those channels and adjusted the values of the Opacity where needed. For the Bump we created another Composite map and in the first layer added a neutral 50% grey colour. Again, we used the other maps we made before to get the Bump to show up in the parts we needed them to show up.


Step 09 – Create weathered edges and damage

V-Ray tutorial: Realistic procedural shaders

To add damage, we added another layer in the Composite slot in our Diffuse Map channel, using a VrayColor to add a black colour for the metal material we want to come through. As a mask, we added a VrayDirt with the options Consider Same Object Only and Invert Normals ticked. We also swapped the Occluded and Unoccluded colour slots, as the mask only makes the white parts visible. We applied a VrayTriplanerTex map into the Radius slot and added a dirt texture in the texture slot to get a bit of distortion in the damage. Afterwards, we tweaked the Radius until we reached an effect that we liked. We then plugged another layer into our Bump, using a noisy grunge texture and masked it by using the VrayDirt that we just created to give the damage a little more of a random look.

Step 10 – Adjust the IOR

V-Ray tutorial: Realistic procedural shaders

In the previous step we added the damaged edges to our Diffuse channel. After this, we wanted to make it appear as if there was bare metal under there, so we added a Composite map to the Fresnel IOR slot in our material, adding a VrayColor set to pure white. To adjust the IOR values using a VrayColor, put the IOR value you want to use into the RGB Multiplier of the VrayColor – in our case, we used 2.5 as a starting point for the base of our helmet. After the basic IOR value was set up we added a second layer and duplicated the VrayColor, but put a different value into the RGB Multiplier – in this project, we used 6 to get it to reflect more. As a mask we reused the VrayDirt map that we made in the previous step.


Step 11 – Add shaders for sand

V-Ray tutorial: Realistic procedural shaders

The last detail we added is a layer of sand on top of the whole helmet shader. We created a bunch of sand textures to drive the VrayDirt radius and the sand colour. The Radius and Diffuse are loaded in the Triplanar to avoid unwrapping. In the VrayDirt we change the Z Bias to -3, ignore GI on and the rest off. The Radius is set to approximately 10cm, but you’ll want to tweak this setting a bit. Now the sand stacks up like it fell from above. In case you want it the other way around, set it to 3. What’s more important is the Triplanar Radius Texture Scale. This controls the shape of the sand in the occluded areas. The amount of whites and blacks in relation to the sand grain scale is important in order to get the correct feel in terms of scaling and distribution of the sand on the geometry.


Step 12 – Do the post-production

V-Ray tutorial: Realistic procedural shaders

When the render is done, the fun begins. Importing the render in Photoshop as a 32-bit EXR is recommended. With Camera Raw, adjust the Contrast, Levels, Color Balance, Shadow and Highlights, Clarity and Vibrance of the image – these make a big difference. The whole image has a blue-ish tone except for the helmet, as it increases the focus on that part of the image. We added fire embers behind the helmet to increase the war feeling. With Color Dodge and Burn, we painted volumetric beams in the water to put focus on the fish.