Search This Blog

Welcome to Rendering Tutorial Site

Welcome to Rendering Tutorial site. This site is develop to help artist, architects, advertisers, visual artists and hobbyist a place to share, gain and learn from tutorial writers, important knowledge, tricks and tips in using rendering and image processing software. Some of the link here were cross posted from other sites, some of them were develop for this site, and some of them were shared wholeheartedly by different individuals.

Friday, 25 November 2011

11 most realistic renderings you have ever seen

11 most realistic renderings you have ever seen

Mintviz Initial interior setting

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 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.

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.

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.

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 subdivisions within your scene in one hit. This includes light samples, material samples, motion blur and DOF. It is a quick way of increasing your subdivisions so that you don’t have to go through each light, material etc. and have to set the subdivisions one by one. For example, if your light has 10 subdivisions, by setting your global subdivisions multiplier to 2.0 your light subdivisions now becomes 20. If it is set to 0.2 it will lower your light subdivisions to 2.

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.


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.
MintViz is the owner and author of this content. Please click the following link to be redirected.
Under Creative Commons License: Attribution Non-Commercial

Monday, 21 November 2011

Vray DMC Sampler

Demystifying V-Ray DMC Sampler
Toni Bratincevic


In this tutorial I will focuse on giving you the basic technical background of DMC sampler, but before we go into any technical details about DMC sampler, we will go over alternative sampler integrated in VRay, Adaptive Subdivision sampler. I won't be mentioning fixed sampler technique since it's pretty straight forward and in case you don't know how Fixed sampler works, it will be easy to figure out from gained knowledge. Adaptive Subdivision sampling is a technique used in almost every other biased render engine on market. It's relatively old technique and behaves very good in most of the cases. It will give you clean and well sampled image, it's perfect for rendering still images, but compared to DMC sampler it usually oversamples image in places where you can make it even with lower number of glossy reflection samples (for example). As I said, subdivision sampler can be found in most of the competitive biased render engines but it seams to me like some of these engines, based on positive user experience from VRay, are jumping on board and delivering some similar sampling algorithms like DMC. There is one render, that I know, that is using similar technique to DMC and both renders are more and more being used in high end production environments for this reason ... DMC is by far the best raytracing based technique to get in camera depth of field and 3D motion blur with reasonable render times.

Sampling process, Adaptive sampling

Common thing about all biased engines is that most of them are adaptive. What does that mean? Let's simplify it for now and take area of 3x3 pixel resolution for next examples. When you click render, Vray, or some other render, will cast initial 9 samples, which means one sample per every pixel... for now we will assume that samples are taken at the center of pixel.
For those of you who don't know too much about how raytracing works, let's go over it quickly, it's very simple. Imagine that you have a camera and have a grid in front of that camera representing resolution of your final render (3x3 in this example). Let's say you have some objects that are placed inside the scene. When VRay starts rendering it will draw the line from center of the camera going through the mid area of pixel (individual grid box) to the nearest object that intersects that line. Vector is actually cast from point of camera and it's blindly going forward into the scene until it hits something. Point where eye ray hits something (object) is intersection point and that's when render will start to calculate all the color information about that object at that point in space(is it reflective, refractive, what color is it etc, how it reacts to light, is it in shade or directly lit etc...) and it will return collected information to VRay saying this is the color behind that pixel and that's the way you should color that pixel. Ray casted from camera is called eye ray or primary ray, every other ray cast from material to collect information about light, gi, reflections etc is called secondary ray. Remember this because we will be mentioning these two types of rays in this tutorial. Let's go over simple illustration for better understanding of raytracing...
Same procedure is done for every pixel in that 9pixel grid space, and you basically get your image. The problem over here is that every pixel got only one sample, and that sample only returned color information about one infinite small point in space, which was intersection point or eye ray and object. In reality however, if you put that grid in front of your camera you would actually get not only one but average of infinite number of points sampled behind that pixel. Since that's almost impossible to do in rendering engines, you can't just shoot infinite number of rays in render engine because it would take forever, programmers developed some smart ideas how to oversample particular pixels or part of that grid where it's needed. That's called adaptive sampling, since number of rays are adapting based on the complexity of the rendered image ... so in areas where there is high contrast between pixels it will cast more samples, let's say it will send 25 rays into one pixel and average that result, where in the areas where we have constant color or empty space it will send only one sample and will not waste any time oversampling those pixels.
Next few images show the benefit of adaptiveness ... first example is made with 1 sample per pixel only, second one is made with 100 fixed number of samples for every pixel and the third one is adaptive technique made with minimum 1 and maximum 100 samples per pixel... you can clearly see how much time is wasted when doing fixed sampling compared to adaptive sampling that is way faster and we are getting almost same quality as in fixed sampling.






