ํฌ์ŠคํŠธ

Rendering Pipeline

Rendering Pipeline

๐Ÿ’ซ Q


  • ๊ทธ๋ž˜ํ”ฝ์Šค API ์ดํ•ด: OpenGL, DirectX, Vulkan ๋“ฑ์˜ ๊ทธ๋ž˜ํ”ฝ์Šค API์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด.
  • 3D ์ˆ˜ํ•™: ๋ฒกํ„ฐ, ํ–‰๋ ฌ, ํ€˜ํ„ฐ๋‹ˆ์–ธ ๋“ฑ์„ ์‚ฌ์šฉํ•œ 3D ๋ณ€ํ™˜๊ณผ ๊ด€๋ จ๋œ ์ˆ˜ํ•™์  ์ดํ•ด.
  • ๋ Œ๋”๋ง ๊ธฐ์ˆ : ๋ฆฌ์–ผํƒ€์ž„ ๋ Œ๋”๋ง, ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ, ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ ๋“ฑ์˜ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ง€์‹.
  • ํผํฌ๋จผ์Šค ์ตœ์ ํ™”: ๊ทธ๋ž˜ํ”ฝ์Šค ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ๋Šฅ๋ ฅ.
  • ๊ทธ๋ž˜ํ”ฝ api๋ฅผ ์“ฐ๋Š”๊ฑด ta๊ฐ€ ์ž˜ ์•Œ์•„์•ผํ•˜๋Š” ์˜์—ญ์ด๊ณ 
  • ํด๋ผ์ชฝ์€ 3d๋ฌผ์ฒด๊ฐ€ 2d์ขŒํ‘œ๋กœ ์–ด๋–ป๊ฒŒ ๋ Œ๋”๋ง ๋˜๋Š” ๊ณผ์ •ํ•˜๊ณ  cpu์˜ ์ผ์„ gpu๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค ์ •๋„ ์•Œ๋ฉด ๋˜๋Š”๊ฑฐ์ง€

๐Ÿ’ซ Rendering Pipeline


๊ทผ๋ณธ์ ์œผ๋กœ ์‰์ด๋”์˜ ์‹œ์ž‘์€ ์›๋ž˜ โ€˜๊ทธ๋ž˜ํ”ฝ ์•„ํ‹ฐ์ŠคํŠธ๋“ค์ด ์›ํ•˜๋Š” 3D์˜ ์งˆ๊ฐ์„ ์ž์œ ๋กญ๊ฒŒ ์ œ์–ดํ•˜๋„๋ก ํ•˜์žโ€™ ๋ผ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์Šค (Computer Graphics) ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ (Rendering Pipeline : ๋ Œ๋”๋ง ์ˆœ์„œ) ์ด๊ฒƒ์„ ์ดํ•ดํ•˜๋ฉฐ ์‰์ด๋”์˜ ์ œ์ž‘ ํ๋ฆ„์„ ์•Œ๊ฒŒ ๋˜๊ณ , ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ, ์ตœ์ ํ™”์—๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค

๐Ÿซง ์˜ค๋ธŒ์ ํŠธ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

GPU๋Š” ๋ฒ„ํ…์Šค (Vertex : ์ •์ ) ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌผ์ฒด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
์•„์ง ํ™”๋ฉด์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ๋‚ด๋ถ€์˜ ๊ฐ’์œผ๋กœ๋งŒ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
(์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด, ์—”์ง„์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์€ ๋ฒ„ํ…์Šค ๋ฐ์ดํ„ฐ ๋ฟ์ด๋‹ค. โ€˜๋ฉด๊นŒ์ง€ ์ƒ์„ฑ๋œ ๋ชจ๋ธ๋งโ€™ ๋ชจ์Šต์œผ๋กœ 3D ๋ชจ๋ธ๋ง ๋ฐ์ดํ„ฐ๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.)

