I think when there are a lot of pixels and kernel size is small, a filter by multiplication in the frequency domain is more efficient because it requires one multiplication whereas convolution requires a lot of mappings.

This concept is very similar to most of the tree-based machine learning algorithms which try to minimize entropy which is a cost in a similar manner.

In the project, we convert image plane into a unit area. I still don't understand why we should do it. Could anyone please explain?

Regarding the discussion topics, I think if there are a lot of objects behind a big object, we don't need to check their visibility. So, in this case, ray casting is better because it only looks at the regions that are visible.

Another test is if tmax < tmin

If after taking the intersections we find tmin or tmax to be less than 0 or not on the planes, the ray misses the box.

tpdf usually depends on the illumination of the reflecting light ray. If tpdf is high, the light ray is still strong so we probably shouldn't stop. On the other hand, if illumination is zero, there is no point in casting another ray since the reflecting ray has run out of energy. We do not worry about infinite recursion because we also limit the maximum number of recursions with ray.depth

Here SAH is the ratio of the surface area of the primitives to the bounding box of their partition. A low cost correlates to an high ratio in both partitions.

I think the slabs in this context are the "chunks" of the axes spanned by the box. So in 2D you have two slabs, the [x_min, x_max] slab and the [y_min, y_max] slab. This intersection just involves finding the ray intersection for each slab independently and taking their overlap. Extending this to 3D will just add one more slab.

I think there's an error in this slide. (random01() < tpdf) doesn't makes sense. For example, if the termination probability is one, this will always recurse. Another example: if the termination probability is zero, this will never recurse. Shouldn't it be something like (random01() < (1 - tpdf))

3 pairs of slabs. Not just 3 slabs. 3 pairs of slabs is 6 faces.

I have trouble connecting the units of these terms with what the terms are actually useful for, so here's a stab at explaining them simply:

Suppose we have a point light source. **Radiant Power (Flux)** refers to the total amount of energy the light source emits per second. For example, if I compare two light bulbs, plugging in the one with more Radiant Power will cost me more on my electricity bill than the one with less.

Let's trace a single ray of light outward from the point source. **Radiant Intensity** refers to the power emitted by the light source along that line. So, if we add up the Intensities of all the possible outgoing rays, we get back the Radiant Power.

Now, let's suppose we have an area light source (eg. a computer monitor) rather than a point light source. We can treat that area light source as if it were a big grid of point sources. The **Radiance** refers to the power emitted by a particular point on this grid in a particular direction.

Finally, suppose we have a point on the ground and some light sources overhead. We can take draw a ray leaving the point and hitting one of the lights. That ray has some Radiance from the light source. If we add up all the radiances from all the possible outgoing rays, we get the **Irradiance**.

the line p' is on is the line x = p'.x or in 3D the yz-plane x = p'.x .

What is the line p' is on then? Is that the x-axis?

In this case "perpendicular to x-axis" refers to that the line we are intersecting with is perpendicular to the x-axis. This simplifies the math a bit (the equation to the right of the diagram).

Edit: Just an added note, the line we are intersecting with can be a line attributed to some bounding box or bounding volume.

Can someone help clarify the 'perpendicular to x-axis' picture for me? I'm a little confused as to what is perpendicular to where. Which plane is represented by the two vertical lines?

here tpdf is the probability of not terminating, so (1-tpdf) is the probability of terminating, but shouldn't it be the probability of not terminating? Otherwise we are not even allowing tpdf to be 1

For a Bezier surface of degree $(n,m)$, we have a control cage with $(n+1)(m+1)$ control points. Then the number of linear interpolations for the first stage is equal to $(n+1) * \dfrac{m(m+1)}{2}$---$n+1$ curves, each with $m+1$ points. The final interpolation for $n+1$ points would require $\dfrac{n(n+1)}{2}$ interpolations. In total, this turns out to be $(n+1) * \dfrac{m(m+1)}{2} + \dfrac{n(n+1)}{2}$ interpolations.

A Bezier curve of degree $n$ will require $n$ subsequent stages of interpolations, leading to $\dfrac{n(n+1)}{2}$ total linear interpolations.

This diagram is very helpful for project 2 (part 2).

Here it was mentioned that the derivatives don't match at the end points. I'm not entirely sure what that means. I'm thinking that if the derivatives match at the end points that means that we have a smooth line through the two points. Hence we can generalize this to be able to correctly model a surface?

What do s and t refer to?

Instead of using `floor(x)+1`

, you should use `(int)(x+0.5)`

to find the nearest integer.

Edit: Sorry, was not reading correctly.

Edit2: http://www.tutorialized.com/tutorial/Bilinear-Filtering-101/42364 this link will help a lot.

