Show Us Your Iray Renders. Part III

1131416181950

Comments

  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969



    Iray clamps all the mixes/layers to be between 0 and 1. Breaking the limits to pass values outside those ranges will have no effect.

    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.

  • 8eos88eos8 Posts: 170
    edited December 1969

    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.

    Great, that's how I assumed it would work, having used the shaders in Unreal Engine (another PBR system). Thanks for clarifying this.

  • 3D-GHDesign3D-GHDesign Posts: 678
    edited May 2015

    At first, thanks...but any other way? drag and drop is not working for me :(

    DAZ_Vince said:
    Here is a quick video on how to use Shader Mixer with MDL and AXF files. Again sorry for the poor audio, my wireless headset is acting up... I'll be making new recording for the docs...

    http://www.youtube.com/watch?v=XWwZtzu98ac

    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

    Post edited by 3D-GHDesign on
  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969

    At first, thanks...but any other way? drag and drop is not working for me :(

    DAZ_Vince said:
    Here is a quick video on how to use Shader Mixer with MDL and AXF files. Again sorry for the poor audio, my wireless headset is acting up... I'll be making new recording for the docs...

    http://www.youtube.com/watch?v=XWwZtzu98ac

    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.

  • 3D-GHDesign3D-GHDesign Posts: 678
    edited December 1969

    Thank you :) Yes, I updated my post ... crossposting .. I noticed this so it is working fine now :)

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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 .


    But every layer you dial on steals from the layers below it.
    .
  • jag11jag11 Posts: 885
    edited December 1969


    I'm not sure. if there's a way to get the eye vector and the normal vector you might be able to hook the dot product up to hide back-facing surfaces, but I'm not sure how you'd hide layered front-facing surfaces (if it could be done it might help with the Geometry Shell issue).

    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.

  • Arnold CArnold C Posts: 740
    edited May 2015

    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.

    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:

    Post edited by Arnold C on
  • Oso3DOso3D Posts: 14,889
    edited December 1969

    MEC4D said:
    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 .

    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

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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


    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:
  • Joe CotterJoe Cotter Posts: 3,259
    edited December 1969

    Just for metals?

  • ErdehelErdehel Posts: 386
    edited May 2015

    MEC4D said:
    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


    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:

    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.

    Post edited by Erdehel on
  • Arnold CArnold C Posts: 740
    edited December 1969

    MEC4D said:
    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

    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:

  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969

    MEC4D said:
    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

    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

  • ErdehelErdehel Posts: 386
    edited May 2015

    This MDL-stuff makes PBR even more complicated as already. :gulp:

    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.

    Post edited by Erdehel on
  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969

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

  • MEC4DMEC4D Posts: 5,249
    edited May 2015

    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


    Gedd said:
    Just for metals?
    Post edited by MEC4D on
  • Arnold CArnold C Posts: 740
    edited December 1969


    Its "fresnel(ior)" not "ior". "fresnel(ior)" is usually less than one for standard ior values.
    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/.

    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.


    On the bright side once the concepts are understood and mastered it is so much simpler to explain stuff LOL
    Very true. :)
    Poor PA's, they've got so much to learn (and to unlearn) if they want to hop on the PBR-train. :lol:

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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

    For what do you have got a "Fresnel Metal Top Layer" on your human skin? :ahhh: :lol:

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    custom or measured curve is not physical correct ..


    Then a fresnel, custom or measured curve is less harmfull than a weighted layer.

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    I am playing today with layered Fresnel IOR stuff

    base metal based on Fresnel IOR masked to show off rust bellow the layer

    IRON_RUSTED.jpg
    1920 x 1080 - 1M
  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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 ?

    ]
  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969

    MEC4D said:
    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.

  • Arnold CArnold C Posts: 740
    edited December 1969

    MEC4D said:

    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

    No worries, it won't explode... just smoke a bit. :)
    Agree. That's why I'm using Fresnel IOR wherever I can.
    Used coconut oil ior on mine. Of some stuff even Genesis' cosmetics must be made of. :)
    Maybe that's because even the "official" Iray Optimized Material is made of pure water.
    And I remember I've seen something organical having an IOR of 1.0.

    custom or measured curve is not physical correct ..


    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?

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    Thanks ! too bad :(

    MEC4D said:
    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.

  • Arnold CArnold C Posts: 740
    edited December 1969

    Just to let you know that there is a new beta build available: 4.8.0.53.

  • Oso3DOso3D Posts: 14,889
    edited December 1969

    Does IOR apply to skin even when refraction weight is 0, with SSS?

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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 .


    Nice and realistic looking engine. I guess that belongs to the VW you showed renders of before?

  • MEC4DMEC4D Posts: 5,249
    edited December 1969

    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

    Does IOR apply to skin even when refraction weight is 0, with SSS?
  • DAZ_cjonesDAZ_cjones Posts: 637
    edited December 1969


    MEC4D said:
    custom or measured curve is not physical correct ..

    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.

This discussion has been closed.