View Full Version : Shiny reflections

Dan Ritchie
10-04-2018, 12:59 PM
It seems to turn on reflective fresnel, but

what EXACTLY does it do, as specifically as possible? How does it effect other things. What is the exact technique. What is the math?

10-04-2018, 02:03 PM
You're asking about precisely what the "Glossy Reflections" switch controls, is that correct? Or are you referring to something else?

If the former, a full, detailed official explanation would be quite welcome, agreed.

Morgan Nilsson
10-04-2018, 03:27 PM
You're asking about precisely what the "Glossy Reflections" switch controls, is that correct? Or are you referring to something else?

If the former, a full, detailed official explanation would be quite welcome, agreed.


This is not explanatory enough for you? What else would you like to know about, just out of curiosity on my end?

Dan Ritchie
10-04-2018, 04:40 PM
Yes, glossy reflections. Sorry my memory is a perpetual hindrance, as is my spelling

10-09-2018, 05:34 PM
Yes, as Morgan Nilsson says, do say if the docs need further work - I'd hate to think this is just a case of RTFW...


10-12-2018, 05:43 PM
Yes, as Morgan Nilsson says, do say if the docs need further work - I'd hate to think this is just a case of RTFW...

BeeVee, sorry, had a longer post, but lost it due to forum issue. I'll try and regenerate my problems with the description cited:

Describing functionality in context of prior versions of LW's behavior offers zero explanatory value to potential/new customers. Even for existing customers, such definitions require them to go figure out how prior versions behaved (if possible, and often, as opposed to how they were doc'd to behave), and then use that context to define the new behavior -- neither descriptively clear nor concise.

The first "checked note" description actually seems to contradict both the initial bullet point "Glossy Reflections" explanation, and the "circled i" note immediately above it -- they're not really "unified" together (as the "circled i" note points out w.r.t. Specular vs Specular Indirect buffers), and describing them as such actually makes it less understandable what "Glossy Reflections" controls. And again, see point #1.

The description of what's covered by the "Glossy Reflections" switch cites controlling contribution of "environment" in one place, "other objects" in another, which is both confusing and incomplete in both cases. A full enumeration of what it controls is needed.
IMO, everything from the initial bullet point "Glossy Reflections" description down through the first checked note needs to be replaced with a single concise and complete text description and tabular enumeration (which backdrop/environment/compositing contributors? which objects? custom objects as well?) of what the switch controls, which buffer they go to, etc. Any subsequent references should just link to that enumeration.

If you wish to follow with a separate annotation of how current behavior differs from prior versions' behavior, go ahead, but only after a description of current behavior exists that doesn't rely on reader having a priori knowledge or experience with Lightwave (current or prior versions).

I'm really not trying to beat up on you, honest. This is NOT "just a case of RTFW" though, and I'm a bit concerned you didn't appear to see the above as issues.

11-14-2018, 08:23 AM
The PBSDF material is implemented as per the Disney PBSDF model, which unifies a series of reciprocal, energy conserving models, under one roof, with weightings, so you can blend between them, blending a Diffuse/Specular model for dielectric materials, a specular/subsurface model, a specular / specular refraction model, with absorption, for simulating transparent dielectrics, and above all a conductor model.