๋ฒ„ํ…์Šค๋Š” ์ธ๋ฑ์Šค ๋„˜๋ฒ„ (Index number), ํฌ์ง€์…˜ (Position), ๋…ธ๋ฉ€ (Normal), ์ปฌ๋Ÿฌ (Color) ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
GPU๋Š” ๋ฒ„ํ…์Šค์˜ ์ •๋ณด๋“ค์„ ๊ฐ€์ง€๊ณ  ๋ฒ„ํ…์Šค๋“ค์ด ์ด์–ด์ง„ ์‚ผ๊ฐํ˜• ๋ฉด์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๊ฐ€ ๊ฐ–์ถ”์–ด์กŒ๊ณ , ์ด ์ •๋ณด๋“ค์„ ๋ฒ„ํ…์Šค ์‰์ด๋”๋กœ ๋„˜๊ธธ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿซง ๋ฒ„ํ…์Šค ์‰์ด๋” (์ •์  ์‰์ด๋”)

์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ณธ๊ฒฉ์ ์ธ ์‰์ด๋”ฉ ์ž‘์—…์ด ๊ฐ€๋™๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ด ์‰์ด๋”์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ขŒํ‘œ ๋ณ€ํ™˜์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ๊ฐ€ ๊ทธ๋ž˜ํ”ฝ ์•„ํ‹ฐ์ŠคํŠธ๋“ค์ด ์ฒ˜์Œ์œผ๋กœ ์‰์ด๋”๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ
๊ฐ์ข… ๋ฒ„ํ…์Šค ์—ฐ์‚ฐ์„ ์ž์œ ๋กญ๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2.1

๋ฒ„ํ…์Šค์˜ ์œ„์น˜ ๊ฐ’์€ ํ˜„์žฌ ๋กœ์ปฌ (Local) ์ขŒํ‘œ๊ณ„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
๋กœ์ปฌ ์ขŒํ‘œ๊ณ„๋ž€ ๋ฌผ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” โ€˜์ž๊ธฐ์ค‘์‹ฌ์ ์ธโ€™ ์œ„์น˜ ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ธŒ์ ํŠธ ๋ณ„๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณธ์ธ์˜ ํ”ผ๋ด‡์ด 0, 0, 0 ์œ„์น˜ ๊ฐ’ (์ค‘์‹ฌ๊ฐ’)์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ๋Š” ๊ฒŒ์ž„ ์•ˆ์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ์˜ ์œ„์น˜๋Š” ์ „ํ˜€ ๊ณ ๋ ค๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์ฆ‰ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ์ž๊ธฐ๊ฐ€ ์„ธ์ƒ์˜ ์ค‘์‹ฌ์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์นด๋ฉ”๋ผ๊ฐ€ ์—†์–ด์„œ ๊ทธ๋Ÿด ์ผ์€ ์—†๊ฒ ์ง€๋งŒ, ๋งŒ์•ฝ ๊ทธ๋ฆผ๋Œ€๋กœ ๋ชจ๋‹ˆํ„ฐ์— ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ๋งˆ์น˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์„œ๋กœ ํ•œ ๊ณณ์— ๋™์‹œ ์ƒ์„ฑ๋˜์–ด ์—‰ํ‚จ ๋ชจ์Šต์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ์ž์‹ ์ด ์„ธ๊ณ„์˜ ์ค‘์‹ฌ์ด๋ฉฐ, ์ž์‹ ์ด ์žˆ๋Š” ๊ณณ์ด ์›์  (0, 0, 0)์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ์ด ๋กœ์ปฌ (Local) ์ขŒํ‘œ๊ณ„๋ฅผ ์˜ค๋ธŒ์ ํŠธ (Object) ์ขŒํ‘œ๊ณ„๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

2.2

