2
$\begingroup$

I was reading this slope space integral paper. Can anyone help to explain slope space and slope distribution mentioned in this paper, and why we can use normal and half vector to represent 2D positions in slope space? Thanks!

$\endgroup$

2 Answers 2

2
$\begingroup$

If we have a vector in the upper hemisphere in tangent space, $(x, y, z)$ with $z > 0$, then the slopes of the vector are $(\tilde x, \tilde y) = (-x/z, -y/z)$. These values are the slopes (derivatives), along $x$ and $y$, of a surface that is normal to the given vector. See also equation (4) in the paper, which is the conversion back and forth between slopes and vectors.

The 2D space of slope values is called "slope space". It is an unbounded space, so any $(\tilde x, \tilde y)$ point represents a valid vector in tangent space (such as a microfacet normal). Geometrically, you can picture it like the intersection of the vector with the $z = 1$ plane. It produces an invertible, one-to-one mapping (bijection) between the upper hemisphere and the plane.

diagram of normal vector intersecting z=1 plane

Slope space is often used in microfacet BRDF theory because of its desirable properties. Since it is unbounded, it can be more convenient to define functions and do mathematics in slope space than in spherical coordinates, or directly on the normals. Geometric transformations on the microfacet surface, such as scaling and shearing, have straightforward expressions in slope space. The most common NDFs, Beckmann and GGX, also have a simpler expressions in slope space: Beckmann is a Gaussian distribution in slope space, while GGX is a Student's t-distribution in slope space.

Edit: I wrote a more in-depth blog post on this topic in case more explanation is needed.

$\endgroup$
7
  • $\begingroup$ Why is the slopes of the vector are (𝑥̃ ,𝑦̃ )=(−𝑥/𝑧,−𝑦/𝑧)? Any material that I can read about or any pictures to demonstrate this? $\endgroup$
    – SSS
    Commented Jul 7, 2021 at 0:23
  • 1
    $\begingroup$ @SSS Consider a plane equation $Ax + By + Cz = 0$ where $(A, B, C)$ is the normal vector to the plane. Write $z$ as a function of $x, y$: $z = (-Ax - By) / C$. Then calculate $\partial z / \partial x$ and you can see it's $-A/C$, similarly $\partial z / \partial y$ gives $-B/C$. $\endgroup$ Commented Jul 7, 2021 at 0:32
  • 1
    $\begingroup$ @SSS See slide 17 in this presentation for example: wiki.tizen.org/images/0/0c/Chapter_11%28Normal_mapping%29.pdf $\endgroup$ Commented Jul 7, 2021 at 0:56
  • 1
    $\begingroup$ The slopes are cartesian coordinates on that plane. $\endgroup$ Commented Jul 7, 2021 at 2:05
  • 1
    $\begingroup$ @SSS I added a diagram and a link to a blog I wrote with more in depth explanation. $\endgroup$ Commented Jul 17, 2021 at 16:59
1
$\begingroup$

Nathan's answer and his in-depth blog post are just great. However following pictures helped me a lot to visually understand slope space. From Dupuy thesis (Photorealistic Surface Rendering with Microfacet Theory, 2015).

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.