An advanced guide to the interior rendering of still images within Chaos Group Vray and Autodesk 3ds Max. Most will argue that there are no “universal settings” for Vray and I tend to agree. But there are steps you can take in order to get close to what you need for the majority of interior visualisation.

There are many other guides out there that offer similar and different approaches to Vray rendering but I have found some techniques to be somewhat confusing and hard to follow. This guide is a summary of all those different techniques, and it will give you rendering settings that work well for interior visualisation as well as the reasons behind them.

Before I start, I would like to point out that I will be using a linear workflow with a gamma 2.2 setup within 3ds Max and Vray. I strongly recommend setting this up as it will improve many areas within your workflow. You can find an easy to follow step by step guide here.

I also use the Vray physical camera, information on how to set the camera up correctly can be found here.

Please click on any of the links below to jump to a specific section within this post.

The initial set up

Anti-aliasing

Choosing the right anti-aliasing filter

Configuring the adaptive DMC image sampler

DMC sampler

Colour mapping

Adding environment light

Indirect illumination (GI)

Irradiance map

Light cache

The initial set up

In the Vray Render Setup go to Vray frame buffer and tick enable built-in frame buffer and leave the other settings as they are. The Vray Frame Buffer has some key additions which will help you finalise your render. At this point you can also tick split render channels and point to the location where you want to save your render passes.

In Vray Global Switches, under lighting, set default lights to off. This turns off the 3 point lighting system Autodesk 3ds Max has as default, now you have full control over all lights that you add to the scene.

You can also turn displacement off (Optional). Under the geometry rollout, displacement is ticked by default, rarely do I have a project where displacement is used so I turn this off. Another personal reason for turning this off is because I work largely with 3rd party CAD data, specifically Autodesk Inventor 3d files which I import into Autodesk 3ds Max. When working with this file type, leaving this on actually increases render times considerably.

It is very important to decide early on the render output size as this influences the time allowed for the project. What resolution do you or your client require? As this largely affects the render settings you decide later on, not matching your output resolution to your render settings can increase your render times unnecessarily. Typically I render out at 3200 pixels x 2400 pixels for A3 presentation, this is large enough to do any post processing, touch ups and if necessary, it can be adjusted for a larger print by lowering the DPI.

Anti-aliasing

Anti-aliasing works to correct aliasing artefacts which occur within the rendered image either by supersampling or undersampling of sub pixels. Aliasing artefacts are generally regarded as jagged edges which are derived from poor, insufficient sampling data. Vray has it’s own method of dealing with Anti-aliasing and this is controlled via the Vray image sampler (Antialiasing) within the render setup.

Here is a quick explanation of the types of image sampler, again I am not going to go in to much detail as this is not the main focus of this post but if you wish to know more, you will find an in depth explanation on image sampling here.

Fixed

This is a non-adaptable sampler that uses the simplest method of calculating. Subdivisions determine the number of samples per pixel, 1 sample is equal to 1 pixel (1×1). Whereas 4 samples divides the pixel in to 16 (4×4). The more samples per pixel given improves sampling and therefore results in a better quality render. Negative values are not something to be associated with this sampler.

For scenes that have blurry effects and/or detailed textures, the fixed rate sampler performs best but at the cost of a higher render time due to the amount of samples needed to get a passable result. Because of this it is not recommend for interior visualisation but at a low setting it can be useful for preview renders.

Adaptive subdivision

The first word “adaptive” means that this sampler can adapt to the scene via undersampling and oversampling. By being adaptive in a positive and negative way, Vray can calculate the number of samples needed for areas that are less detailed (undersampling) than more complex areas which require more samples (oversampling).

This method does not work well with glossy reflections and camera effects such as depth of field, but instead sits well with flat colour, non-reflective objects which are commonly used in architectural visualisation.

Adaptive DMC

In simple terms this is the next step on from the fixed sampler, with the addition of adaptability. It will take a minimum/maximum value of positive subdivisions and calculate the most effective number of samples needed for a given pixel. Much like adaptive subdivision, it will attend more to detailed areas of the scene and pay less attention to the lesser detailed areas.

It is the most beneficial solution for both speed and quality when calculating glossy reflections, depth of field (DOF) and so on. It will be the chosen image sampler for this topic.

Choosing the right anti-aliasing filter

In addition to the image sampler, the anti-aliasing filter takes the calculated sub pixels and averages out the colour of all samples that belong to that particular pixel. Each anti-aliasing filter available offers different calculations which in turn produce different results. For example, some filters create a soft blurred effect on the edges of your 3D geometry whereas others produce a hard sharpening, there are also filters that lie in between these two. As well as this you have the option to use no filter at all thus allowing you to add your own desired effect in post processing. This can be easily managed for a single image but for an animation it may prove to be difficult to adjust every frame to how you want it.