์ด์ œ ์—ฌ๊ธฐ์— โ€˜์›”๋“œ ๋ณ€ํ™˜ ํ–‰๋ ฌ(์›”๋“œ ์ขŒํ‘œ๊ณ„)(๋งคํŠธ๋ฆญ์Šค : Martrix)โ€™ ์„ ๊ณฑํ•ด์คŒ์œผ๋กœ์จ, ๋กœ์ปฌ ์ขŒํ‘œ๊ณ„๋ฅผ ์›”๋“œ ์ขŒํ‘œ๊ณ„๋กœ ๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
์›”๋“œ ์ขŒํ‘œ๊ณ„๋ž€, ์ ˆ๋Œ€ ์ขŒํ‘œ์ธ ์›”๋“œ ์ขŒํ‘œ๊ณ„์˜ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ๊ฐ ๋ฌผ์ฒด์˜ ์ƒ๋Œ€์  ์œ„์น˜ ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์›”๋“œ ์ขŒํ‘œ๊ณ„์—์„œ๋Š” ์‹ค์ œ ์ด ์›”๋“œ์˜ ์ค‘์‹ฌ์ ์ด 0, 0, 0์ด๋ฉฐ, ๋‹ค๋ฅธ ๋ฌผ์ฒด๋“ค์€ ์—ฌ๊ธฐ์„œ ์–ผ๋งˆ๋‚˜ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๋” ์ด์ƒ ์ž๊ธฐ๊ฐ€ ์„ธ์ƒ์˜ ์ค‘์‹ฌ์ด ์•„๋‹ˆ๋ž€ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ์ด ์›”๋“œ (World) ์ขŒํ‘œ๊ณ„๋ฅผ `๋ชจ๋ธ(Model)โ€™์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ ์—ฌ์ „ํžˆ ์นด๋ฉ”๋ผ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
๋จธ๋ฆฟ์†์—์„œ๋งŒ ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

2.3

์›”๋“œ ํ–‰๋ ฌ๋กœ ๋ณ€ํ™”๋œ ๋ฌผ์ฒด๋“ค์€ ์ด์ œ ์ด ์›”๋“œ์— ์œ„์น˜ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ์•„์ง ๊ณ ๋ ค๋˜์ง€ ์•Š์€ ๊ฒƒ์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ โ€˜์นด๋ฉ”๋ผโ€™ ์ž…๋‹ˆ๋‹ค.
์›”๋“œ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์€ ์•Œ๊ฒ ์ง€๋งŒ, ์นด๋ฉ”๋ผ๊ฐ€ ์—†์œผ๋ฉด ํ™”๋ฉด์— ๋ณด์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์›”๋“œ ์ขŒํ‘œ๊ณ„์˜ ๋ฒ„ํ…์Šค๋“ค์€ ์ด์ œ ๋‹ค์‹œ โ€˜์นด๋ฉ”๋ผ ํ–‰๋ ฌโ€™ ๋กœ ๊ณฑํ•ด์„œ ์›”๋“œ ์ขŒํ‘œ๊ณ„์—์„œ ์‚ด๊ณ  ์žˆ๋˜ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ฒ„ํ…Œ์Šค ์œ„์น˜ ๊ฐ’๋“ค์ด ์นด๋ฉ”๋ผ์˜ ์ค‘์‹ฌ์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ƒ๋Œ€์  ๊ฑฐ๋ฆฌ๋กœ ๋‹ค์‹œ ์—ฐ์‚ฐ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์ด ์„ธ๊ณ„์—์„œ๋Š” ์นด๋ฉ”๋ผ์˜ ์ค‘์‹ฌ์ ์ด 0, 0, 0์ด๋ฉฐ, ๋‹ค๋ฅธ ๋ฌผ์ฒด๋“ค์€ ์—ฌ๊ธฐ์—์„œ ์–ผ๋งˆ๋‚˜ ์ƒ๋Œ€์ ์œผ๋กœ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.
๋“œ๋””์–ด ๋ฌผ์ฒด๋“ค์€ ํ™”๋ฉด์•  ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ง€๋งŒ, ์›๊ทผ๊ฐ์€ ๊ณ ๋ ค๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์นด๋ฉ”๋ผ ํ–‰๋ ฌ์€ โ€˜๋ทฐ (View)โ€™๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ์˜ค์˜๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์ ์…˜ (Orthographic Projection) ์ด๋ผ ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด ์‹œ์ ๋ถ€ํ„ฐ ๋ชจ๋‹ˆํ„ฐ์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ๊ฐ€ ์žˆ์œผ๋‹ˆ ๋ง์ž…๋‹ˆ๋‹ค.
ใ„ด(๋ฌผ๋ก  ์ถœ๋ ฅ์„ ์œ„ํ•ด์„œ๋Š” ํ”ฝ์…€ ์‰์ด๋”๊นŒ์ง€ ์ˆœ์„œ๊ฐ€ ์ง„ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

2.4

์ด๋ ‡๊ฒŒ ์นด๋ฉ”๋ผ ํ–‰๋ ฌ๋กœ ์ •๋ ฌ๋œ ๋ฒ„ํ…์Šค๋“ค์€, ๋‹ค์‹œ ํ•œ๋ฒˆ โ€˜ํ”„๋กœ์ ์…˜ (Projection) ํ–‰๋ ฌโ€™๋กœ ๊ณฑํ•ด์ง‘๋‹ˆ๋‹ค.
ใ„ด (์ด ๊ฒฝ์šฐ๋Š” ํผ์ŠคํŽ™ํ‹ฐ๋ธŒ (Perspective) ํ”„๋กœ์ ์…˜์ผ ๊ฒฝ์šฐ์— ์ผ์–ด๋‚˜๋Š” ์ˆœ์„œ์ด๊ณ , ์˜ค์˜๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์ ์…˜ ๋“ฑ์˜ ๊ฒฝ์šฐ์—์„œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ํผ์ŠคํŽ™ํ‹ฐ๋ธŒ ํ”„๋กœ์ ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜์˜€์Šต๋‹ˆ๋‹ค. )
โ€˜ํ”„๋กœ์ ์…˜ ํ–‰๋ ฌโ€™ ์ด๋ž€ ์›๊ทผ๊ฐ์„ ๋ถ€์—ฌํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ, ์นด๋ฉ”๋ผ์—์„œ ๋จผ ๊ณณ์€ ์ขํ˜€์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฒ„ํ…์Šค ์œ„์น˜๋ฅผ ์กฐ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ƒ์œผ๋กœ ์นด๋ฉ”๋ผ์—์„œ ๋ฉ€์ˆ˜๋ก ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง€๋Š” ๋ฌผ์ฒด๊ฐ€ ๋˜๊ฒ ์ง€์š”.
๊ทธ๋ฆฌ๊ณ  ๋“œ๋””์–ด ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ทฐ์˜ ๋ชจ์Šต์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2.FIN

์—ฌ๊ธฐ๊นŒ์ง€์˜ ์ž‘์—…์„ ๊ทธ๋Œ€๋กœ ๋ชจ๋‹ˆํ„ฐ์— ์ถœ๋ ฅํ•œ๋‹ค๋ฉด ์—ฌ์ „ํžˆ ํ…์Šค์ณ๋„ ์Œ์˜๋„ ์—†๋Š”, ๋ง ๊ทธ๋Œ€๋กœ์˜ ํด๋ฆฌ๊ณค ๋ฉ์–ด๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์— ์ฐํž ์ˆ˜ ์žˆ๋Š” ์ค€๋น„๋Š” ๋˜์—ˆ์ง€๋งŒ, ์ด ์˜ค๋ธŒ์ ํŠธ๋Š” ์•„์ง ํ”ฝ์…€ ์‰์ด๋”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋‹ˆํ„ฐ๋กœ ๋ณผ ์ˆ˜๋„ ์—†๋Š” ๋‹จ์ง€ 3D ๊ณต๊ฐ„์—์„œ ์กด์žฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ใ„ด [๋ฌผ๋ก , ์ด ๋ฒ„ํ…์Šค ์‰์ด๋” ๋‹จ๊ณ„์—์„œ ๋ผ์ดํŠธ (Light : ์กฐ๋ช…)๋ฅผ ์—ฐ์‚ฐํ•˜๋ฉด โ€˜๋ฒ„ํ…์Šค ๋ผ์ดํŠธโ€™ ๋ผ๋Š” ๋งค์šฐ ๊ฐ€๋ณ๊ณ  ๋ถ€์ •ํ™•ํ•œ ๋ผ์ดํŠธ๊ฐ€ ์—ฐ์‚ฐ๋  ์ˆ˜ ์žˆ๊ธด ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ• ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ์€ ๊ณ ๋ผ์šฐ๋“œ ์‰์ด๋”ฉ (Gouraud Shading) ์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ๋ฌผ์€ 44p ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.]

๐Ÿซง ๋ž˜์ŠคํŠธ๋ผ์ด์ ธ (Rasterizer)

ใ„ด [์ตœ๊ทผ Direct-X์—์„œ๋Š” ์—ฌ๊ธฐ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์‰์ด๋”๊ฐ€ ์ถ”๊ฐ€๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋ฒ„ํ…์Šค ์‰์ด๋”์™€ ํ”ฝ์…€ ์‰์ด๋”์˜ ์ค‘๊ฐ„์— ์œ„์น˜ํ•˜๋Š” ์ด ์‰์ด๋”๋Š” ํ— ์‰์ด๋” (Hull Shader), ํ…Œ์…ธ๋ ˆ์ดํ„ฐ (Tessellator), ๋„๋ฉ”์ธ ์‰์ด๋” (Domain Shader), ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์‰์ด๋” (Geometry Shader), ์ปดํ“จํŠธ ์‰์ด๋” (Compute Shader) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ฑ…์€ ์•„ํ‹ฐ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ฑ…์ด๋ฏ€๋กœ, ์ผ๋‹จ ๋‹ค์ด๋ ‰ํŠธX 9 ์ •๋„์˜ ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์œผ๋กœ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.] ์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ์ขŒํ‘œ๊ณ„๊ฐ€ ์กฐ์ •๋œ ๋ฒ„ํ…์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํ™”๋ฉด์— ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ถœ๋ ฅํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋ชจ๋‹ˆํ„ฐ์— ์ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ์˜ค๋ธŒ์ ํ„ฐ๊ฐ€ ๋ชจ๋‹ˆํ„ฐ์—์„œ ํ‘œํ˜„๋  ๋•Œ ์–ด๋Š” ํ”ฝ์…€๋กœ ํ‘œํ˜„๋  ๊ฒƒ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์žฅ์น˜๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๊ฑธ์„ ๋ž˜์Šคํ„ฐ๋ผ์ด์ ธ(Rasterizer)๋ผ ๋ถ€๋ฅด๋ฉฐ, 2D ํ”ฝ์…€๋กœ ํ‘œํ˜„๋˜๋Š” ์„ธ๊ณ„๋กœ ๋„˜์–ด์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ 3D ์˜ค๋ธŒ์ ํŠธ๋Š” ๋ชจ๋‹ˆํ„ฐ์— ๋ณด์ด๋„๋ก โ€˜ํ”ฝ์…€(Pixel)โ€™์ด ๋˜์—ˆ๊ณ  ์ด ๊ณผ์ •์„ โ€˜๋ž˜์Šคํ„ฐํ™”โ€™๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 3D๋กœ ์žˆ๋˜ โ€˜์„๊ณ ์ƒโ€™์„ ์ดฌ์˜ํ•˜๋Š” ์ˆœ๊ฐ„ ๊ทธ ์„๊ณ ์ƒ์€ 2D ์ด๋ฏธ์ง€๊ฐ€ ๋˜๋“ฏ์ด, 3D ์ด๋ฏธ์ง€๊ฐ€ 2D ์ด๋ฏธ์ง€๊ฐ€ ๋˜๋Š” ์ˆœ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ์— ๋ณด์ด๋ ค๋ฉด 2D ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‹ˆ ๋ง์ž…๋‹ˆ๋‹ค. ใ„ด ( ์ด ๋ชจ๋“  ์ž‘์—…์ด ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค, )

์ด๋ ‡๊ฒŒ ์ˆ˜ํ•™์ ์ธ ๊ฐ€์ƒ ๊ณต๊ฐ„ ์•ˆ์—์„œ ์ž…์ฒด๋กœ ๋– ๋Œ๋˜ ์˜ค๋ธŒ์ ํŠธ๋Š” ํ”ฝ์…€์ด ๋˜๊ณ , ๋“œ๋””์–ด ํ”ฝ์…€์‰์ด๋”์—์„œ ์ด ํ”ฝ์…€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿซง ํ”ฝ์…€์‰์ด๋” (Pixel Shader) / ํ”„๋ ˆ๊ทธ๋จผํŠธ ์‰์ด๋” (Fragment Shader)

์ด๋ ‡๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๊นŒ์ง€ ๋„˜์–ด์˜จ 3D ๊ทธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ™”๋ฉด์— ํ”ฝ์…€๋กœ ์ฐํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์•„์ง ํ…์Šค์ณ๋„ ์—†๊ณ  ๋ผ์ดํŒ…๋„ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ใ„ด (๋ฒ„ํ…์Šค ์‰์ดํ„ฐ ๋‹จ๊ณ„์—์„œ ๋ผ์ดํŒ…์„ ์—ฐ์‚ฐํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ง์ž…๋‹ˆ๋‹ค.) ์ด์ œ ์—ฌ๊ธฐ์—์„œ ํ”ฝ์…€์‰์ด๋”๊ฐ€ ๊ฐ€๋™๋˜๋ฉด์„œ ์กฐ๋ช…๊ณผ ํ…์Šค์ณ, ๊ทธ๋ฆผ์ž์™€ ๊ฐ์ข… ํŠน์ˆ˜ํšจ๊ณผ ๋“ฑ์„ ์—ฐ์‚ฐํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•„์šฐ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์‹ค์ œ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ ‡๊ฒŒ ๊ฐ„๋žตํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค๋งŒ, ๊ทธ๋ž˜ํ”ฝ ์•„ํ‹ฐ์ŠคํŠธ ์ž…์žฅ์—์„œ๋Š” ์šฐ์„  ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์•Œ์•„๋‘์–ด๋„ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •์  ๋ฐ์ดํ„ฐ => [GPU (๋ฒ„ํ…์Šค ์…ฐ์ด๋” - ์ •์  ์ขŒํ‘œ ๋ณ€ํ™˜) = ์ •์ ์œ„์น˜ > (๋ ˆ์Šคํ„ฐ๋ผ์ด์ €) = ํ”ฝ์…€ ์œ„์น˜ > (ํ”ฝ์…€ ์…ฐ์ด๋” - ํ”ฝ์…€ ์ƒ‰์ƒ๊ฒฐ์ •)] => ํ”ฝ์…€ ์ƒ‰์ƒ=


๋‹ค๋ ‰์—์„œ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ๊ณต๋ถ€๊ฐ€
๋กœ์ปฌ ๋ทฐ - ์›”๋“œ ๋ทฐ - ์นด๋ฉ”๋ผ ๋ทฐ ์ „ํ™˜ ๊ณผ์ •?

๊ทธ๋ฆผ์ž ๋งŒ๋“ค๊ธฐ?

์…ฐ์ด๋”์—์„œ ์ •์ ์ด๋‚˜ ํ”ฝ์…€ ๊ณ„์‚ฐ. ex) ์ •์  ์…ฐ์ด๋”์—์„œ ๋ชจ๋ธ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊ณ , ํ™”๋ฉด์— ๋„์šฐ๊ธฐ ์ „์— ํ”ฝ์…€๋งˆ๋‹ค ๊นŠ์ด ๊ฐ™์€๊ฑฐ ์ƒˆ๊ฒจ์„œ ๋…ธ๋ฉ€ ๋งตํ•‘ ํ•˜๋Š”๊ฑฐ.

๋Œ€์ถฉ ์ด๋Ÿฐ ๊ฒƒ๋“ค ์ดํ•ดํ•˜๋ฉด ๋ Œ๋”๋ง ํŒŒ์ดํ”„ ๋ผ์ธ ์–ผ์ถ” ์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ?

๋„ค ์ขŒํ‘œ๊ณ„๊ฐ€ ๊ณ„์† ๋ณ€ํ•˜๋Š”๋ฐ ๊ทธ ๋ช…์นญ๋“ค์ด๋ž‘ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๋“ค ์•Œ๋ฉด๋ ๊บผ๊ฐ™์•„์š” ๋™์ฐจ์ขŒํ‘œ๊ณ„๋ž‘ ํผ์ŠคํŽ™ํ‹ฐ๋ธŒ ๋””๋ฐ”์ด๋“œ์ „ํ›„ xyzw๊ฐ’์ด ๋ญ”์ง€ ์•„๋Š”๊ฒŒ ์ค‘์š”ํ•œ๋“ฏ

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.