Different renderers produce very different images for the same USD due to differences in how certain lights are interpreted. For example, here's Intel's Moore Lane scene rendered in Karma, Arnold and RTX:
The issue here is that each renderer has its own interpretation of the quantity to be emitted given a particular parameterization of the distant light representiong the sun. Karma appears to be emitting nits when normalize is off and "lux/pi at a patch facing the light" when normalize is on. Arnold and RTX both ignore the normalize flag, and RTX is essentially interpreting intensity as lux. RIS does something else entirely:
We need to update UsdLux to specify exactly what quantities should be emitted for each light and combination of its attributes so that lighting can be shared between applications and renderers.
- ✅ Form working group with major rendering authors and users to decide on specification
- 🚧 Enumerate all combinations of lighting attributes that affect the output and create contact sheets to show differences in implementation
- 🚧 Reach consensus on what the implementation should be
- 🚧 Draft a documentation update and/or new USD lighting Schema according to the decided specification
- 🔳 Implement spec in Storm
- 🔳 Merge to USD
- 🔳 Render happily ever after
Directory containing source renders for each scene/attribute combination, for each renderer
Nuke script used to generate the contact sheet images
Houdini project used to create USDs for testing, and to perform comparison renders in Solaris of Karma, RIS and Arnold. This project was used to generate the following USD layers:
A cylinder light of length 1, radius 0.5 and intensity 30, 2 units above a 100% diffuse reflective plane with the camera facing perpendicular to the plane.
- Karma, Arnold and RTX appear to match
A disk light of radius 0.5, and intensity 30, 2 units above and directly facing a 100% diffuse reflective plane with the camera facing perpendicular to the plane.
- Karma, Arnold and RTX appear to match
A distant light of intensity 0.5, directly facing a 100% diffuse reflective plane with the camera facing perpendicular to the plane.
- RTX and Arnold maintain brightness regardless of
angle
andnormalize
- RTX is
pi
times brighter than Arnold and Karma - Karma's brightness changes with
angle
whennormalize=0
- RIS uses a very different mapping of
intensity
to emitted luminance
A rect light of intensity 10, 1 unit above and directly facing a 100% diffuse reflective plane with the camera facing perpendicular to the plane.
- Arnold appears to ignore
focus
on a rect light - Karma and RTX appear to match
A rect light of intensity 10, 1 unit above and rotated at 45 degrees to a 100% diffuse reflective plane with the camera facing perpendicular to the plane. Used to test shaping controls.
- Arnold appears to ignore the spotlight controls on a rect light (but does respect them on a sphere light, see below).
- RTX ignores
focus
when spotlight shaping is enabled. - RTX and Karma's mapping for
softness
is very different. - RIS seems to interpret
coneAngle
much differently than the others.
A sphere light of radius 0.5, and intensity 30, 2 units above a 100% diffuse reflective plane with the camera facing perpendicular to the plane.
- Karma and RTX have the same normalization, Arnold is different
A sphere light of radius 0.5, and intensity 30, 2 units above and rotated at 45 degrees to a 100% diffuse reflective plane with the camera facing perpendicular to the plane. Used to test shaping controls.
- Karma appears to expect
softness
in [0, 1], while RTX uses a different mapping that can go above 1 and produces different results for the same value. Arnold's mapping appears most similar to RTX. - Arnold's result with
softness
0 has a very hard edge at the boundary of the cone, while Karma and RTX have a softer edge. - RTX and Karma look like they ignore
focus
whenconeAngle
is set, while Arnold does the opposite and ignores spotlight shaping whenfoc
us` is set to non-zero. - Karma looks like it ignores
coneAngle
in the range [90, 180] on the sphere light. - RIS seems to interpret
coneAngle
much differently than the others.
A dome light with intensity 1 and default transform using a coloured grid texture, illuminating a plastic sphere with the camera facing the sphere from 6 units along the +Z axis.
- Karma and Arnold appear to match in terms of mapping on the dome.
- For this texture, Arnold interprets
format=automatic
asangular
, and had to be set manually tolatlong
. Spec should really define latlong to be the default as that's what most users expect. - RTX has a different mapping of the latlong texture from the others
- Note: Arnold <7.2.2.1 ignored
metallic
androughness
attributes of the UsdPreviewSurface, which was visible in previous versions of the comparison images. The test has been switched to a plastic material.
A sphere light with radius 0.5 and intensity 30.0 and with bega_84693k4.ies
applied and angled towards the plane.
- Karma and RIS behave similarly
- Arnold and RTX ignore the
inputs:shaping:ies:normalize
attribute and default to always normalizing - Arnold appears to be using a different axis for the IES than the others
- RTX and Arnold have a different brightness compared to Karma and RIS when normalize is on.
Included IES files were taken from ieslibrary.com and are licensed under Creative Commons Attribution-NoDerivatives-4.0 International License https://ieslibrary.com/en/help/licenses