Now, common thing with Adaptive Subdivision and DMC samplers is that both of these are adaptive, but they work in different way. Let's start with subdivision sampling because that's the oldest technique and it's good to know something about it since I will try to point out benefits of using DMC, but I can't do it before you get a good feeling how subdivision sampling works.

Subdivision sampler

When talking about sampling in previous paragraphs I mentioned how initial samples are shot through the pixel center. Subdivision sampler actually works in different way, samples are not placed in the pixel center but in the pixel corners like in next image:
After initial rays are cast into the scene and information is collected, subdivision sampler analyses this information and decides which pixel needs more samples and which one doesn't. For every pixel, samples that are taken at the edge of the pixels are used and compared... if the color difference is above color threshold (next image) defined in render options Vray will subdivide that pixel one more time and it will take more samples inside that pixel.
Based on Clr Thresh defined in render options, VRay will check if
difference in color between samples from edges inside pixel is
higher than threshold value, if it is, it will cast more samples
inside that pixel, if it's not, it will finish sampling and it will
return final pixel color.

initial samples are cast at the edge
of each pixel, color informations are
gathered. 1st pixel is very close to
color of 2nd pixel. Since color difference
is under threshold defined in
render settings, render will decide that
it's not worth adding more samples
to the pixels.

Color difference between 1st and
2nd pixel is very high, over
Color Threshold, which means
render will send more samples
to those pixels. Maximum
number of samples allowed will
be defined by Max rate. 2 in
this case means maximum 16
additional samples per pixel, plus
those already cast at the edges.
This process is done couple of times till color threshold number is met or if we hit maximum number of allowed samples per pixel defined by Max. rate. Remember, that max subdiv value set in Subdivision sampler doesn't represent maximum number of samples taken per pixel, it represents how many times the pixel will be subdivided, which means 0=1 samples,1=4,2=16,3=64. Remember that some samples are shared between pixels (on edges) so basically if you set Max Rate to 2 it will actually use 25 samples for that pixel... 9 local for that 1 pixel only plus 16 (on edges) shared with other pixels. For Max Rate 1 it's 1 local sample per pixel and 8 shared with other pixels. Let's go over next image for more intuitive explanation:
... for some pixels more samples are cast, for some less, it all depends on color contrast difference from samples inside and on the edge of the pixel. This example has Subdivision sampler set to Min 0 Max 2, which means 1 initial sample is cast per pixel, but since it's at the edge of pixel it's shared with surrounding pixels, and then based on color difference, oversampling can go up to 16 additional samples per pixel.
Now, the main problem over here is that the subdivision sampler only bases his decision to take more samples to the pixel on information gathered at the edge of that pixel. It basically doesn't know complete color information of surrounding pixel, it only knows what's going on at the edges of those pixels. This works in some scenes, but in situations where there are a lot of tiny objects and detailed textures, samples color information coming only from the edges is not enough. What we need to make a good decision to oversample pixel is full color information of surrounding pixels. That's exactly what DMC sampler is doing, and for that reason in highly detailed scene with a lot of thin lines (for example) DMC sampler will make a much better decision where to place those additional samples inside the scene and the final image, specially if we are talking about animation, it will be cleaner, more stable, without some sharp changes from frame to frame. Next image shows this:
... rays inside pixel is based on color information gathered at the edge of pixel. This is specific to Adaptive Subdivision sampler and can create problems when sampling a scene with high amount of details where knowing complete color information surrounding individual pixels would be more efficient.

