포슀트

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 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.