I'm a little confused here. Shouldn't the left image get clipped by the screen? Therefore, only the middle part of the texture space gets sampled?

Let $M_i$ denote the memory needed to store the level $i$ texture. Since each level is $\frac{1}{2} \times \frac{1}{2}$ downsampling of the previous level, we have $M_i = \frac{1}{4}M_{i - 1}$.

Thus, the total storage of $n$-level mipmap is: $\sum_{i = 0}^{n - 1}M_i$.

We can bound the total storage by assuming there is an infinite number of levels:

$$\lim_{n \rightarrow \infty}\sum_{i = 0}^{n - 1} M_i = \lim_{n \rightarrow \infty}M_0\sum_{i = 0}^{n - 1} \left(\frac{1}{4}\right)^i = \lim_{n \rightarrow \infty}M_0\left(\frac{1 - \left(\frac{1}{4}\right)^n}{1 - \frac{1}{4}}\right) = \frac{4}{3}M_0$$

Therefore, the storage overhead cannot exceed 33% of the original texture.

Shear parallel to $x$-axis (in the slide): $$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}1 & s \\ 0 & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

Shear parallel to $y$-axis: $$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}1 & 0 \\ s & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

$$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}-1 & 0 \\ 0 & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

For a $n \times n$ supersampling, the offsets are: $$\frac{2k - 1}{2n} \qquad k \in [1, n]$$ For example, in $3 \times 3$ supersampling, the offsets are $\frac{1}{6}, \frac{3}{6}, \frac{5}{6}$.

In the previous slide, we define the normal vector in the counter-clockwise direction: $N = (y_0 - y_1, x_1 - x_0)$ for the ray from $P_0$ to $P_1$. Thus, $L_i(x, y) > 0$ for all the points in the counter-clockwise half-plane divided by the line from $P_i$ to $P_{i + 1}$. Therefore, the positive test $(L_0 > 0 \wedge L_1 > 0 \wedge L_2 >0)$ only works if we list the points $P_0$, $P_1$, $P_2$ in counter-clockwise order. To account for the clockwise order case, we also need to do the negative test $(L_0 < 0 \wedge L_1 < 0 \wedge L_2 < 0)$.

The discussion today (discussion 3) was super helpful in understanding this. This was also a pretty fun activity to do.

I remember someone in lecture was asking about an intuitive way of thinking about recursive corner cutting; I tend to think of it as a sculptor chipping away at a block of marble. The first chips are likely to be quite large to quickly reduce a block into the desired general shape, but as the sculptor chips hard edges away, they get more and more refined to achieve smoother curves. Hopefully that's kind of the right idea!

Once again, to clarify the notation used here:

Similar to the equation for the Catmull-Rom Curve (and other interpolation curves), $P(t)$ takes a value $t$ in $[0, 1]$ and computes the corresponding point on the Cubic Bezier curve. That curve interpolates between $p_0$ and $p_3$, so $P(0) = p_0$, $ P(1) = p_3 $, and $ P(0.5) $ is the point halfway along the curve.

In addition, the $ B_0^3(t) $ coefficients in the resulting equation has the same notation as a function applied three times but the 3 in the exponent simply means that this is a coefficient of a Cubic Bezier function. A quadratic Bezier function would have coefficients with a $2$ in the exponent.

Hope that helps!

To clarify the notation used here:

$P(t)$ takes a value $t$ in $[0, 1]$ and computes the corresponding point on the Catmull-Rom curve. That curve interpolates between $p_1$ and $p_2$, so $P(0) = p_1$, $ P(1) = p_2 $ and $P(0.5)$ is somewhere in between. Hope that's helpful.

A couple of years ago I made an interactive visualization of the de Casteljau Algorithm.

**Instructions:**

Click on the big rectangle to set control points (as many as you'd like -- it doesn't have to be a quadratic or cubic Bezier curve)

Press 'Go' to animate the drawing of the Bezier curve (along with the intermediate points/lines)

Drag the '%' slider to view any level of interpolation at any speed you want.

(press 'Clear' to start over -- you can't remove points individually)

Are we saying that a pixel corresponds to some range of x and y values in the domain of f(x,y)? E.g. pixel 0 might take on x-values [0,10] and y-values [0,10]

C = (D-?D?)*C(D) + [?D?+1-D]*C(D+1)

This can also be seen as the four closest pixels to the uv coordinate.

I'm a bit confused as to why we need to project $\Omega$ onto the plane. From what I understand, we project O onto the unit sphere in order to use our sterradian definition of radiance. However, if we're trying to calculate the irradiance from the uniform area source from the center point of the hemisphere, why do we care about Omega's projection?

Thanks so much!