... has a big problem sampling thin objects in the scene.
In this simple example you can see how lines are cracked,
not enough samples are cast into areas where needed,
and only because adaptive subdivision sampler is
basing it's decision to sample more on information it gets
from edge of pixel. In this example I've set Color Threshold
to 0.01, Min subdivs to 0 which means 1 initial sample
per pixel, and Max Subdivs to 3 which means if needed
it will subdivide pixel 3 times casting maximum 64
additional samples. Maximum 64 samples is more than
enough to get nice lines but V-Ray just doesn't
get enough feedback from initial samples cast into the scene.
... doesn't’t have these kind of problems because it’s basing its decision on information gathered from complete pixels surrounding pixel that’s being sampled. Because of this, it can detect very thin lines and sample it in efficient way without any artifacts. As with subdivision sampler, DMC was set to Minimum 1 and Maximum 8 subdivs which in this case means it will cast initial 1 sample for every pixel, and where needed it will cast maximum of 64 samples. Color threshold was set to 0.01 like in subdivision sampler.
When using subdivision sampler, every area of the scene that is using some sort of oversampling to get clean results, like glossy reflection, refraction, brute force GI, DOF and motion blur will cast almost exact number of samples set in those options (subdivs), everything will be averaged together and combined into color information, and that color information will be compared to surrounding samples, and decision to oversample that pixel will be made. What this means is that if you have 20 samples available to sample depth of field, 10 for motion blur, and 100 for glossy reflection of the objects in the scene, it's possible you will calculate extremely high number of samples for one pixel. This will produce nice and clean result but at the expense of slow render times, because for every additional image sample taken inside that pixel you will be casting X number of additional samples for motion blur, DOF, glossies etc even if sometimes you don't need such high amount of secondary rays (reflection, refraction, shadow etc) to get nice sampling of the image.. This is where centralized adaptive algorithm like DMC comes into place... it actually controls every single area of the scene where more than 1 sample is needed to get clean information (like glossy reflection).
But before we jump to DMC sampler examples let's go over VRay DMC Sampler tab and how options from this tab are influencing rendering. Remember that this tab is not only used when DMC sampler is activated, it's actually active when Subdivision of Fixed sampling is active, the only difference is that when using Adaptive Subdivision sampler image sampling process (taking eye ray samples) is detached from taking samples (secondary rays) in materials like glossy reflection, where with DMC everything is combined into these options (image sampling and all other subdiv sampling in the scene).

DMC Sampler options

Let's go over these options one by one... you can also check VRay help, but maybe this will be easier explanation than one in help. I will be describing case where X number of glossy reflection rays are cast from material... which happens after image sample is taken from camera trough pixel and when that ray hits some object and material with that glossy reflection is called. Remember that these are extreme cases made to be different from image to image so that you can get a better understanding, but in practice changing these options can, and probably will, result in smaller differences.
Adaptive amount – example: if in material you have 100 samples (10 subdivs) available to sample some glossy reflection, setting adaptive to 0.5 will make Vray cast fixed amount 50 (50% of 100 available) reflection samples and then it will decide if you need more samples and how much you need. Actually after those initial 50 samples, more samples are cast 1 by 1 and every time new sample is taken, VRay compares it to averaged color of samples already casted. If contribution to that value is not so high it will stop taking more samples because it will figure out that taking more samples doesn't make sense since it's not contributing a lot to the ones already taken. If adaptive amount is set to 0.7 you will cast 30% of those 100 samples, 0 will cast all 100 samples and 1 (fully adaptive) will cast number of samples set in Min Samples option and after that it will be adaptive, taking only samples needed to clean up that glossy reflection. Min samples in last case is there for safety reasons because sometimes if Adaptive amount is set to 1 VRay can't make a smart decision if it needs more reflection samples based on only 2 initial samples taken for glossy reflection ... so with Min samples you are making sure that whatever you set in Adaptive amount, minimum number of samples taken for glossy reflection (or rafraction, shadow etc) will be 8, after which it will start being adaptive.
all reflection samples in material are taken for every eye ray that hits that floor
50% of glossy reflection samples are taken after which it glossy reflection calculation will become adaptive casting only number of rays needed to satisfy Noise threshold
since Adaptive is set to 1, Min samples is activated which means 8 initial glossy reflection samples are taken after which its glossy reflection calculation will become adaptive casting only number of rays needed to satisfy Noise threshold
Remember my visual raytracing explanation, let's go over this again but from a different perspective:
Noise threshold – if adaptive amount is set to 0.5, and if, let's say we have some material with glossy reflection in the scene with 100 available samples (10 subdivs), vray will cast 50 samples and after that it will be adaptive based on this noise threshold ... which means every new sample taken after initial 50 samples will be averaged with those 50 samples and if its contribution to those 50 samples is more than value defined in noise threshold it will send one more sample till it hits that noise threshold... but if contribution is not so high and is below noise threshold Vray will stop sampling that reflection and finalize glossy reflection calculation for that material. These are some examples to show how changing Noise threshold influences the quality of reflections. This is really important parameter and for finals should be kept in a range from 0.005-0.01.
Min Samples – If adaptiveness is set to 1 (fully adaptive), even if you have 100 reflection samples available to sample glossy reflection, Vray will cast only 1-2 reflection samples and it won't be able to make a smart decision if it needs to take more samples. To prevent this, Min Samples is the bottom limit of number of samples that needs to be taken before adaptiveness kicks in. Vray will always take those 8 samples for every glossy value in the scene before it starts to be adaptive.
Global Subdivs samples – This is a multiplier for every value in the scene that needs some subdivision (multisampling) to clean up the result. This can be area shadows subdivs in area light, subdivs for glossy reflection or refraction, motion blur subdivs, DOF subdivs etc. So, for example, if you set glossy reflection in material to 10 and Global Subdivs is set to 2, subdivs in material will actually be 20 (10x2). If it's set to 0.2, it will lower that reflection subdivs and you'll have subdivs of 2. Raising this value up will get you a cleaner result but at the expense of render time. Remember that this influences every single Subdiv value in the scene, and I recommend if you have some sampling problems to go into specific material and tweak subdivs value rather than just taking an easier route and raising Global subdivs multiplier.

Welcome to non intuitive wonderland, DMC sampler.

