Skip to content

anderslanglands/light_comparison

Repository files navigation

Problem Statement

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:

Moore Lane rendered in Solaris/Karma Moore Lane rendered in Solaris/Arnold Moore Lane rendered in USD Composer/RTX Interactive

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:

Comparison of a distant light illuminating a sphere

Solution

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.

Draft Specification

High-Level Plan

  • ✅ 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

Contents of This Repository

renders

Directory containing source renders for each scene/attribute combination, for each renderer

light_comparison.nk

Nuke script used to generate the contact sheet images

light_comparison.hip

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:

cylinder-light-plane.usda

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.

Cylinder light contact sheet

Observations

  • Karma, Arnold and RTX appear to match

disk-light-plane.usda

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.

Disk light contact sheet

Observations

  • Karma, Arnold and RTX appear to match

distant-light-plane.usda

A distant light of intensity 0.5, directly facing a 100% diffuse reflective plane with the camera facing perpendicular to the plane.

Distant light contact sheet

Observations

  • RTX and Arnold maintain brightness regardless of angle and normalize
  • RTX is pi times brighter than Arnold and Karma
  • Karma's brightness changes with angle when normalize=0
  • RIS uses a very different mapping of intensity to emitted luminance

rect-light-plane.usda

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.

Rect light contact sheet

Observations

  • Arnold appears to ignore focus on a rect light
  • Karma and RTX appear to match

rect-light-plane_rotated.usda

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.

Rect spot, focus 0 contact sheet Rect spot, focus 10 contact sheet

Observations

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

sphere-light-plane.usda

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.

Sphere light contact sheet

Observations

  • Karma and RTX have the same normalization, Arnold is different

sphere-light-plane_rotated.usda

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.

Sphere spot, focus 0 contact sheet Sphere spot, focus 10 contact sheet

Observations

  • 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 when coneAngle is set, while Arnold does the opposite and ignores spotlight shaping when focus` 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.

dome-light.usda

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.

Dome light texture

Dome light contact sheet

Observations

  • Karma and Arnold appear to match in terms of mapping on the dome.
  • For this texture, Arnold interprets format=automatic as angular, and had to be set manually to latlong. 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 and roughness attributes of the UsdPreviewSurface, which was visible in previous versions of the comparison images. The test has been switched to a plastic material.

ies-plane.usda

A sphere light with radius 0.5 and intensity 30.0 and with bega_84693k4.ies applied and angled towards the plane.

IES contact sheet

Observations

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

Licenses

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published