Set your presentation theme:
Black (default) -
White -
League -
Sky -
Beige -
Simple
Serif -
Blood -
Night -
Moon -
Solarized
H:
Jean Pierre Charalambos
Universidad Nacional de Colombia
Presentation best seen online
See also the source code
H:
- Introduction: the problem
- Rasterization approach
- Ray-tracing approach
- Final thoughts
H:
[Dürer's Alberti Veil](http://visualcomputing.github.io/Cognitive)V:
Introduction: Virtual camera model
V:
Introduction: Virtual camera model
V:
Introduction: Virtual camera model
V:
Introduction: Virtual camera model
V:
Introduction: Virtual camera model
V:
- Spatial coherence -> Visibility
> 2. Visual appealing -> Shading
V:
V:
[Rendering equation](https://en.wikipedia.org/wiki/Rendering_equation)N:
integral equation in which the equilibrium radiance leaving a point is given as the sum of emitted plus reflected radiance under a geometric optics approximation
H:
Perspective projection of pointsV:
Perspective projection of a pointV:
for (each point in scene) {
transform point from world space to camera space;
perform perspective divide (x/-z, y/-z);
if (point lies within canvas boundaries) {
convert coordinates to NDC space;
convert coordinates from NDC to raster space;
record point in image;
}
}
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
Hidden surface removal (HSR) algorithms
V:
$F_{01}(p) := (v_{0y} - v_{1y}) p_x + (v_{1x} - v_{0x}) p_y + (v_{0x} v_{1y} - v_{0y} v_{1x})$
$F_{12}(p) := (v_{1y} - v_{2y}) p_x + (v_{2x} - v_{1x}) p_y + (v_{1x} v_{2y} - v_{1y} v_{2x})$
$F_{20}(p) := (v_{2y} - v_{0y}) p_x + (v_{0x} - v_{2x}) p_y + (v_{2x} v_{0y} - v_{2y} v_{0x})$
V:
$F_{01}(v_0) = F_{01}(v_1) = 0$
$F_{01}(v_2) = 2 \triangle(v_0,v_1,v_2)$
V:
$w_0(p) := F_{12}(p)$
$w_1(p) := F_{20}(p)$
$w_2(p) := F_{01}(p)$
which are simply the edge functions evaluated at
if
$w_0(p) > 0$
,$w_1(p) > 0$
and$w_2(p) > 0$
(for WCC) then$p \in \triangle(v_0,v_1,v_2)$
V:
$\lambda_0(p) := F_{12}(p) / 2 \triangle(v_0,v_1,v_2)$
$\lambda_1(p) := F_{20}(p) / 2 \triangle(v_0,v_1,v_2)$
$\lambda_2(p) := F_{01}(p) / 2 \triangle(v_0,v_1,v_2)$
where $\lambda_0(p) + \lambda_1(p) + \lambda_2(p) = 1$
V:
[Rasterization](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-stage)V:
[Anti-aliasing](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-practical-implementation)V:
[Anti-aliasing](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-practical-implementation)V:
[Color interpolation](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-stage)Anything can be interpolated!
V:
H:
Casting rays into a sceneV:
PhotorealismV:
for (each pixel in the image) {
// step 1
build a camera ray: trace line from current pixel location to camera's aperture;
// step 2
cast ray into the scene;
// step 3
if (ray intersects an object) {
set current pixel's color with object's color at the intersection point;
} else {
set current pixel's color to black;
}
}
V:
Visibility computationV:
for (each pixel in the image) {
// step 1
build a camera ray: trace line from current pixel location to camera's aperture;
// step 2
cast ray into the scene;
// step 3
for (each object in the scene) {
set current pixel's color with closest object's color at the intersection point;
}
}
V:
- Overview of the Ray-Tracing Rendering Technique.
- Light Transport Algorithms and Ray-Tracing: Whitted Ray-Tracing.
H:
Problem: Implement Alberti's Veil on a computer -> virtual (pinhole) camera model
Challenges: visibility (geometry) & shading (physics)
Strategies: Raster vs Ray-tracing
V:
Feature | Rasterization | Ray-tracing |
---|---|---|
Philosophy | Intromission | Emission |
Visibility | Easy | Trivial |
Shading realism | Promising | Great |
Parallelizable | Easy | Hard |
Complexity | Linear | Exponential |
V:
Opengl Rendering PipelineN:
- Virtual camera: vertex specification & vertex shader
- Shading: fragment shader
- Visibility (z-buffer): per sample operations
V:
Matrix transform operationsH: