2 - Rendering Basics
Outline
- Rendering์ ๊ธฐ๋ณธ ๊ฐ๋
- Rendering ๋ฐฉ์
- Rasterization
- Ray Tracing
Basic Concepts: Rendering
- Rendering์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ํตํด 2D ๋๋ 3D ์ฅ๋ฉด(scene)์ผ๋ก๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ณผ์
(์ถ์ฒ: Wikipedia) - Rendering ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅ ๊ฐ๋ฅ:
- ์ด๋ฏธ์ง ํ์ผ
- ๋น๋์ค ํ์ผ (์ฌ๋ฌ ์ด๋ฏธ์ง ํ๋ ์์ ์ฐ์)
- ๋๋ frame buffer์ ์ ์ฅ๋์ด ๋์คํ๋ ์ด์ ์ถ๋ ฅ
Basic Concepts: Frame Buffer
- Frame buffer๋ raster ๋์คํ๋ ์ด ์ฅ์น์ ๋ณด๋ผ ๋นํธ๋งต ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- frame buffer๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ผ๋ก ์ ์๋จ:
- width, height, depth
- ์: 4K UHD (3840ร2160) ํด์๋, 32bit ์ปฌ๋ฌ โ 3840 ร 2160 ร 32 bits
- ๋ณดํต ๊ทธ๋ํฝ ์นด๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋จ
Basic Concepts: Double Buffering
- Rendering๊ณผ displaying์ ์ํด ๋ ๊ฐ์ frame buffer ์ฌ์ฉ
- ์ด์ ์ด๋ฏธ์ง๊ฐ front buffer์ ์ถ๋ ฅ๋๋ ๋์ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ back buffer์ ๊ทธ๋ฆผ
- ๋ค์ frame์ด ์ค๋น๋๋ฉด ๋ ๋ฒํผ๋ฅผ swap
- โ ํ๋ ์ ์๋ ํฅ์, flickering ๊ฐ์
- ๋๋ถ๋ถ์ ๊ทธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ ์ double buffering ์ฌ์ฉ
Basic Concepts: Image Plane
- Image plane์ ์ฌ์ฉ์๊ฐ ๊ฐ์ 3D scene์ ๋ ๋๋ง๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ ์ค์ ๋์คํ๋ ์ด ํ๋ฉด์ ๊ฐ๋ ์ ์ผ๋ก ๋ํ๋ด๋ ํ๋ฉด
- ์ฆ, ํ๋ฉด์ ํตํด ๋ณด์ฌ์ง๋ ์ด๋ฏธ์ง๋ฅผ ํฌ์ํ๋ ๊ธฐ์ค์ด ๋๋ ๊ฐ๋ ์ ์์น๋ฅผ ์๋ฏธ
Example of Rendering a 3D Scene
- 3D Scene ์์ (Camera ์์น์์ image plane์ ํตํด scene์ด ๋ ๋๋ง๋จ)
- Rendering output ์์
- (์ด ์ด๋ฏธ์ง๋ Colin Behrens๊ฐ ์ ์ํ Blender ๋ฐ๋ชจ ์ฅ๋ฉด "Loro Mask"๋ฅผ ๋ ๋๋งํ ๊ฒฐ๊ณผ)
Render Output
- ๋ ๋๋ง ๊ฒฐ๊ณผ๋ picture elements ๋๋ pixels๋ก ๊ตฌ์ฑ๋ 2D ์ด๋ฏธ์ง
- ์ฆ, ๋ ๋๋ง์ด๋ 3D ์ฅ๋ฉด ์ ๋ณด์ ๊ธฐ๋ฐํ์ฌ ๊ฐ ํฝ์ ์ ์์์ ๊ณ์ฐํ๋ ๊ณผ์
Rendering Approaches
- ๊ฐ ํฝ์ ์ ์์์ ์ด๋ป๊ฒ ๊ณ์ฐํ ๊ฒ์ธ๊ฐ?
- Rasterization
- Ray Tracing
- ํ์ต ๊ธฐ๋ฐ ์ฅ๋ฉด ํํ ๋ฐฉ๋ฒ:
- NeRF: ์์์ 3D ์ฅ๋ฉด ํํ ํ์ต
- Gaussian Splatting: ํฌ์ธํธ ๊ธฐ๋ฐ 3D ์ฅ๋ฉด ํํ ํ์ต
Rasterization
- Primitive-by-primitive ๋ฐฉ์
- primitive ์์: triangle, line, point ๋ฑ
- ๊ฐ primitive๋ ์ด๋ฏธ์ง ๋ด ์ด๋ ํฝ์ ์ ์ํฅ์ ๋ฏธ์น๋์ง๋ฅผ ๊ฒฐ์ ํ๊ณ ํด๋น ํฝ์ ์ ์์ ์ค์ ํจ
for each primitive in scene :
transform the primitive to viewport
find pixels for the primitive
set color of the pixels based on texture and lighting model
- ์์: ์ผ๊ฐํ ํ๋๊ฐ ํ๋ฉด์ ๋ ๋๋ง๋จ
Rasterization Pipeline
(3D ์ฅ๋ฉด์ ๊ธฐํ ์ ๋ณด๋ฅผ ํฝ์ ๋จ์์ 2D ์ด๋ฏธ์ง๋ก ๋ณํํ๋ ์ผ๋ จ์ ์ฒ๋ฆฌ ๊ณผ์ )
ํํ rendering pipeline ๋๋ graphics pipeline์ด๋ผ ๋ถ๋ฆ
์ฃผ์ ๋จ๊ณ:
- Vertex Processing
- vertex๋ฅผ screen space๋ก ๋ณํ
- Primitive Processing
- vertex๋ค์ polygon์ผ๋ก ๊ตฌ์ฑ
- Scan Conversion
- polygon์ fragment ์งํฉ์ผ๋ก ๋ณํ
- Fragment Processing
- ๊ฐ fragment์ ์์ ๊ฒฐ์ (ํ ์ค์ฒ, ์กฐ๋ช ๋ชจ๋ธ ๋ฑ ๊ณ ๋ ค)
- Per-sample Operations
- depth test, alpha blending ๋ฑ ์ํ
- Vertex Processing
fragment: ํฝ์ ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ์ ์ ์ ์ธ ๋ฐ์ดํฐ ๋จ์. ํ๋์ ํฝ์ ์ ์ฌ๋ฌ fragment๊ฐ ์์ฑ๋ ์ ์์.
์: MSAA(Multisample Anti-Aliasing)์์๋ ํ๋์ ํฝ์ ์ ์ฌ๋ฌ ์ํ ์ง์ ์ผ๋ก ๋๋์ด ๊ฐ๊ฐ fragment๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ํ๊ท ๋ด์ด ์ต์ข ์์์ ๊ฒฐ์ ํจ.
- ์ ๋ ฅ: ๊ฐ ์ค๋ธ์ ํธ ๊ณต๊ฐ์ vertex
- ์ฒ๋ฆฌ ์์:
- screen space์ vertex
- screen space์ primitive
- pixel๋น ํ๋ ์ด์์ fragment
- ์์ ๊ณ์ฐ๋ shaded fragments
- ์ต์ข ์ถ๋ ฅ: image
Ray Tracing ๋ ์ด ํธ๋ ์ด์ฑ
- Pixel-by-pixel ๋ฐฉ์
- ์นด๋ฉ๋ผ ์์น์์ image plane ์์ ๊ฐ ํฝ์ ์ ํต๊ณผํ๋ ray๋ฅผ ์์ฑ
- ํด๋น ray๊ฐ ์ด๋ค ์ค๋ธ์ ํธ์ ๊ต์ฐจํ๋์ง์ ๋ฐ๋ผ ํฝ์ ์ ์์์ด ๊ฒฐ์ ๋จ
for each pixel in image(plane) :
determine which object should be shown at the pixel
set color of the pixel based on texture and lighting model
- ์์: ray ๊ต์ฐจ ๊ฒฐ๊ณผ๊ฐ ํ๋ฉด์ ๋ ๋๋ง๋จ
- Ray tracing์ ๋ํ ์์ธํ ์ค๋ช ์ ๋ค์ ์๋ฃ ์ฐธ๊ณ :
Rasterization vs. Ray Tracing
- (Nvidia์์ ์ ๊ณตํ ๋น๊ต ์๊ฐํ ์๋ฃ)
Rasterization โ Pros & Cons
- ์ฅ์
- ์ผ๊ฐํ ์คํธ๋ฆผ๋ง ๋ ๋๋งํ๋ฉด ๋๋ฏ๋ก ์ ์ฒด ์ฅ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ํ์๊ฐ ์์
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ํฉ โ ๋น ๋ฆ!
- ๋จ์
- ๊ทธ๋ฆผ์, ๋ฐ์ฌ, ํฌ๋ช ๋์ ๋ํ ์ผ๊ด๋ ์ฒ๋ฆฌ ๋ฐฉ์์ด ์์
- ์๋์ ์ผ๋ก ๋ฎ์ ํ์ง์ ๊ฒฐ๊ณผ๋ฌผ
- ์ ํต์ ์ผ๋ก ์ค์๊ฐ ๋ ๋๋ง์ ์ฌ์ฉ
- ์: OpenGL ๋๋ DirectX ๊ธฐ๋ฐ์ ๊ฒ์
Ray Tracing โ Pros & Cons
- ์ฅ์
- ๊ทธ๋ฆผ์, ๋ฐ์ฌ, ํฌ๋ช
๋ ์ฒ๋ฆฌ ๋ฑ์์ ์ผ๋ฐํ๋ ๋ฐฉ์ ์ ๊ณต
โ Ray์์ ๊ต์ฐจ๋ก ์ฒ๋ฆฌ๋จ - ๊ณ ํ์ง ๊ฒฐ๊ณผ๋ฌผ ์์ฑ ๊ฐ๋ฅ
- ๊ทธ๋ฆผ์, ๋ฐ์ฌ, ํฌ๋ช
๋ ์ฒ๋ฆฌ ๋ฑ์์ ์ผ๋ฐํ๋ ๋ฐฉ์ ์ ๊ณต
- ๋จ์ (์ ํต์ ๊ด์ )
- ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฌด ๋๋ฆผ
- ํ๋์จ์ด ๊ตฌํ์ด ์ด๋ ค์
- ์ ํต์ ์ผ๋ก ์ํ์ฉ ์คํ๋ผ์ธ ๋ ๋๋ง์ ์ฌ์ฉ๋จ
- ์: Maya, Blender ๋ฑ์ 3D ์ ์ ํด์ ์ฌ์ฉํ ์ ๋๋ฉ์ด์ ์ํ
Recent Ray Tracing Technology
- ๊ทธ๋ฌ๋ ์ด ๋จ์ ๋ค์ ๋ ์ด์ ์์ ํ ์ฌ์ค์ด ์๋
- Rasterization๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง, real-time๋ ๊ฐ๋ฅํ ๋งํผ ์ถฉ๋ถํ ๋น ๋ฆ
- (Rasterization์ ๋นํด) ๊ตฌํ์ ์ฌ์ ํ ์ด๋ ต์ง๋ง, ํ๋์จ์ด๊ฐ ๋ท๋ฐ์นจ๋จ
- ์ง๊ธ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ๊ฐ๋ฅ:
- Nvidia RTX ์๋ฆฌ์ฆ์ ๊ฐ์ ํ๋์จ์ด
- DirectX Raytracing, Vulkan RT ๋ฑ์ API
- ์ต๊ทผ ๋ณํ๋ ํ๋ฆ
- ์ต์ด์ ์ค์๊ฐ ray tracing ๋ฐ๋ชจ โReflectionsโ๊ฐ 2018๋ 3์์ ๋ฐํ
In This Course,
๊ฐ์๋ ๋ชจ๋ ๋ ๋๋ง ๋ฐฉ์์ ๊ณตํต๋๋ computer graphics์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ด์ ์ ๋ง์ถค
- Movement & placement:
Transformations, Hierarchical Modeling, Orientation & Rotation,
Kinematics & Animation, Curves - Shape & appearance:
Mesh, Lighting, Texture Mapping, Curves
- Movement & placement:
์ผ๋ถ ๊ฐ์๋ rasterization์ ํนํ๋ ๊ฐ๋ ๋ ๋ค๋ฃธ
- 2D ํ๋ฉด์ผ๋ก์ mapping ๊ณผ์
- Viewing / Projection / Viewport ๋ณํ
- ํ์ ํํ
- Polygon shading
- Rasterization ์ฒ๋ฆฌ ์ ์ฐจ
- Rasterization pipeline, Scan Conversion, Visibility
- 2D ํ๋ฉด์ผ๋ก์ mapping ๊ณผ์
Lab์์๋ ์ฌ์ ํ ๋๋ฆฌ ์ฐ์ด๋ modern OpenGL ์ฌ์ฉ
- ๊ฐ์์์ ๋ฐฐ์ด ๊ฐ๋ ๋ณต์ต์ฉ ๋๊ตฌ๋ก ์ฌ์ฉ๋จ
์ด ์์ ์์๋ ray tracing ๋๋ learnable scene representation์ ๋ค๋ฃจ์ง ์์
- ์ค์๊ฐ ๋ ๋๋ง์์ rasterization์ ์ฌ์ ํ ์ค์
- ๋ค๋ฃฐ ์๊ฐ์ด ๋ถ์กฑํจ

