Comments (3)
A related issue is how we deal with rays which are exiting from the surface when the surface is locally (e.g.) a metal.
Arguably one can make sense of this by assuming the metal must be a thin sheet of foil covering the interior dielectric, so we would reflect from this foil back into the interior. This would allow for rendering of e.g. bottles with metallic labels, with the label visible through the glass (without the need for modelling a separate label).
This still seems like the best way to reason about the meaning of a mixture of metal and transmission to me. If the surface is being hit from the inside, then the bulk must have been transparent, so the metal must be a foil on top of the surface.
from openpbr.
A related issue is how we deal with rays which are exiting from the surface when the surface is locally (e.g.) a metal.
Arguably one can make sense of this by assuming the metal must be a thin sheet of foil covering the interior dielectric, so we would reflect from this foil back into the interior. This would allow for rendering of e.g. bottles with metallic labels, with the label visible through the glass (without the need for modelling a separate label).
In general though the interior properties are (currently) ill-defined if different parts of the surface specify different base interiors (i.e. metal, diffuse, subsurface, volume, or a mixture thereof). For the moment it probably has to remain implementation-dependent how this is handled. In the spec we just say something vague about the implementation "doing the best it can to make sense of it":
This physical picture of the mix operation becomes somewhat unrealistic in some cases where the bottom-most bulk materials being blended are not obviously consistent (e.g. blending dielectric and metallic bulks), but in such cases it is understood that the implementation should do the best it can to make sense of the physics (e.g. the metal bulk could be considered to actually be surface metallic flakes on top of a single consistent dielectric).
from openpbr.
I think the effects I described are implicit in the physical description, so we don't need to elaborate on them. Implementations typically won't bother modeling these, but in future renderers which e.g. do full MC light transport in the layer structure, they might attempt it.
I could perhaps add a couple sentences to the spec noting that the entering/exiting rays encounter the layers in different order, which in principle should be accounted for in the layering math, but it isn't strictly necessary.
from openpbr.
Related Issues (20)
- Anisotropic roughness in MaterialX implemetation differs from the specification HOT 1
- Parameters related to volume shading have not been used in MaterialX implementation HOT 1
- Anisotropy direction parametrization HOT 26
- Update transmission in default example material
- Oren-Nayar roughness parametrization is not sufficiently clear HOT 5
- Proposal: Fuzz/sheen can darken as well as lighten HOT 3
- Visual discontinuity at `transmission_depth` of zero HOT 8
- Minor errors in Glossy-Diffuse section
- subsurface weight has incorrect uifolder HOT 1
- Add formula for the average albedo of the F82-tint model HOT 2
- Proposal/Request: Decouple coat roughness from transmission/refraction HOT 4
- Default value of transmission_dispersion_abbe_number is not between uisoftmin and uisoftmax HOT 2
- Layer inconsistencies between the whitepaper and the reference implementation HOT 3
- Proposal: dual specular roughness sliders with mix HOT 3
- Proposal: Remove uifolder prefix from uiname strings HOT 2
- Coat and Fuzz parameter order inconsistent between specification and reference implementation HOT 2
- Specular weight > 1 can cause energy gain in metals, and NaNs in dielectrics HOT 4
- Suggest Hoffman approximations for Fresnel factor of metal under coat/film
- Give an explicit suggested formula for fuzz base-roughening
- Add emission_weight HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openpbr.