<p>$E_n$ is illuminance (or irradiance), $L_i$ is luminance (or radiance) in direction $\omega_i$ and $d\omega$ is differential solid angle.</p>

<p><strong>TL;DR</strong>: $d\omega_i$ is the area of a pixel in the cubemap projected onto the unit sphere.</p>

<p>And then a longer explanation (:</p>

<p>Solid angle is essentially the projected area of an object on a unit sphere and has unit of steradians (sr). Entire unit sphere has surface area of $4\pi$ and hemisphere has the area of $2\pi$, which comes up a lot in lighting calculations due to integrals over spheres and hemispheres respectively.</p>

<p>If you would want to calculate solid angle for an object and point $p$, you would project the object on the unit sphere at $p$ and calculate the area of the projection. Further the object is from $p$ smaller the solid angle gets. As an example, we can calculate solid angle for Sun as seen from the Earth. We know that Sun has about 0.52 degrees <a href="https://er.jsc.nasa.gov/seh/math30.html" rel="noreferrer">subtended angle</a> from Earth, so we can calculate that the solid angle is:
$$2\pi*(1-Cos(0.52/2))\simeq0.00006469sr$$</p>

<p>So the differential solid angle is just an infinitesimally small solid angle. If you would numerically integrate over a sphere ($4\pi$ steradians) by taking $N$ uniform samples on the sphere, your $d\omega$ would be $4\pi/N$. With integrals $N$ goes to infinity, while with numerical approximation of the integral $N$ is some "sufficiently large" number.</p>

<p>However, in this paper you refer to they perform integration by rendering to a cubemap at $p$ and then iterating through all the rendered pixels. But because these pixels are rendered onto planes (cubemap faces), their projection on the unit sphere isn't constant, so $d\omega$ needs to be weighted by the position in the rendered image, which they explain in your second quote:</p>

<blockquote>
  <p>Computing the solid angle dωi subtended by a particular texel is a
  little more involved. Texels near the center of the texture subtend a
  somewhat larger angle, while texels near the corner take up a smaller
  solid angle when we map the cube texture onto a sphere.</p>
</blockquote>

CC BY-SA 3.0
2017-04-12T14:33:20.173Z
2017-04-12T14:33:20.173Z
JarkkoL
<p>Link to paper : <a href="http://www2.lawrence.edu/fast/GREGGJ/CMSC420/chapter21/Irradiance.html" rel="nofollow noreferrer">Irradiance and Incoming Radiance | lawrence.edu</a></p>

<blockquote>
  <p>Using a shader to compute En</p>
</blockquote>

<p><a href="https://i.sstatic.net/FeT3I.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/FeT3I.png" alt="enter image description here"></a></p>

<blockquote>
  <p>Computing En as described above is a very compute intensive operation,
  because we have to compute the integral over the cube map for each new
  direction vector n that we want to work with. At the same time, the
  details for different values of n are highly repetitive. This suggests
  that we should enlist the aid of shaders to compute this mapping for
  us. Here is the outline of a strategy that makes it possible to do
  this.</p>
  
  <ol>
  <li>Use OpenGL to render a two dimensional square centered at the origin
  with sides of length 2. This square represents one of the sides of our
  cubical irradiance map. Given the mapping above we can map any point
  (x , y) on the square to a direction vector n. </li>
  <li>We render the square to
  a framebuffer with dimensions size by size pixels, where size is the
  desired size of our irradiance cube map texture. </li>
  <li>In the fragment
  shader, we translate the interpolated fragment positions we are given
  into direction vectors n and construct loops that sum over the six
  faces of the environment map:</li>
  </ol>
  
  <p>When rendering is done, we convert the image in the frame buffer to a
  texture for use by our irradiance cube map.</p>
</blockquote>

<p>I understand that Li is color at i. ωi is the direction of incoming light.</p>

<p>However I do not understand what dωi is.</p>

<p>Paper describes it as...</p>

<blockquote>
  <p>Computing the solid angle dωi subtended by a particular texel is a
  little more involved. Texels near the center of the texture subtend a
  somewhat larger angle, while texels near the corner take up a smaller
  solid angle when we map the cube texture onto a sphere. Here is a
  reference that explains how to compute the solid angle correctly from
  the positions xi and yi.</p>
</blockquote>

<p>However I am not following words to understand what it means.</p>

CC BY-SA 3.0
2017-04-06T23:33:58.497Z
Are you familiar with differentials in calculus, like $dy/dx$ and such? Are you familiar with the concept of solid angle?
Nathan Reed
CC BY-SA 3.0
2017-04-07T00:31:14.203Z
@NathanReed yes I am familiar with dy/dx but I am not familiar with concept of solid angle.
Blue Bug
CC BY-SA 3.0
2017-04-07T05:58:46.217Z
@NathanReed ok soI did more research and I think I have better understanding of solid angle. Solid angle ranges from 0~4 pi. But what does differential of solid angle of the normal vector at "i" mean?
Blue Bug
CC BY-SA 3.0
2017-04-07T08:40:24.780Z
It looks like an integral that's been quantified.
ratchet freak
<lighting>
Irradiance Map Equation What is "dω"?
Blue Bug
# Irradiance Map Equation What is "dω"?

(Asked by: username_0 on 2017-04-06)

Link to paper : [Irradiance and Incoming Radiance | lawrence.edu](http://www2.lawrence.edu/fast/GREGGJ/CMSC420/chapter21/Irradiance.html)

> Using a shader to compute En

[![enter image description here](https://i.sstatic.net/FeT3I.png)](https://i.sstatic.net/FeT3I.png)

> Computing En as described above is a very compute intensive operation,
> because we have to compute the integral over the cube map for each new
> direction vector n that we want to work with. At the same time, the
> details for different values of n are highly repetitive. This suggests
> that we should enlist the aid of shaders to compute this mapping for
> us. Here is the outline of a strategy that makes it possible to do
> this.
>
> 1. Use OpenGL to render a two dimensional square centered at the origin
>    with sides of length 2. This square represents one of the sides of our
>    cubical irradiance map. Given the mapping above we can map any point
>    (x , y) on the square to a direction vector n.
> 2. We render the square to
>    a framebuffer with dimensions size by size pixels, where size is the
>    desired size of our irradiance cube map texture.
> 3. In the fragment
>    shader, we translate the interpolated fragment positions we are given
>    into direction vectors n and construct loops that sum over the six
>    faces of the environment map:
>
> When rendering is done, we convert the image in the frame buffer to a
> texture for use by our irradiance cube map.

I understand that Li is color at i. ωi is the direction of incoming light.

However I do not understand what dωi is.

Paper describes it as...

> Computing the solid angle dωi subtended by a particular texel is a
> little more involved. Texels near the center of the texture subtend a
> somewhat larger angle, while texels near the corner take up a smaller
> solid angle when we map the cube texture onto a sphere. Here is a
> reference that explains how to compute the solid angle correctly from
> the positions xi and yi.

However I am not following words to understand what it means.

**Tags:** lighting

> **Comments:**
> **username_1**: Are you familiar with differentials in calculus, like $dy/dx$ and such? Are you familiar with the concept of solid angle?  
> **username_0**: @username_1 yes I am familiar with dy/dx but I am not familiar with concept of solid angle.  
> **username_0**: @username_1 ok soI did more research and I think I have better understanding of solid angle. Solid angle ranges from 0~4 pi. But what does differential of solid angle of the normal vector at "i" mean?  
> **username_2**: It looks like an integral that's been quantified.  

---

## 1 answers

### Answer by username_3 on 2017-04-12. Score: 6 | Accepted answer

$E\_n$ is illuminance (or irradiance), $L\_i$ is luminance (or radiance) in direction $\omega\_i$ and $d\omega$ is differential solid angle.

**TL;DR**: $d\omega\_i$ is the area of a pixel in the cubemap projected onto the unit sphere.

And then a longer explanation (:

Solid angle is essentially the projected area of an object on a unit sphere and has unit of steradians (sr). Entire unit sphere has surface area of $4\pi$ and hemisphere has the area of $2\pi$, which comes up a lot in lighting calculations due to integrals over spheres and hemispheres respectively.

If you would want to calculate solid angle for an object and point $p$, you would project the object on the unit sphere at $p$ and calculate the area of the projection. Further the object is from $p$ smaller the solid angle gets. As an example, we can calculate solid angle for Sun as seen from the Earth. We know that Sun has about 0.52 degrees [subtended angle](https://er.jsc.nasa.gov/seh/math30.html) from Earth, so we can calculate that the solid angle is:
$$2\pi\*(1-Cos(0.52/2))\simeq0.00006469sr$$

So the differential solid angle is just an infinitesimally small solid angle. If you would numerically integrate over a sphere ($4\pi$ steradians) by taking $N$ uniform samples on the sphere, your $d\omega$ would be $4\pi/N$. With integrals $N$ goes to infinity, while with numerical approximation of the integral $N$ is some "sufficiently large" number.

However, in this paper you refer to they perform integration by rendering to a cubemap at $p$ and then iterating through all the rendered pixels. But because these pixels are rendered onto planes (cubemap faces), their projection on the unit sphere isn't constant, so $d\omega$ needs to be weighted by the position in the rendered image, which they explain in your second quote:

> Computing the solid angle dωi subtended by a particular texel is a
> little more involved. Texels near the center of the texture subtend a
> somewhat larger angle, while texels near the corner take up a smaller
> solid angle when we map the cube texture onto a sphere.


---