With the knowledge we gathered so far it will be easier to figure out how DMC sampler works. First thing that we need to know, and it's a very important feature of DMC sampler, is that complete pixel information surrounding pixel that VRay is sampling is taken into consideration when deciding if it needs to oversample that pixel or not. Result of this is shown in the image we already saw, where I showed you a teapot with thin lines. But let's see this in a different form.
with Subdivision sampler only samples taken at the edge of the pixels are taken into account when deciding if pixel needs more samples.
with DMC sampler complete color information from surrounding pixels is used when deciding if center pixel needs more samples or not.
Maybe this doesn't sound so important, but it is, since it really helps to catch all the small details in the scene. Compared to DMC sampler, where initial samples are taken at the edge of the pixel, DMC sampler takes first samples at random points inside of each pixel, and if it decides to oversample one pixel it will not distribute samples based on regular grid like Adaptive Subdivision sampler, samples distribution in DMC will be more random without exactly defined pattern... although deterministic means it will follow some pattern but it will be based on low discrepancy numbers that has some form compared to QMC which was used in earliest version of Vray.
People are usually wondering what is the reason that DMC sampler can handle motion blur and DOF way faster than Subdiv sampler. The reason lies in the way DMC sampler controls and influences every single area of the scene where we need to do some oversampling (subdivs), and because of that you will cast lowest number of samples needed to get a clean pixel without oversampling some areas of the scene that won't influence the quality of the pixel in the end.
In technical terms this means that DMC sampler, based on maximum number of DMC samples set in DMC sampler rollout, will subdivide every single Subdivs value in scene (material, light, etc). This is not happening with subdivision sampler, and this is the main difference between these two samplers:
Let's repeat it again: if, for example, material X in the scene has glossy reflection and you set this to 40 subdiv, and light used in scene has smooth shadow that is using shadow subdiv of 10, by setting DMC max samples to 5, maximum number of glossy subdivs taken in that material (for one eye sample) will be 8 (40/5) and maximum number of subdivisions available for light shadow will be 2 subdivs. Remember, we are talking about number of sampler per every eye ray sent into the scene. But, if pixel that VRay is sampling needs more than 1 eye ray sample, and let's say we need maximum number of DMC samples which is 5 subdivs in this case (5x5=25 samples), it is still possible that VRay will use all 40 subdiv glossy reflection defined in that material, because for every eye ray sent into the pixel VRay will cast 8 subdivs (64 samples), and since it will cast Max 5 DMC subdiv samples (25 samples), 5x8 will make 40 reflection subdivs. Confusing?... maybe, it took me a couple of days to figure this out since it's not explained in Vray's documentation.
This represents a simple graphical way of describing how DMC handles subdivision of glossy values in the scene. Glossy reflection in material by default has 100 subdiv set. In 1st case DMC has maximum 5 subdivs for eye samples so by knowing that, it will lower number of subdivs in material to 20. In last case DMC knows that it can subdivide pixel 50 times casting maximum 2500 samples ... knowing that, it can oversample pixel so many times with eye rays taking only 2 subdivs reflection samples for every eye ray sent through pixel.
So now that we figured out how DMC subdivides every subdiv value in the scene, we can go over adaptiveness and how it's handled inside the scene subdiv values. This was straight forward in Adaptive subdivision sampler since that sampler didn't influence (divide) values around the scene.
Because of the way DMC works and how it subdivides every value in the scene that needs multisampling, adaptiveness options will play some role if you keep DMC Max samples really low. If you keep DMC Max Subdivs to 1 you will get same effect as with Subdivision sampler in terms of how much secondary samples will be cast for reflection, refraction, area shadows etc. But, since the nature of DMC algorithm, by raising Max DMC setting really high, let's say 50, adaptiveness will not play any role after some point and you can just forget about it. The reason for that is that if you set Max DMC to 50 (for example), Vray will subdivide every subdiv value in the scene to 1, which means for every ray sample sent to the scene you will be sending only 1 glossy sample for reflection, 1 for area light, motion blur etc. The reason why Vray is doing that is that it knows that it can cast 50 subdivs eye samples, which is around 2500 eye samples in the scene and it still can get nice glossy reflections coming from material even if for every eye ray it's casting only 1 sample for glossy reflection.
The reason why this is useful is that in the scenes with 3D DOF, Motion Blur, a lot of glossy reflections etc... Vray will try to cast minimum number of samples needed to get a clean result. In these kinds of situations it's best to keep DMC values really high... and if needed, you can always go into the scene materials and tweak those individually where needed. Usually, when object is in motion and is blurred you don't need to cast so many reflection samples in its material because everything is gonna be smeared in the end. Subdivision sampler doesn't know this and will try to cast high number of samples for every eye sample, even if that glossy reflection color doesn't play big influence in final result. Next example is one simple case where I used Adaptive subdivision sampler and DMC sampler and you can clearly see how DMC sampler outperforms Adaptive Subdivision.
The biggest flaw of DMC is that it can be really confusing and counter intuitive to setup. Sometimes in scenes with a lot of details, many lights, motion blur and DOF it's good to keep DMC settings really high like Min 1 Max 50 because having Max DMC set to low value like 4 can increase render time drastically. Let's go over few practical examples.