Each one is stacked in that order of priority, and is reciprocal, so you never get a sum of models in such a way as to not give you back more reflected or refracted rays greater than 100%. Each model contains a Fresnel simulation (in this case it's a simplified Schlicks approximation, which is easier to control from an artistic perspective, but guided from physically based references, but unlike the simpler earlier Fresnel model in LW, this responds to microfacet theory, and uses the GGX microfacet shading model, which more closely approximates physical reference sources (you can read about this in the 2015/2018 Disney papers on principled BSDF implementations). As each specular model becomes 'rougher', the limb of the Fresnel (F1) approaches the value at F0, because more rays become forward facing, thus lowering the apparent effect of the Fresnel falloff. Because of the increased complexity of the GGX specular, with microfacet mode, blurry reflections can be slower than they were in 2015 and lower (for indirect rays), but because of ray integration and a generally faster raytracing core, that is somewhat ameliorated.

The dielectric model for specular (as used for diffuse and subsurface dielectric, but not transparent, or metallic / conductor Fresnel) uses an approximation of a Fresnel range between 1 and 1.8, which maps to 0% to 100%,though if you have a value of 0, it disables Specular for situations where you may want to disable the Specular, (for microfibre materials, in which case you would use sheen instead, or highly porous materials, in which case you should increase roughness to 1005 regardless, to modify the Diffuse model to look correct, as it reciprocates). a value of 50% is equivalent of a Fresnel value of 1.5, which is the most common value to use, and therefore the default (and in many game engines baked in, giving you no access to it, for the sake of simplicity). Typically in the PBSDF model, most of the work is done using the roughness input. By design all of the inputs are mapped to best work on 0-1 input variables (0-100% in the interface) so that they can be textured using normal black and white maps, so in this case you will often find most PBSDF maps don't come with a specular value map for this reason.

In the case of the transparent dielectric, the value input uses the IOR input, as this tunes both the reflection and refraction inputs, with again the roughness controlling doing much of the work, as well as an abortion depth and colour to control how light is absorbed by the material.

Finally (and there are other additional effects, such as sheen which is designed specially for microfacet/fibre models, such as velvety cloth, and specular tint, for subtle specular tinting towards the base colour) where instead of a dielectric specular simulation,, there's a metallic Fresnel approximation, which uses the base colour as the facing value, so you can make any colour of metal (albeit somewhat simplistically, there are more complex metallic simulations possible). but again, this is a artistic and friendly texturable material. Want copper, make the base colour copper colour, make the material 100% metallic, and adjust the roughness. Metals, are in fact not a solid colour, they also go towards white on the limb (F1), but like the dielectric simulation, roughness moves the limb towards the F0 colour.

In terms of rendering, there's Direct and indirect rays for everything (and this is reflected in most available buffers for the artists) glossy rays are the indirect reflection rays. In the case of specular, (reflection) and refraction, the glossy rays setting in the surface and the ray recursion depth affects it, and in the case of diffuse, sss, and thin sss (translucency) it's controlled by the diffuse depth, and the radiosity engine chosen (interpolated or MC). Each of the properties can have it's own ray depth to optimise render time, and rays per spot evaluation (radiosity being it's own special case). Direct rays are the rays from lights, and will result in much faster renders (as always) and importance sampling to help reduce noise. Most of the noise is (and should be) from indirect samples, because of miss chances. In the case of both montecarlo radiosity, and indirect specular samples, there's a weighted (according to the shader model) lobe sample of the environment: a diffuse sample is a hemispherical , whereas specular is more like a teardrop (you can see examples of the BSDF shader lobes, I think Pixar has a 3d model of it https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function) which sends out rays at random, stochastically, and the higher the contrast in the environment/scene the more 'noise you get'. this is however no different to earlier versions of Lightwave, it's just the sophistication of the shader models, which are far more accurate in terms of physical reality (specular was horribly wrong, before 2018).

11-14-2018, 12:26 PM
(great general BSDF explanation snipped)

Tobian's explanation (edited a bit to remove the first-person parts) is a great example of explanatory documentation. It doesn't rely on the reader having a bunch of a priori knowledge w.r.t. either Lightwave or rendering (other than a basic understanding of 3D gfx & surfacing/rendering), and continually makes an effort to provide the reader with references on where to look for more info. With a few tweaks, it would be a great addition to the "Getting Started with Surfacing" and/or "Photoreal" shading model reference section of the LW docs.

That's precisely the kind of explanatory info too often missing in the current docs -- enough detail about model to help readers understand and predict how and why the app behaves as it does, without getting bogged down in too much detail, and without relying on the reader having extensive a priori knowledge of what's happening behind the scenes.

To be clear, I'm not suggesting the existing docs are horrible, they're quite good in some areas. I just think too often the docs rely on the reader being deeply familiar with how Lightwave worked in the past, which leaves new/inexperienced users (and even intermediate users from other packages) out in the cold. Even if they did have an easy means to obtain such info (and they don't), it's still more efficient to explain to them how the current package works in its own context, as opposed to requiring them to understand how Lightwave "used to work" in order to understand how it works now. Hopefully that make sense.

11-14-2018, 03:26 PM
The manual should be ideally written from both perspectives. Ideally new users will come to LW, but a lot of the customer base are old users, so conversion is and was a major consideration. Both in terms of old lw users and old everything else users there's a huge knowledgebase of crap advice and very wrong ideas about how all this works to fight against. It's not perfect, and every paper in this points towards improvements they hope to make, but people don't believe you, and fight and argue it's wrong, despite it being based on hundreds of physical media samples. I've tried and failed to explain it better. It's really hard! I started videos on it several times and gave up, as there's so much to know...