There is no right or wrong filter to choose, it’s down to personal preference. The two filters I commonly use are the Catmull-Rom or Mitchell-Netravali filters but keep in mind that when using a filter it does restrict the amount of post processing you can carry out on the final image.

Catmull-Rom

This is an edge enhancing filter, if you wish to carry out some internal sharpening in post processing then you will obviously over sharpen the already sharpened edges which can lead to increased moiré effect.

Mitchell-Netravali

A control between edge-enhancement and blurring so you can generate a happy medium between the Catmull-Rom filter and a blurry Area filter.

Configuring the adaptive DMC image sampler

Setting the min sub divisions to 1 and the max sub divisions to 16 will give you a good starting point and will almost get you to where you want to be in terms of quality. This will clear up the majority of noise sampling issues. You are basically stating that the minimum each pixel can be subdivided is 1 and the maximum a pixel can be divided is by 16.

Vray will not necessarily go all the way to dividing it by 16. It may decide that a maximum of 8 subdivisions for a particular pixel is adequate because of the effect the clr thresh has over this. The clr thresh determines how finely to look for contrasts in colour between pixels. By default the value is greyed out and set to 0.01, and in most cases this value is adequate.

If within your scene you are finding that you are still getting aliasing artefacts at these settings then by working on a rule of 8 you could up the max subdivisions to 24. At this point I would also recommend adjusting the clr thresh to a lower value of 0.005 so that it has a finer control over the contrast between pixels, un-tick use DMC sampler thresh and you will get the option to alter the clr thresh. By only increasing the max subdivisions to a higher value without decreasing the clr thresh you will be increasing the subdivisions unnecessarily which could lead to longer render times.

There may be a rare occasion where you will need further sampling which could see your max subdivisions be 56 and your clr thresh to be as low as 0.001. Only use these settings if you cannot get rid of any remaining aliasing artefacts. I never adjust the minimum subdivisions as it tends to lead to longer render times. I recommend leaving this value at 1.

You can pretty much clear up all your noise and sampling issues via image sampling. By tweaking the DMC image sampler you are 90% there before you even have to think about global illumination (GI). The ability to control the quality of global illumination is there to enable you to get even more out of Vray and to improve the quality of your renders. Some scenes will come out fine with just decent image sampler settings and low GI, it is purely down the complexity of your scene and the quality that you are happy with.

DMC sampler

In addition to the adaptive DMC image sampler there is also the DMC sampler in the settings rollout. No matter what image sampler you use, the DMC sampler will always be there because everything runs through it. By default, providing you have tweaked your clr thresh in the adaptive DMC image sampler rollout and set your min and max subdivisions correctly, you will not need to adjust the parameters within the DMC sampler.

But there may come a time when you have adjusted everything and still have unwanted artefacts. The settings within the DMC sampler are there so that you don’t result to cranking up the values from other settings and end up in a state of frustration. You can do some fine adjustments but they are only advised if your scene has unwanted artefacts.

Adaptive amount determines the point at which Vray decides if you need more samples to clean up a glossy reflection if the amount before it becomes adaptive is not enough. For example, if you have 100 samples to clean up a glossy reflection and you set your adaptive amount to 0.5, it will use a fixed amount of 50% and then decide how much of the remaining 50% it needs to fully clean up the glossy reflection. An adaptive amount of 0.7 means Vray will use a fixed amount of 30% and have the remaining 70% as adaptive samples. A value of 1.0 means Vray is fully adaptive, in some cases this is desirable but it is down to personal preference.

The min samples parameter is there for safety reasons; if your adaptive amount is set to 1.0, Vray sometimes cannot make the decision if it needs more reflection samples. You are making sure that whatever happens, the minimum number of samples for a glossy reflection, refraction etc. will be 8 or whatever you set it at before Vray becomes adaptive.

The noise threshold averages out the samples taken after the initial fixed samples. This setting is very important and should not be set to anything lower than 0.005 and not be any higher than its default value of 0.01.

Finally, the global subdivisions multiplier is very simple. It multiplies all the samples within your scene in one hit. This includes light samples, material samples, motion blur and DOF. It is a quick way of increasing the quality so that you don’t have to go through each light, material etc. and have to set them up one by one.

Colour mapping

If you are following the linear workflow and gamma correction method then the only two settings you may or may not change are the sub-pixel mapping and clamp output tick boxes. Detailed information on both options can be found here. These two options help fix over bright areas within your scene that are greater than pure white (255,255,255). You can identify this problem when noticing white spots on your render that sometimes appear to have a black stroke around them.

In effect, your over-bright pixels will be clamped down to improve anti-aliasing. But if you choose to do this you will lose control over the exposure and the ability to adjust the range in post processing applications such as Adobe Photoshop as the render will no longer have a 32bit colour range.

Adding environment light

Whether it is a bright sunny day or a night time scene, I recommend always having the GI environment (skylight) override on. It is a good starting point for global illumination, and this doesn’t have to affect your scene hugely by using a high multiplier. Small values can really help clear up noise and other artefacts when creating low lit scenes as well as casting a subtle shadow. For a sunny day use a multiplier of 0.8 – 1 and for a night time scene you could go as low as 0.2.

Also keep in mind that the colour of the skylight can affect your scene, think sky colour when deciding on the tone/mood. A light blue would give the impression of a bright day whereas a dark aqua blue colour would best suit a night scene. You can also add in maps here, gradient ramps to show graduation in colour which simulates the sun rising or setting. The sky is always brighter at the horizon so a graduated colour would be more realistic.

Another method is to use HDRI images of skies or environments. This type of image allows for a greater dynamic range of luminance between the lightest and darkest areas of an image. In short, the image pops out more than current standard digital imaging techniques.

In order for the skylight to work indirect illumination must be enabled.

Indirect illumination (GI)

Vray has several approaches for computing indirect illumination, each have their own advantages and disadvantages. The two methods that are commonly used for interior visualisation still images are the irradiance map GI engine for primary bounces and light cache GI engine for secondary bounces.

The irradiance map works by caching some samples that the camera can see during rendering and then interpolating them for the rest of the scene, as the name suggests it is creating a map of samples that will be used to calculate the primary bounces. This method is very fast at computing compared to others such as brute force and it works particularly well on flat glossy surfaces.

Light cache is similar to the irradiance map in that it caches a map of light samples from the camera view and works efficiently with many types of light.

Both of these methods are not adaptive and only work well for still images, they are also resolution dependant. Using incorrect settings with the wrong resolution can lead to unnecessary longer render times. I will go through the necessary steps to make sure the correct settings are used depending on the output resolution.

Irradiance map

Firstly, the built in presets are BAD! These presets have been made for a resolution of 640 pixels x 480 pixels. Typically, neither you nor I render out images that are this low in resolution. As I mentioned earlier, I render out images that are normally 3200 pixels x 2400 pixels. But they can be used as a starting point, as a rule of thumb you can half the min/max rate when you double the resolution. So if you were to choose a high preset at 640 pixels x 480 pixels, that’s a min rate of –3 and a max rate of 0 and then doubled your resolution to 1280 pixels x 960 pixels, you can reduce you min rate to –4 and your max rate to –1 and your quality settings will be the same. Lets increase the resolution again to 2560 pixels x 1920 pixels and you would have a min rate of –5 and a max rate of –2.

This will give you a total of 4 passes, each pass getting smaller, some passes may appear faster in certain areas because it is using samples from the previous pass from areas where there is less detail such as flat surfaces.

You can check tick show calc. phase so that you can see what the irradiance map is doing, there is nothing worse than leaving it to render and finding the quality is not as required because you couldn’t spot it in the early stages of rendering.

HSph subdivs control the quality of individual GI samples. Smaller values compute faster but may produce artefacts. Higher values produce smoother images at the cost of increasing the render time. A value of 50 is good for almost anything but in some cases where artefacts still appear, increase by multiples of 10 but try not to go above 100. When approaching 100, it may be best to find an alternative method of reducing artefacts either in the image sampler or light cache.

Interp samples controls how neighbouring samples are merged into each other. High values will blur more and appear smooth but you will lose GI detail, a value that is too low will make splotches appear but improve GI detail. A value of 20 is usually enough.

The threshold values also effect the GI detail, the two most important are clr thresh and dist thresh. These values determine the cut-off point between using a sample from the previous pass or to create a new sample. The smaller the value, the closer the cut-off point, meaning longer render times because it is creating more samples than is necessarily needed.

As mentioned above, less samples are used for flat surfaces, whereas more samples are used for corners or curved areas. Always leave the dist thresh at 0.1 but you can change the clr thresh to a higher value if you think there are too many samples and you want to reduce your rendering times. Only increase this value by .1, anything higher will produce unwanted results. So a clr thresh of 0.3, nrm thresh and dist thresh of 0.1 is good enough in most cases.

Light cache

This is used as a secondary bounce to spread light around your scene, not necessarily to improve detail which is controlled via the primary bounce. The main setting here is the subdivs parameter; this determines how many paths are traced from the camera. By default, 1000 subdivs are used and I would say this is a low – medium setting to use for interior visualisation. Somewhere in the region of 2500 – 3000 samples will certainly clear up a lot of sampling issues.

The sample size determines the spacing between each sample; smaller values mean samples will be closer to each other which in turn produce sharper detail but increases noise. Larger values smooth out the samples but at the cost of losing detail. Scale determines the type of units used for the sample size. The two types of units are screen and world.

Screen units calculates by making samples closer to you smaller which creates finer detail and samples that are furthest away from you larger, therefore creating less detail. This works particularly well with still images and animation for scenes that have a large ground plane.

World units means fixed samples throughout, but the samples that are closest to you will be sampled more often and appear smoother than samples furthest away from you which appear noisier. It gives a more even distribution of samples and is proven to work best with fly-through animations and small interior spaces but not so well with scenes that have distant objects as these can become very noisy. To compensate for the noise, the sample size must be smaller but at the cost of a longer render time so this is not advised.

For both unit types, larger samples will increase the chances of light leaks because light is spreading over larger samples. Smaller samples will help keep light leaking to a minimum but will increase noise.

Set the scale to world and change the sample size to somewhere within the range of 100 mm – 150 mm which works well in most cases.

If you decide that setting the scale to screen works best for your scene then leave it at the default value of 0.02, there is no reason to change this as light cache is being used as a secondary bounce and the default sample size is adequate. See here for further explanation and examples.

Tick show calc phase again to see what the light cache is doing during rendering. Keep all other settings as they are. Unless you are experiencing some really bad sampling issues with the light cache, I would avoid changing anything else. Finally the number of passes should be set to the number of processor cores you have in your pc.

The use light cache for glossy rays can reduce rendering times by quite a lot if you have heavy glossy reflections in your scene but it is very scene dependant, in some instances it can lead to unwanted artefacts. There are multiple steps you can take to avoid this happening. This parameter is optional though I recommend turning it on, especially if you are pushed for time and to work through some of the solutions outlined below.

Option A

If you have the latest version of Vray (which is 2.0), there is an added feature called retrace threshold which improves the precision of the global illumination and helps eliminate light leaks when use light cache for when glossy rays is on. See here for more information and examples.

Option B

Set the filter to fixed and adjust the filter size to two or three times the sample size. So if your sample size is 150 mm set the filter size to 300 mm.

Option C

Within a material, scroll down to the options panel and set treat glossy rays as GI to always. Also turn off the use light cache for glossy rays if you have it on. By doing this you are telling the material to always use the secondary GI engine to calculate the glossy rays, which in this case is the light cache. It basically does the same job as use light cache for glossy rays but you can specify which materials within the scene use this option. So if there is a material that has unwanted artefacts, you can have it so that it does not receive GI from the secondary bounce but from the first as normal by keeping the setting at only for GI rays.

Although the default values are the recommended, I will explain a little about some of the parameters. The filter determines how rays of light are interpolated from the samples within the light cache, this means the type of filtering a group of samples goes through as they are merged into either larger or smaller groups depending on their distance from the camera. Nearest looks up the nearest samples to a shaded point/coloured pixel and averages their value and is best suited for secondary bounces. Then the samples that have the same average value are grouped.

Fixed looks up and averages all samples from the light cache that fall within a certain distance from the shaded point/coloured pixel. Again, larger values blur the image whereas smaller values increase noise. This filter type is best suited if the light cache is set to primary GI engine for test purposes.

The interp samples controls how many of the neighbouring samples are merged together from the light cache. Pre-filter is one of those options that is great if you are really pushed for time and you need to get your work out but you still have some artefacts that won’t go away. Turn this on and hope it fixes your problem. It basically smoothes out the result and you end up losing light and shadow definition if it is set too high. If you do turn pre-filter on I suggest setting it to around 100 samples, this will take a load off the calculation that is done during render time but as I have mentioned, the result may be less than satisfactory. If you set the samples too high then your rendering time will increase dramatically.

Conclusion

As I mentioned early on, this is a work flow that I use 99% of the time for my still renders and it suits the type of work that I create, rarely do I need to tweak the settings. Hopefully this guide will have given you a solid explanation of the areas you must attend to when working on an interior scene and ways to overcome problems if you happen to run in to any.

If you have any questions about this post feel free to leave a comment and I will do my best to answer as soon as possible.