lecture 6: rasterization 1 (triangles)lingqi/teaching/... · cs180, spring 2019 lingqi yan, uc...
TRANSCRIPT
![Page 1: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/1.jpg)
CS180: Introduction to Computer GraphicsSpring 2019, Lingqi Yan, UC Santa Barbara
Rasterization 1 (Triangles)Lecture 6:
http://www.cs.ucsb.edu/~lingqi/teaching/cs180.html
![Page 2: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/2.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Last Lectures
• Transformation- Modeling + Viewing
- Model + View + Projection
- Linear, Affine, Projection transformations
- Homogeneous coordinates
!2
![Page 3: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/3.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Today
!3
• Finishing up Viewing
- Viewport transformation
• Rasterization
- Different raster displays
- Rasterizing a triangle
![Page 4: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/4.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
What’s after MVP?
• Model transformation (placing objects)
• View transformation (placing camera)
• Projection transformation- Orthographic projection (cuboid to “canonical” cube [-1, 1]3)
- Perspective projection (frustum to “canonical” cube)
• Canonical cube to ?
!4
![Page 5: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/5.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Canonical Cube to Screen
• What is a screen?
- A typical kind of raster display
• Raster == discretize (personally)
- Usually to an array of pixels
- Size of the array: resolution
• Pixel (FYI, short for “picture element”)
- For this course only: A pixel is a little square with uniform color
- Color is a mixture of (red, green, blue)
!5
![Page 6: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/6.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Canonical Cube to Screen
• Defining the screen space- Slightly different from the “tiger book”
!6
array of pixels
X
Y
(0, 0)
Pixel (x, y) is centered at(x + 0.5, y + 0.5)
Pixels’ indices are from (0, 0) to (width - 1, height - 1)
Pixels’ indices are in the form of (x, y), where both x and y are integers
The screen covers range (0, 0) to (width, height)
![Page 7: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/7.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Canonical Cube to Screen
!7
array of pixels
X
Y
(0, 0)
• Irrelevant to z
• Transform in xy plane: [-1, 1]2 to [0, width] x [0, height]
x
z
y
![Page 8: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/8.jpg)
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Canonical Cube to Screen
!8
• Irrelevant to z
• Transform in xy plane: [-1, 1]2 to [0, width] x [0, height]
• Viewport transform matrix:
Mviewport =
0
BB@
width2 0 0 width
2
0 height2 0 height
20 0 1 00 0 0 1
1
CCA
<latexit sha1_base64="tdp9C2WJdTQt5m0qzzOxt80jqdQ=">AAACjHicbZFRS+NAEMc30bvTnufV89GXxXLiUy8R4TxEEA/EF6EHthWaUjabSbO42YTdiV4J+TR+I9/u27hNw1FbB4b98/vPsLOzYS6FQc/757gbmx8+ftrabn3e+bL7tb33bWCyQnPo80xm+j5kBqRQ0EeBEu5zDSwNJQzDh99zf/gI2ohM3eEsh3HKpkrEgjO0aNJ+vp2UjwKe8kxjdRGEMBWqzFOGWvytglgzXj6JCJOqPKnoEfWaXHWCYAknIKYJLnWs4aZ8nn59LoEaBqCi/2NM2h2v69VB14XfiA5pojdpvwRRxosUFHLJjBn5Xo7jkmkUXELVCgoDOeMPbAojKxVLwYzLepkV/W5JRONM21RIa7rcUbLUmFka2ko7X2JWvTl8zxsVGJ+NS6HyAkHxxUVxISlmdP4zNBIaOMqZFYxrYWelPGF2c2j/r2WX4K8+eV0MTrq+1/X/nHYur5p1bJEDckiOiU9+kktyQ3qkT7iz7fxwzpxf7q576p67F4tS12l69smbcK9fAWhOvu0=</latexit><latexit sha1_base64="tdp9C2WJdTQt5m0qzzOxt80jqdQ=">AAACjHicbZFRS+NAEMc30bvTnufV89GXxXLiUy8R4TxEEA/EF6EHthWaUjabSbO42YTdiV4J+TR+I9/u27hNw1FbB4b98/vPsLOzYS6FQc/757gbmx8+ftrabn3e+bL7tb33bWCyQnPo80xm+j5kBqRQ0EeBEu5zDSwNJQzDh99zf/gI2ohM3eEsh3HKpkrEgjO0aNJ+vp2UjwKe8kxjdRGEMBWqzFOGWvytglgzXj6JCJOqPKnoEfWaXHWCYAknIKYJLnWs4aZ8nn59LoEaBqCi/2NM2h2v69VB14XfiA5pojdpvwRRxosUFHLJjBn5Xo7jkmkUXELVCgoDOeMPbAojKxVLwYzLepkV/W5JRONM21RIa7rcUbLUmFka2ko7X2JWvTl8zxsVGJ+NS6HyAkHxxUVxISlmdP4zNBIaOMqZFYxrYWelPGF2c2j/r2WX4K8+eV0MTrq+1/X/nHYur5p1bJEDckiOiU9+kktyQ3qkT7iz7fxwzpxf7q576p67F4tS12l69smbcK9fAWhOvu0=</latexit><latexit sha1_base64="tdp9C2WJdTQt5m0qzzOxt80jqdQ=">AAACjHicbZFRS+NAEMc30bvTnufV89GXxXLiUy8R4TxEEA/EF6EHthWaUjabSbO42YTdiV4J+TR+I9/u27hNw1FbB4b98/vPsLOzYS6FQc/757gbmx8+ftrabn3e+bL7tb33bWCyQnPo80xm+j5kBqRQ0EeBEu5zDSwNJQzDh99zf/gI2ohM3eEsh3HKpkrEgjO0aNJ+vp2UjwKe8kxjdRGEMBWqzFOGWvytglgzXj6JCJOqPKnoEfWaXHWCYAknIKYJLnWs4aZ8nn59LoEaBqCi/2NM2h2v69VB14XfiA5pojdpvwRRxosUFHLJjBn5Xo7jkmkUXELVCgoDOeMPbAojKxVLwYzLepkV/W5JRONM21RIa7rcUbLUmFka2ko7X2JWvTl8zxsVGJ+NS6HyAkHxxUVxISlmdP4zNBIaOMqZFYxrYWelPGF2c2j/r2WX4K8+eV0MTrq+1/X/nHYur5p1bJEDckiOiU9+kktyQ3qkT7iz7fxwzpxf7q576p67F4tS12l69smbcK9fAWhOvu0=</latexit><latexit sha1_base64="tdp9C2WJdTQt5m0qzzOxt80jqdQ=">AAACjHicbZFRS+NAEMc30bvTnufV89GXxXLiUy8R4TxEEA/EF6EHthWaUjabSbO42YTdiV4J+TR+I9/u27hNw1FbB4b98/vPsLOzYS6FQc/757gbmx8+ftrabn3e+bL7tb33bWCyQnPo80xm+j5kBqRQ0EeBEu5zDSwNJQzDh99zf/gI2ohM3eEsh3HKpkrEgjO0aNJ+vp2UjwKe8kxjdRGEMBWqzFOGWvytglgzXj6JCJOqPKnoEfWaXHWCYAknIKYJLnWs4aZ8nn59LoEaBqCi/2NM2h2v69VB14XfiA5pojdpvwRRxosUFHLJjBn5Xo7jkmkUXELVCgoDOeMPbAojKxVLwYzLepkV/W5JRONM21RIa7rcUbLUmFka2ko7X2JWvTl8zxsVGJ+NS6HyAkHxxUVxISlmdP4zNBIaOMqZFYxrYWelPGF2c2j/r2WX4K8+eV0MTrq+1/X/nHYur5p1bJEDckiOiU9+kktyQ3qkT7iz7fxwzpxf7q576p67F4tS12l69smbcK9fAWhOvu0=</latexit>
![Page 9: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/9.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Today: Rasterizing Triangles into Pixels
!9
Life of Pi (2012)
![Page 10: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/10.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Drawing Machines
!10
![Page 11: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/11.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
CNC Sharpie Drawing Machine
Aaron Panone with Matt W. Moore
!11
http://44rn.com/projects/numerically-controlled-poster-series-with-matt-w-moore/
![Page 12: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/12.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Laser Cutters
!12
![Page 13: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/13.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Oscilloscope
!13
![Page 14: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/14.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Cathode Ray Tube
!14
![Page 15: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/15.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Oscilloscope Art
Jerobeam Fenderson!15
https://www.youtube.com/watch?v=rtR63-ecUNo
![Page 16: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/16.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Television - Raster Display CRT
Cathode Ray Tube Raster Scan(modulate intensity)
!16
![Page 17: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/17.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Frame Buffer: Memory for a Raster Display
!17
![Page 18: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/18.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
A Sampling of Different Raster Displays
!18
![Page 19: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/19.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Flat Panel Displays
!19
B.Woods, Android Pit
Low-Res LCD Display
Color LCD, OLED, …
![Page 20: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/20.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
LCD (Liquid Crystal Display) Pixel
Principle: block or transmit light by twisting polarization Illumination from backlight(e.g. fluorescent or LED) Intermediate intensity levels by partial twist
!20
[H&
B fig
. 2-1
6]
![Page 21: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/21.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
LED Array Display
!21
Light emitting diode array
![Page 22: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/22.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
DMD Projection Display
!22
[Y.K
. Rab
inow
itz; E
KB
Tec
hnol
ogie
s
![Page 23: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/23.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
DMD Projection Display
!23
[Tex
as In
stru
men
ts]
Array of micro-mirror pixels DMD = Digital Micromirror Device
![Page 24: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/24.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Electrophoretic (Electronic Ink) Display
!24
[Wik
imed
ia C
omm
ons
—Se
narc
lens
]
![Page 25: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/25.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Drawing to Raster Displays
!25
![Page 26: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/26.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Polygon Meshes
!26
Life of Pi (2012)
![Page 27: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/27.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Triangle Meshes
!27
![Page 28: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/28.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Triangle Meshes
!28
![Page 29: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/29.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Triangles - Fundamental Shape Primitives
Why triangles?
• Most basic polygon
• Break up other polygons
• Optimize one implementation
• Triangles have unique properties
• Guaranteed to be planar
• Well-defined interior
• Well-defined method for interpolating values at vertices over triangle (barycentric interpolation)
!29
![Page 30: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/30.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Drawing a Triangle To The Framebuffer
(“Rasterization”)
!30
![Page 31: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/31.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
What Pixel Values Approximate a Triangle?
Input: position of triangle vertices projected on screen
Output: set of pixel valuesapproximating triangle
!31
?(2.2, 1.3)
(4.4, 11.0)(15.3, 8.6)
![Page 32: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/32.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Today, Let’s Start With A Simple Approach: Sampling
!32
![Page 33: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/33.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Sampling a Function
Evaluating a function at a point is sampling. We can discretize a function by sampling. for( int x = 0; x < xmax; x++ ) output[x] = f(x);
Sampling is a core idea in graphics.We sample time (1D), area (2D), direction (2D), volume (3D) …
!33
![Page 34: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/34.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Let’s Try Rasterization As 2D Sampling
!34
![Page 35: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/35.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Sample If Each Pixel Center Is Inside Triangle
!35
![Page 36: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/36.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Sample If Each Pixel Center Is Inside Triangle
!36
![Page 37: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/37.jpg)
Define Binary Function: inside(tri,x,y)
inside(t,x,y) = 1
0
pixel (x,y) in triangle t
otherwise
![Page 38: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/38.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Rasterization = Sampling A 2D Indicator Function
for( int x = 0; x < xmax; x++ ) for( int y = 0; y < ymax; y++ ) Image[x][y] = f(x + 0.5, y + 0.5);
Rasterize triangle tri by sampling the function f(x,y) = inside(tri,x,y)
!38
![Page 39: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/39.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Recall: Sample Locations
!39
(0,0) (w,0)
(0,h) (w,h)
Sample location for pixel (x,y)
(x+1/2,y+1/2)
![Page 40: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/40.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Evaluating inside(tri,x,y)
!40
![Page 41: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/41.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Triangle = Intersection of Three Half Planes
!41
P0
P1
P2
![Page 42: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/42.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Each Line Defines Two Half-Planes
Implicit line equation • L(x,y) = Ax + By + C
• On line: L(x,y) = 0 • Above line: L(x,y) > 0 • Below line: L(x,y) < 0
!42
> 0
< 0
= 0
![Page 43: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/43.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation Derivation
!43
P0
P1
T
T = P1 � P0 = (x1 � x0, y1 � y0)
Line Tangent Vector
![Page 44: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/44.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation Derivation
!44
(x,y)
(-y,x)
Perp(x, y) = (�y, x)
General Perpendicular Vector in 2D
![Page 45: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/45.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation Derivation
!45
P0
P1
T
N
N = Perp(T ) = (�(y1 � y0), x1 � x0)
Line Normal Vector
![Page 46: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/46.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation Derivation
!46
P0
P1
N
P = (x, y)
V
V = P � P0 = (x� x0, y � y0)
L(x, y) = V ·N = �(x� x0)(y1 � y0) + (y � y0)(x1 � x0)
![Page 47: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/47.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation
!47
P0
P1
N
P = (x, y)
V
V = P � P0 = (x� x0, y � y0)
L(x, y) = V ·N = �(x� x0)(y1 � y0) + (y � y0)(x1 � x0)
![Page 48: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/48.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Line Equation Tests
!48
P0
P1
N
P
V
L(x, y) = V ·N > 0
![Page 49: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/49.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
L(x, y) = V ·N = 0
Line Equation Tests
!49
P0
P1
N
PV
![Page 50: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/50.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
L(x, y) = V ·N < 0
Line Equation Tests
!50
P0
P1
N
PV
![Page 51: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/51.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Point-in-Triangle Test: Three Line Tests
!51
P0
P1
P2
Compute line equations from pairs of vertices
Pi = (Xi, Yi)
dXi = Xi+1 - Xi
dYi = Yi+1 - Yi
Li (x, y) = –(x - Xi) dYi + (y - Yi) dXi
= Ai x + Bi y + Ci
Li (x, y) = 0 : point on edge < 0 : outside edge > 0 : inside edge
![Page 52: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/52.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Point-in-Triangle Test: Three Line Tests
!52
P0
P1
P2
L0(x, y) > 0
Pi = (Xi, Yi)
dXi = Xi+1 - Xi
dYi = Yi+1 - Yi
Li (x, y) = –(x - Xi) dYi + (y - Yi) dXi
= Ai x + Bi y + Ci
Li (x, y) = 0 : point on edge < 0 : outside edge > 0 : inside edge
![Page 53: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/53.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Point-in-Triangle Test: Three Line Tests
!53
P0
P1
P2
L1(x, y) > 0
Pi = (Xi, Yi)
dXi = Xi+1 - Xi
dYi = Yi+1 - Yi
Li (x, y) = –(x - Xi) dYi + (y - Yi) dXi
= Ai x + Bi y + Ci
Li (x, y) = 0 : point on edge < 0 : outside edge > 0 : inside edge
![Page 54: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/54.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Point-in-Triangle Test: Three Line Tests
!54
P0
P1
P2
L2(x, y) > 0
Pi = (Xi, Yi)
dXi = Xi+1 - Xi
dYi = Yi+1 - Yi
Li (x, y) = –(x - Xi) dYi + (y - Yi) dXi
= Ai x + Bi y + Ci
Li (x, y) = 0 : point on edge < 0 : outside edge > 0 : inside edge
![Page 55: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/55.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Point-in-Triangle Test: Three Line Tests
!55
Sample point s = (sx, sy) is inside the triangle if it is inside all three lines.
inside(sx, sy) =L0 (sx, sy) > 0 &&L1 (sx, sy) > 0 &&L2 (sx, sy) > 0;
P0
P1
P2
Note: actual implementation of inside(sx,sy) involves ≤ checks based on edge rules
![Page 56: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/56.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Edge Cases (Literally)
Is this sample point covered by triangle 1, triangle 2, or both?
!56
1
2
![Page 57: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/57.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Incremental Triangle Traversal (Faster?)
!57
P0
P1
P2
![Page 58: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/58.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Modern Approach: Tiled Triangle Traversal
!58
P0
P1
P2Traverse triangle in blocks
Test all samples in block in parallel
All modern GPUs have special-purpose hardware for efficient point-in-triangle tests
Advantages: - Simplicity of wide parallel execution
overcomes cost of extra point-in-triangle tests (most triangles cover many samples, especially when super-sampling)
- Can skip sample testing work: entire block not in triangle (“early out”), entire block entirely within triangle (“early in”)
![Page 59: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/59.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Signal Reconstruction on Real Displays
!59
![Page 60: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/60.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Real LCD Screen Pixels (Closeup)
iPhone 6S Galaxy S5
!60
iphonearena.com iphonearena.com
Notice R,G,B pixel geometry! But in this class, we will assume a colored square full-color pixel.
![Page 61: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/61.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Aside: What About Other Display Methods?
!61
Color print: observe half-tone pattern
![Page 62: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/62.jpg)
Assume Display Pixels Emit Square of Light
LCD pixelon laptop
Each image sample sent to the display is converted into a little square of light of the appropriate color: (a pixel = picture element)
* LCD pixels do not actually emit light in a square of uniform color, but this approximation suffices for our current discussion
![Page 63: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/63.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
So, If We Send The Display This Sampled Signal
!63
![Page 64: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/64.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
The Display Physically Emits This Signal
!64
![Page 65: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/65.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Compare: The Continuous Triangle Function
!65
![Page 66: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/66.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
What’s Wrong With This Picture?
!66
Jaggies!
![Page 67: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/67.jpg)
Slide courtesy of Prof. Ren Ng, UC Berkeley
CS180, Spring 2019 Lingqi Yan, UC Santa Barbara
Aliasing (Jaggies)
!67
Is this the best we can do?
![Page 68: Lecture 6: Rasterization 1 (Triangles)lingqi/teaching/... · CS180, Spring 2019 Lingqi Yan, UC Santa Barbara Today!3 • Finishing up Viewing-Viewport transformation • Rasterization-Different](https://reader036.vdocuments.site/reader036/viewer/2022071212/602443a0030685147f4591fc/html5/thumbnails/68.jpg)
Thank you!