EXAMPLE 01: Hair

Hair can be a big problem to sample. It has huge amount of small details and most of the raytracers can't handle sampling of hair in efficient and fast way. Adaptive subdivision samples performs worse in these cases, it just can't decide where it needs to place more samples. DMC on other hand performs quite good, it can sample hair really fast and without artifacts that you get with Adaptive subdivision sampler (broken hair strings, flickering). Given same time frame DMC will outperform Adaptive Subdivision sampler, which is clearly visible in next image. Settings that I used were for DMC Min 1 Max 50 Color threshold 0.02, for Adaptive Subdivision Min 0 Max 2 Color Threshold 0.5. I use really high Threshold value for Adaptive Subdivision because when I used 0.1 or 0.05 which is what should be used for animation, Adap Sub estimated render time went to about 20 minutes.
Now we are left with the question of what settings should you use for Hair. I usually put DMC Minimum samples to 1 or 2, and Maximum to 50. If you have some problems detecting small details in animation, setting Min to 2 will probably fix that. Color threshold can be pretty low like 0.02 or 0.005. Forget about DMC sampler options in Setting tab because Adaptiveness are basically ignored because Max DMC was set to 50 which subdivided almost every subdivs value in scene to 1... which means for every eye ray, VRay will cast only 1 sample to calculate area shadows, 1 for glossy reflection etc. In this case this works great since you know that because of complexity of hair number of eye rays needs to be really high (sometimes more than 100-300).
MIN 1 MAX 4 MIN 1 MAX 10 MIN 1 MAX 50
As you see 3rd image works best. Everything looks smooth and I can assure you that you won't see a lot of flickering, even in animation. When working at Blur I usually setup our passes in the way that I render hair as separate pass with Min 1 and Max 50 samples with rest of geometry set as matte (VRay properties) and then I composite hair in postprocessing, because there is no point of using DMC Max 50 for the rest of the scene (in most of the cases).

EXAMPLE 02: Flat surfaces, glossy reflections

Funny thing is that in some other situations having DMC set to 4 can lead to a cleaner image in less time. This is true for images where you have flat surfaces with some glossy reflections and not so many details, so you are more concentrated on sampling materials than sampling geometry:
MIN 1 MAX 10
MIN 1 MAX 50
MIN 1 MAX 50
MIN 1 MAX 50
MIN 1 MAX 50
Let's see what's going on with the sampler and how when changing DMC Max from 5 to 50 you will see more eye samples cast into the scene.
MIN 1 MAX 10
MIN 1 MAX 50
MIN 1 MAX 50
MIN 1 MAX 50
MIN 1 MAX 50
Strange, isn't it? First image where DMC sampler Max is set to 5 has just a fraction of the samples compared to DMC Max 50. Remember when I was explaining how DMC Max subdivides every glossy value in the scene. Well, this is exactly what's happening over here. For glossy reflection in material I set Subdiv value to 50, which means, in 1st case where DMC Max is set to 5 for every eye ray that hits that glossy floor it will cast maximum 100 (10 subdivs) reflection samples, but when DMC is set to 50 it will cast only 1 sample. Which means, for DMC set to 50 VRay won't be able to get clean reflection with few eye ray samples so it needs to send more eye samples to the pixels even if we don't need more eye ray samples since some areas are just flat surfaces with reflection.
Second row uses DMC Max 50 but I was tweaking reflection subdivs in material for floor and walls... you can clearly see how by changing Refl Subdiv you take load of DMC sampler (eye rays)... so, in situations like these don't be scared to bump up Refl Subdiv to 300 because when subdivided by DMC Max 50 you will get only 6 subdivs per one eye ray, and this can actually speed up your render and you'll get a smoother reflection.

EXAMPLE 03: Subpixel mapping (V-Ray: Color mapping tab)

