Show Us Your Iray Renders. Part III
This discussion has been closed.
Adding to Cart…

Licensing Agreement | Terms of Service | Privacy Policy | EULA
© 2025 Daz Productions Inc. All Rights Reserved.You currently have no notifications.
Licensing Agreement | Terms of Service | Privacy Policy | EULA
© 2025 Daz Productions Inc. All Rights Reserved.
Comments
It might clamp when a single layer is above of the 1.0 limit, but from my observations I really doubt that it does when the sum of the combined layer weights of a material exceeds it. Using evaluated data and setting each layer to a 1.0 weight gives some strange results.
The photo-real setup in Iray guarantees conservation of energy. The surface will at most reflect the amount of energy it received. It may reflect less but not more. Each layer handles some portion of the energy. It reflects it, absorbs it, or transfers it to the layer below it. Setting a layer to 1 just means it will do its full effect. Sometimes that means it transfers no energy to layers below, sometimes it means some energy is still transferred down. A layer's weight is it's mix with all the layers below it, not its weight in the total setup. Mixes (not layers, see the mdl spec for the difference) are normalized or clamped so the components of the mix sum to one. The Uber material uses both mixes and layers for different effects. The Weighted Mode for instance uses a Normalized Mix to combine glossy and diffuse. Even though both may total to more than one, under the hood they are proportionally normalized to sum to 1.
Conservation of energy does not guarantee you create realistic looking materials or even good looking ones. For instance a surface set to full white (1.0,1.0,1.0) diffuse is not realistic because it reflects more light than any true surface in the real world reflects. A metal set to the same value has the same issue. Its possible in mdl to reflect or refract without accounting for the fresnel effect which is not realistic either. But every layer you dial on steals from the layers below it.
The exception to this setup is emission which adds energy to the scene. In this case however what you've really done is add a light source. The light from this source will transfer throughout the scene in an energy conserving manner.
Great, that's how I assumed it would work, having used the shaders in Unreal Engine (another PBR system). Thanks for clarifying this.
At first, thanks...but any other way? drag and drop is not working for me :(
Forget it.....I had to add the directory at first. even if it was the nvidia built-in mdl
btw really need some update... the latest version is very unstable, I got 3-4 crash daily. the previous one was really stable, I didn't got any crash even with all day long rendering and working
You can insert the custom mdl brick and manually type the relative path to the mdl. Make sure the mdl you are trying to import is in a mapped mdl path these are not the same as mapped content paths.
Thank you :) Yes, I updated my post ... crossposting .. I noticed this so it is working fine now :)
That what I said pages ago .. that why there will be never a one perfect setting for the skin, as each skin diffuse have different luminosity (brightness) values that will affect the layers below or above ending in too light or too dark effect in the final BEAUTY , all values for the skins found on internet are based on a sample scan of a person not of a sample skin from a picture for that reason the diffuse maps need to be adjusted to match the values and not vice verse .
AFAIK there's no way to do that on the MDL level.
But, the way to go would be specifyng the Geometry's Cutout opacity property. The visible parts on White(1), black(0) otherwise.
Another way could be by creating a procedural texture on MDL or shader mixer and use it as the Cutout opacity, but we require to know the width, height and depth of the object(our ghost) and simply return the texture with black for position beyond half the depth.
If anyone knows how to get these Width/Height/Depth values please enlighten us.
Ooookay. I guess you mean this one: NVIDIA MDL™ - Material Definition Language. (It almost seems typical for NVIDIA theese days to hide their links to their more interesting stuff in the fine print. It took me ages to localize it. Duh.) The doc is pretty actual, and if I saw it right, DAZ uses MDL version 1.2 already, although most of the sample shaders still are 1.0/1.1.
Didn't read all of it, since I'm not very interested to write shaders myself (not yet, what do we have DAZ and all the PA's for? :-P), only the part for the distribution functions (21.5, Page 98 ff.).
Let's see if I got that right in that short amount of time:
the mix controls the BSDF (Reflection/Specular), EDF (Emission) and VDF (Volume scattering) functions. As a user you don't have a direct control over that. If they sum to an amount above 1.0, they're either normalized or clamped, depending on the mix. (Clamping sounds terrible, if two of the functions add up to above 1.0, the remaining function is weighted 0.0, which means it´s influence will completely dropped. So you still have to watch out what data you type into your layers.)
But the most interesting part is that one about the layers. Seems NVIDIA (despite their hideous habits) was so clever to build a f(ool)ailsafe into their MDL. The weight of the Base Layer is 1 - (minus) weight of the Top Layer(s). In that case it would be mandatory to set the Base Layer always to 1.0, since it's weight will be automatically reduced by the influence of the Top Layer(s) anyway. In that case you have to make sure that:
- a Top Layer shall not be weighted 1.0, too, because that will kill the Base Layer.
- the combined weights of the Top Layers shall not sum up to 1.0, or... see above.
Correct? Objections?
So instead to have to watch out that the sum of the layer weights don't exceed 1.0, you have to watch out that your Top Layers weights don't reduce your Base Layer's to 0.0. Harness the horse from the other side. That's some vital information missing in the Iray Uber Shader IMHO.
But at one point I was correct: the sum of the Layer Weights shouldn't exceed 1.0. Just I didn't knew that NVIDIA already took care of that.
:lol:
Yeah, and I've found similar with hair. Blond, black, auburn hair all reacts in weird distinct ways, and suggest different approaches to pull them off.
Light skin with a pink undertone, light to medium olive tone, warm dark skin vs. cold dark skin ... all of them distinct.
https://leadingpersonality.files.wordpress.com/2013/09/average_faces_01.jpg
https://leadingpersonality.files.wordpress.com/2013/09/averageface.jpg
Woo
Not in all cases , when I make my Fresnel metal top layer I want it to be on 1 lol so it do its work
it will not always take off the base color depends of angles but that is only for Fresnel reflections
base should be always on 1
Just for metals?
Well reading this I am still wondering if this is completely proportional. i.e.:
Base layer 1, Top layer 1 means
A) 0.5 for both layers. (1+1)/2
B) 0 for the base layer and 1 for Top layer (Top proportionally supersedes Base)
C) something else. f(Base)-f(Top)=1
Didn't have enough time to read and compute NVidia's MDL document.
This MDL-stuff makes PBR even more complicated as already. :gulp:
"Add an elemental or compound BSDF as a layer on top of another elemental or compound BSDF according
to weight and a Fresnel term using a dedicated index of refraction for the layer. The base is weighted
with 1-(weight*fresnel(ior))."
That would mean that even vacuum (IOR 1.0) would kill your base at a weight of 1.0 [1-1.0*1.0] if it hadn't a specular color of 0.0 - 0.0 - 0.0, but anything above will... depending on the viewing angle.
Per definition in the MDL the IOR is a uniform float type, which, if I remember correctly, won't change in spite the weight of the layer is set to 0.1 or 1.0, a 1.5 stays 1.5.
For what do you have got a "Fresnel Metal Top Layer" on your human skin? :ahhh: :lol:
This MDL-stuff makes PBR even more complicated as already. :gulp:
"Add an elemental or compound BSDF as a layer on top of another elemental or compound BSDF according
to weight and a Fresnel term using a dedicated index of refraction for the layer. The base is weighted
with 1-(weight*fresnel(ior))."
That would mean that even vacuum (IOR 1.0) would kill your base at a weight of 1.0 [1-1.0*1.0] if it hadn't a specular color of 0.0 - 0.0 - 0.0, but anything above will... depending on the viewing angle.
Per definition in the MDL the IOR is a uniform float type, which, if I remember correctly, won't change in spite the weight of the layer is set to 0.1 or 1.0, a 1.5 stays 1.5.
For what do you have got a "Fresnel Metal Top Layer" on your human skin? :ahhh: :lol:
Its "fresnel(ior)" not "ior". "fresnel(ior)" is usually less than one for standard ior values. It's often computed with Schlick's Approximation
On the bright side once the concepts are understood and mastered it is so much simpler to explain stuff LOL
I'm out. Bed calling.
If anyone is interested in understanding mdl, NVIDIA has posted a mdl hand book video. You can look at the hand book on http://mdlhandbook.com/.
I did not said just , I give example with metal, the same go for water, glass and other stuff
and I mean Fresnel(ior) not typical index of refraction IOR, as I was talking about reflection
Ah, okay, it's R(0) then. Thanks for the clarification... and the links! It didn't let me watch the vid, but the handbook will do. Very helpful. :)
Then a fresnel, custom or measured curve is less harmfull than a weighted layer.
Oh Stefan calm down before your head explode .. simple is beautiful !
Fresnel IOR reflections, seems like looks so much better and natural to the scenes and surfaces .
I used Aragon Oil fersnel ior for the skin no metal what is 80+
I saw people already putting Index OF Refraction in the skin materials..things getting crazy hahahahah
we may be made of water in higher percentage but that is bellow the skin surface lol
custom or measured curve is not physical correct ..
I am playing today with layered Fresnel IOR stuff
base metal based on Fresnel IOR masked to show off rust bellow the layer
You know maybe why shader baker don't works when using Iray for rendering in interactive mode so I can render out AO into my maps ?
Iray doesn't currently have the ability to bake shaders.
Good to know. Wasn't keen to either have to calculate or looking up for the values.
Digged trough dozends of websites to get to my tiny collection of IOR values.
Nice and realistic looking engine. I guess that belongs to the VW you showed renders of before?
Thanks ! too bad :(
Iray doesn't currently have the ability to bake shaders.
Just to let you know that there is a new beta build available: 4.8.0.53.
Does IOR apply to skin even when refraction weight is 0, with SSS?
Agree with you Stefan .. I got my precision German gen from my mother that don't allow me to rest unless everything is the way it should, what a pain in donkey lol
Yeah! thanks the street HDRI is from the VW render ..good eye
I did not liked it in the beginning but now seems like my favorite for non organic renders due to nice top reflections ,so great for cars and other reflective materials, not much for human skin .
the Top Layer Fresnel IOR amount of reflection will be dependent on the viewing angle of the surface following the Fresnel equations which depends on the IOR value
Beside that the skin still have own glossy specular what is 51 to 63 RGB
you don't use index of refraction on skin in any values , so zero for the refraction weight
Good to know. Wasn't keen to either have to calculate or looking up for the values.
Digged trough dozends of websites to get to my tiny collection of IOR values.
Custom curve and measured "can" be physically correct, but they don't have to be. Custom curve with 0.04 normal, 1.0 grazing and 5.0 exponent is correct for most plastics for instance. Custom curve is part of how the PBR modes in the uber are implemented.