Search
๐Ÿ“บ

Ch.3 OpenGL Primer

course
last review
2023/09/05
mastery
ranger
progress
not started
date
2023/09/05
4 more properties
Previous chapter

Todays main QUEST

๊ทธ๋ž˜ํ”ฝ์Šค๋ฅผ ํ”„๋กœ๊ทธ๋žจํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ด‘์› ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Illumination) โ†’ Projection โ†’ Frame Buffer Fill-in
์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ž˜ํ”ฝ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
์˜คํ”ˆGL์„ ์‚ดํŽด๋ณด์ž.

OpenGL

OpenGL์€ ๊ตญ์ œ ํ‘œ์ค€ ๊ทธ๋ž˜ํ”ฝ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
Kronos Group์— ์˜ํ•ด ์šด์˜๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‹œ์Šคํ…œ์— ์„œํฌํŠธ๋œ๋‹ค.
์ตœ๊ทผ์—๋Š” WebGL์ด ์ง€์›๊ฐ€๋Šฅํ•จ.
๊ฒฝ์Ÿ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” Direct X / Vulcan ๋“ฑ์ด ์žˆ๋‹ค.
GL์ด ์ง€์›ํ•˜๋Š” ๊ฒƒ
โ€ข
ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ธ ๊ทธ๋ž˜ํ”ฝ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•œ๋‹ค.
โ€ข
๊ทธ๋ž˜ํ”ฝ์Šค Primitives๋ฅผ ํ”„๋กœ์„ธ์‹ฑํ•œ๋‹ค.
โ€ข
ํ•˜๋“œ์›จ์–ด์™€ ๋“œ๋ผ์ด๋ฒ„์— ๊ธฐ๋ฐ˜ํ•œ ์ด๋ฏธ์ง€ ์ƒ
GL์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ
โ€ข
ํ•˜์ด๋ ˆ๋ฒจ ์˜คํผ๋ ˆ์ด์…˜ : Open Inventor, OpenGL Optimizer, OpenSce
โ€ข
I/O : GLUT, GLFW, GLX, WGL
โ€ข
์œˆ๋„์šฐ ์ปจํŠธ๋กค : GLUT, GLFW, GLX, WGL

OpenGL Pipeline

Legacy Pipeline

New Pipeline

Tesselation Shader์™€ Compute Shader์ด ์ถ”๊ฐ€๋จ.
์ด๋ฒˆ ํ•™๊ธฐ์˜ ์ฃผ ๋ชฉํ‘œ๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ.

OpenGL Command Structure

OpenGL์—๋Š” GLSL์ด ์ง€์›๋œ๋‹ค.
โ€ข
OpenGL API : OpenGL pipeline์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ C ์ธํ„ฐํŽ˜์ด์Šค
โ€ข
GLSL : ํŒŒ์ดํ”„๋ผ์ธ์˜ ์…ฐ์ด๋”๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ธฐ ์œ„ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ

์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •

1.
OS์™€ GL์„ ๋งํฌ
2.
GL ์‹œ์ž‘
3.
ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ

Elementry Shader

Pipeline OVERVIEW

Vertices(input) โ†’ Vertex Shader
โ€ข
Projection์„ ํ†ตํ•ด Transform๋œ Vertices์˜ ์ขŒํ‘œ๋ฅผ normalized Coordinate๋กœ ์ „๋‹ฌํ•œ๋‹ค.
Vertex Shader โ†’ Primitive Assembly and Rasterization\
โ€ข
Fragment๋กœ ์ „๋‹ฌ๋œ๋‹ค.
Fragments โ†’ Fragment Shader
โ€ข
๊ฐ Fragment์˜ ์ƒ‰
Pixel Positions + Colored Fragments โ†’ Raster Operations
โ€ข
๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰

Vertex Processor

Vertex Shader๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ ๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ Vertex Position์˜ ๋ณ€ํ™˜์„ ์ฃผ๋กœ ๋‹ค๋ฃฌ๋‹ค. (MVP ์ฐธ์กฐ)
Projected๋œ ์ ์„ Normalizeํ•œ๋‹ค.
Texture Coordinate๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
Vertex ๋‹จ์œ„๋กœ ๋ผ์ดํŒ…์„ ์ง„ํ–‰ํ•œ๋‹ค. (์š”์ฆ˜์€ ๋ณ„๋กœ ์•ˆํ•จ)
Color ๊ณ„์‚ฐ

Programming in GLSL

๊ธฐ๋ณธ์ ์œผ๋กœ C์™€ ๊ฐ™์œผ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.
๊ณตํ†ต์ 
โ€ข
main() ํ•จ์ˆ˜
โ€ข
Shader๋‚ด์˜ ๋กœ์ปฌ ํ•จ์ˆ˜
โ€ข
Global ๋ณ€์ˆ˜(๋‹จ, Shader๋‚ด์—์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.)
โ€ข
์ธํ„ฐํŽ˜์ด์Šค ๋ณ€์ˆ˜(in out๋“ฑ)
์ฐจ์ด์ 

Variables in Vertex Shader

vec3 a = {a.x a.y a.z} = {a[0] a[1] a[2]}
๋ฒกํ„ฐ๋Š” ๋ฒกํ„ฐ๋‹จ์œ„ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•จ.

Built in Variables in Vertex Shader

int gl_VertexID; //
JavaScript
๋ณต์‚ฌ
out int gl_Position;
JavaScript
๋ณต์‚ฌ

Fragment Processor

Fragment : ํ”ฝ์…€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ
๊ฐ ํ”ฝ์…€๋‹จ์œ„๋กœ ์‹คํ–‰๋œ๋‹ค.
์ปฌ๋Ÿฌ์™€ Texture ์ขŒํ‘œ๋ฅผ ํ”ฝ์…€๋‹จ์œ„๋กœ ์ง€์ •ํ•˜์—ฌ ํ…์Šค์ณ๋ง์„ ์ง„ํ–‰ํ•œ๋‹ค.
Fog ๋“ฑ์˜ ํŠน์ˆ˜ํšจ๊ณผ๋ฅผ ์ ์šฉํ•œ๋‹ค.
ํ”ฝ์…€๋‹จ์œ„์˜ ์กฐ๋ช…ํšจ๊ณผ ๊ณ„์‚ฐ
ํ•„์š”ํ•  ๊ฒฝ์šฐ ํŠน์ • ์ ์„ ๊ทธ๋ฆฌ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
Next chapter