Most of the times I'm using subpixel mapping to render my scenes and animations. If you are doing still images you can turn this option off if you want to achieve the most realistic result, but in animation where you are using in camera 3D motion blur and DOF, it will be wise to turn it on because your render time will go down and you will need far less samples to clean up DOF or 3D motion blur. Difference between using subpixel mapping and not using it is that with subpixel on, every eye sample that render takes, when sampling pixel, will be tonemapped first and then averaged with next samples if VRay is oversampling that pixel. When subpixel is off all the samples will be taken and averaged first and then when you get final pixel color VRay will apply tonemaping. This process is shown in next image.
... when Subpixel mapping is on every new sample taken inside pixel is tonemapped first (compressed to color scale you defined in Color Mapping tab or Camera exposure) and merged over existing pixel color.
... when Subpixel mapping is off, every sample is calculated and then they are merged together and finally when sampling is done whole pixel color is tonemapped forming final color value of pixel. This produces more realistic result but tends to introduce some noise to the image specially when using 3D motion blur and DOF.
In practice it looks like this:


... we can clearly see how this is reflected to final image. Image on the right with subpixel mapping on will produce cleaner results, it will render faster, but it will loose some brightness and it will produce not so realistic result.


... just by changing DMC Max value to 1, meaning that glossy reflection subdivs won't be reduced for every eye ray sent to pixel, we get same results as when turning subpixel off.
This is the reason why this difference is happening: when DMC is set to one, VRay will send one eye ray through pixel, it will hit that reflective floor and it will take 30 glossy samples for reflection... reflection samples are averaged together, they are merged with diffuse value of surface and tonemapped. Because VRay used those 30 glossy reflections in one reflection calculation we are keeping brightness the same as with subpixel mapping off. Compared to example where I set DMC to 50, which means glossy reflection subdiv will be degraded to 1 sample per eye ray sent through that pixel after which reflection sample is averaged with diffuse component and combined into sample and tonemapped. Because I was using Max DMC of 50, VRay will send a lot more eye rays into the scene to clean up that glossy reflection since for every eye ray sample it will get only couple reflection samples.
This can be compensated by going into material that's loosing its initial color and using higher number of glossy reflection samples. In my case if I had DMC set to 50 I can set reflection subdivs in material to something like 500, which means (remember that table?) that for every eye ray VRay will cast 10 reflection subdiv samples into the scene. This will keep reflection as bright as it was with subpixel mapping off but you will get all the benefits of having subpixel mapping on.


For scenes with huge number of area lights, using DMC can help a lot especially if you are using motion blur and DOF in camera. Next two images show this, I'm using about 100 area lights and you can see how DMC sampler outperforms Adaptive Subdivision sampler. Amount of noise in the images is almost the same, some areas in DMC are cleaner some more noisier than with AS sampler, but then keep in mind that I used Max 50 samples for DMC sampler which is quite high. Turning Lightcache on for Glossy Reflection in scenes with so many lights can help a lot, so keep that in mind when rendering these types of scenes.




One thing to remember when trying to eliminate noise or flickering in Irradiance Map is that IR Map is also controlled by DMC Sampler parameters in Settings tab.

The problem usually comes when Adaptive amount is set to 1 and, I assume, IR map is not casting so many initial fixed number of GI samples... so it won't be able to decide efficently if it needs to cast more rays or not. This can be compensated by lowering adaptive amount to some lower value than 1, which in second image is set to 0.5 and you can clearly see the difference in GI, or it can be fixed by raising Min samples to high value like 128.


Hopefully everything I wrote was easy to figure out although it get's confusing sometimes. I saw people confused about DMC sampler because of its unified core, and going back to subdiv sampler because it was more predictable, but believe me once you figure out the power of DMC sampler you will want to stay in that mode of thinking because you'll have complete control of your render engine sampling algorithm and you will be able to bring all the power of unified core to get faster render times and cleaner results. Happy rendering!

More of TOni's HERE.