Skip to content

[usdLux] normalized lights divide by surfaceArea expressed in meters^2 #3587

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions pxr/usd/usdLux/generatedSchema.usda
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ class "LightAPI" (
displayName = "Normalize Power"
doc = """Normalizes the emission such that the power of the light
remains constant while altering the size of the light, by dividing the
luminance by the world-space surface area of the light.
luminance by the world-space surface area of the light, in meters².

This makes it easier to independently adjust the brightness and size
of the light, by causing the total illumination provided by a light to
Expand Down Expand Up @@ -196,18 +196,34 @@ class "LightAPI" (
### Area Lights:

For an area light, the `sizeFactor` is the surface area (in world
space) of the shape of the light, including any scaling applied to the
light by its transform stack. This includes the boundable light types
space, expressed in meters²) of the shape of the light, including any
scaling applied to the light by its transform stack. The area should
then be multiplied by the scene's `metersPerUnit^2` to convert the
surface area into meters². Area lights include the boundable light types
which have a calculable surface area:

- MeshLightAPI
- DiskLight
- RectLight
- SphereLight
- CylinderLight
- CylinderLight with treatAsLine == false

<center><b>
sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light)
sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light) * metersPerUnit²
</b></center>

### Line Lights:

Lights that simulate 1-dimensional emissive \"lines\" have a `sizeFactor`
equal to the length (in world space, expressed in meters) of the shape
of the light, including any scaling applied to the light by its
transform stack. The length should then be multiplied by the scene's
`metersPerUnit` to convert the length into meters. Line lights include:

- CylinderLight with length != 0 and treatAsLine == True

<center><b>
sizeFactor<sub>line</sub> = worldSpaceLength(light) * metersPerUnit
</b></center>

### DistantLight:
Expand Down
26 changes: 21 additions & 5 deletions pxr/usd/usdLux/lightAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ class UsdLuxLightAPI : public UsdAPISchemaBase
// --------------------------------------------------------------------- //
/// Normalizes the emission such that the power of the light
/// remains constant while altering the size of the light, by dividing the
/// luminance by the world-space surface area of the light.
/// luminance by the world-space surface area of the light, in meters².
///
/// This makes it easier to independently adjust the brightness and size
/// of the light, by causing the total illumination provided by a light to
Expand Down Expand Up @@ -453,18 +453,34 @@ class UsdLuxLightAPI : public UsdAPISchemaBase
/// ### Area Lights:
///
/// For an area light, the `sizeFactor` is the surface area (in world
/// space) of the shape of the light, including any scaling applied to the
/// light by its transform stack. This includes the boundable light types
/// space, expressed in meters²) of the shape of the light, including any
/// scaling applied to the light by its transform stack. The area should
/// then be multiplied by the scene's `metersPerUnit^2` to convert the
/// surface area into meters². Area lights include the boundable light types
/// which have a calculable surface area:
///
/// - MeshLightAPI
/// - DiskLight
/// - RectLight
/// - SphereLight
/// - CylinderLight
/// - CylinderLight with treatAsLine == false
///
/// <center><b>
/// sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light)
/// sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light) * metersPerUnit²
/// </b></center>
///
/// ### Line Lights:
///
/// Lights that simulate 1-dimensional emissive "lines" have a `sizeFactor`
/// equal to the length (in world space, expressed in meters) of the shape
/// of the light, including any scaling applied to the light by its
/// transform stack. The area should then be multiplied by the scene's
/// `metersPerUnit` to convert the length into meters. Line lights include:
///
/// - CylinderLight with length != 0 and treatAsLine == True
///
/// <center><b>
/// sizeFactor<sub>line</sub> = worldSpaceLength(light) * metersPerUnit
/// </b></center>
///
/// ### DistantLight:
Expand Down
26 changes: 21 additions & 5 deletions pxr/usd/usdLux/schema.usda
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ class "LightAPI" (
displayName = "Normalize Power"
doc = """Normalizes the emission such that the power of the light
remains constant while altering the size of the light, by dividing the
luminance by the world-space surface area of the light.
luminance by the world-space surface area of the light, in meters².

This makes it easier to independently adjust the brightness and size
of the light, by causing the total illumination provided by a light to
Expand Down Expand Up @@ -281,18 +281,34 @@ class "LightAPI" (
### Area Lights:

For an area light, the `sizeFactor` is the surface area (in world
space) of the shape of the light, including any scaling applied to the
light by its transform stack. This includes the boundable light types
space, expressed in meters²) of the shape of the light, including any
scaling applied to the light by its transform stack. The area should
then be multiplied by the scene's `metersPerUnit^2` to convert the
surface area into meters². Area lights include the boundable light types
which have a calculable surface area:

- MeshLightAPI
- DiskLight
- RectLight
- SphereLight
- CylinderLight
- CylinderLight with treatAsLine == false

<center><b>
sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light)
sizeFactor<sub>area</sub> = worldSpaceSurfaceArea(light) * metersPerUnit²
</b></center>

### Line Lights:

Lights that simulate 1-dimensional emissive "lines" have a `sizeFactor`
equal to the length (in world space, expressed in meters) of the shape
of the light, including any scaling applied to the light by its
transform stack. The length should then be multiplied by the scene's
`metersPerUnit` to convert the length into meters. Line lights include:

- CylinderLight with length != 0 and treatAsLine == True

<center><b>
sizeFactor<sub>line</sub> = worldSpaceLength(light) * metersPerUnit
</b></center>

### DistantLight:
Expand Down