Units for HDR Textures

Started by
4 comments, last by skytiger 11 years ago

What units are the values in an HDR texture?

Unless they use radiometric or photometric units wouldn't it be hard to combine HDR textures in one game?

In MAX photometric rendering I can specify light values in lumens or candelas ... but what is stored in the output texture?

Is there an important difference between illuminance and luminance?

I think an HDR light map (recording incident light on a surface) would need to store illuminance

whereas an HDR environment map or light probe would store luminance?

Advertisement

Typically you want a renderer to work with radiometric values, since you're essentially simulating the amount of energy being reflected off of various surfaces. In that cases your HDR environment maps will store radiance as a function of direction, while your traditional light map will contain the irradiance incident on a surface point. These days a light map is more likely to store multiple irradiance values using a higher-order basis that can be used to reconstruct/approximate the irradiance for a given surface normal.

So have people standardised on SI units like: W·sr?1·m?2

(it would help if they had a name ...)

If I have 4 HDR textures from different sources can I assume they are in these units?

And can I assume that the output from an HDR render (with exposure control turned off) is in these units?

I am trying to use Paul Debevec's light probes inside my MAX photometric scene ...

PS I read your fantastic post about the H-basis

At last I found something:

http://mentalraytips.blogspot.co.uk/2007/03/understanding-photometric-and.html

which says:

For 3ds max, the conversion factor between the total pixel value and the luminance in (cd/m^2) is the "physical scale" (found in the exposure control configuration) divided by PI.

Of course, the exposure control itself must be off or it will affect the pixel values. As a trick can be noted, that if you add an exposure control (but keep it disabled!) and set the physical scale to PI (3.1415) and render to a floating point frame buffer, the total pixel values reported when you right click on them (by the "Mono:" heading) are in cd/m^2.

I setup a test scene in MAX:

1) point light with intensity 10,000 candelas (cd)
2) a unit sphere with flipped normals and uvs

So the total flux
= 4 * pi * 10000 lumens

And the illuminance
= 4 * pi * 10000 / 4 / pi
= 10000 lux

Then I Render-to-texture DDS 32 bpp float (no gamma, no exposure, no shadows, no indirect)
result = 6.807
error factor = 1469

Then I scale up the intensity by 100
result = 680.7
error factor = 1469

So the result is proportional to lux

mentalraytips tip doesn't work for me
changing the Physical Scale of a disabled Exposure Control does nothing
(which is what the manual says will happen for photometric lights)

any ideas?

Ensure System Unit = 1.0 metre

Activate Linear Exposure Control

(default settings won't change the light)

Brightness = 50.0
Contrast = 50.0
Exposure Value = 0.0
Physical Scale = 1.0

now 10,000 lux is stored as 10,000 in the .DDS or .HDR texture

This topic is closed to new replies.

Advertisement