이 챕터에서 정복할 CG 개념
- 본 핸드북 16개 챕터를 마친 학습자가 다음 어디로 향해야 하는지의 명시적 지도를 세운다.
- 추천 도서·온라인 자료를 본 핸드북의 어느 챕터를 마친 직후에 읽을지 매핑한다.
- 학습자가 자기 작업 — 특히 연극·공연 맥락의 실시간 그래픽스 — 에 핸드북 개념을 통합할 수 있는 프로젝트 7개를 제시한다.
왜 이게 중요한가
POP은 학습 환경이다. 끝나는 지점이 아니라 다른 환경으로 옮겨가기 위한 발사대다. 핸드북 한 권으로는 GPU 그래픽스 파이프라인의 모든 면을 다루지 못한다. 표면(rendering)의 세부, 물리 기반 셰이딩, 가속 자료구조, 컴파일러·드라이버 레벨 최적화는 의도적으로 얕게 다뤘다. 이 챕터는 그 빈 칸을 메우는 책과 자료의 큐레이션이다. 한 권을 통째로 다시 읽지 말고, 본 핸드북의 특정 챕터를 마친 직후 그 챕터를 깊게 잇는 한 절씩만 읽는 것을 권장한다.
POP에서의 노출 지점
본 챕터는 메타 챕터이므로 POP 노드와 직접 대응하지 않는다. 다만 추천 프로젝트 7개는 핸드북에서 다룬 POP·TOP·CHOP을 다시 사용한다. 어떤 챕터의 POP을 어떤 프로젝트가 사용하는지는 아래 프로젝트 절에 명시한다.
이론 — 추천 도서와 온라인 자료
책
Real-Time Rendering, 4th edition — Akenine-Möller, Haines, Hoffman, Pesce, Iwanicki, Hillaire (2018). https://www.realtimerendering.com/book.html (TOC 공개).
- 읽는 시점: 본 핸드북 Ch.2와 Ch.14를 마친 직후. Ch.2가 pipeline의 데이터 모델을, Ch.14가 raster 단계의 흐름을 손에 쥐어준 다음 RTR4 §2(파이프라인) → §3(GPU) → §5(셰이딩) 순서로 읽으면 이름이 모두 일치한다.
- 무엇을 얻는가: GPU 파이프라인의 책 쪽 정사(canonical) 어휘. 본 핸드북이 의도적으로 다루지 않은 PBR·tone mapping·HDR·가속구조의 챕터별 지도.
- 함정: 페이지 수가 많다. 한 번에 통독하지 말고 본 핸드북 각 챕터의 "연결 고리"가 가리키는 §만 본다.
The Book of Shaders — Patricio Gonzalez Vivo, Jen Lowe. https://thebookofshaders.com/
- 읽는 시점: 본 핸드북 Ch.9 직후. 핸드북은 noise를 compute 영역에서 다뤘다. 같은 함수를 fragment 영역에서 손에 익히는 가장 부드러운 길이다.
- 무엇을 얻는가: noise·cellular·domain warping·fractal·SDF의 GLSL 단편들을 브라우저 실시간 에디터에서 만지는 경험. Ch.11 "Noise"와 Ch.12 "Cellular Noise"는 본 핸드북 Ch.9의 fragment 측 보완.
- 함정: 본 핸드북이 강조한 "데이터 모델"은 이 책의 관심사가 아니다. 두 시각을 분리해서 본다.
Physically Based Rendering, 4th edition — Pharr, Jakob, Humphreys. https://www.pbr-book.org/ (무료 온라인).
- 읽는 시점: 본 핸드북 Ch.14 이후의 다음 한 걸음으로. 본 핸드북은 raster + compute의 데이터 모델을 다뤘다. PBR4는 light transport의 수학·구현을 다룬다. 도메인이 다르므로 도약이 필요하다.
- 무엇을 얻는가: BSDF, importance sampling, integrators의 표준 어휘. 본 핸드북이 다루지 않은 offline rendering과 PBR shading의 표준.
- 함정: 실시간이 아니다. 본 핸드북의 GLSL POP 코드를 곧장 가져가는 책이 아니다.
GPU Gems 1 / 2 / 3 — NVIDIA. https://developer.nvidia.com/gpugems/ (무료 온라인).
- 읽는 시점과 챕터 매핑:
- GPU Gems 2 Ch.18 "Vertex Texture Displacement" — 본 핸드북 Ch.4 직후. TOP를 vertex displacement로 쓰는 캐노니컬한 글.
- GPU Gems 1 Ch.5 "Implementing Improved Perlin Noise" (Perlin) / GPU Gems 2 Ch.26 "Implementing Improved Perlin Noise" (Green) — 본 핸드북 Ch.9 직후. Perlin이 직접 쓴 원본과 GPU 구현.
- GPU Gems 1 Ch.38 "Fast Fluid Dynamics" (Harris) / GPU Gems 3 Ch.30 "Real-Time Simulation and Rendering of 3D Fluids" — 본 핸드북 Ch.11 직후. ping-pong fluid의 캐노니컬 문서.
- GPU Gems 3 Ch.31 "Fast N-Body Simulation with CUDA" (Nyland et al.) / GPU Gems 3 Ch.32 "Broad-Phase Collision Detection with CUDA" (Le Grand) — 본 핸드북 Ch.13 직후. 본 핸드북이 spatial hash를 짚고 넘어간 그 자리를 가장 깊게 잇는다.
- GPU Gems 2 Ch.3 "Inside Geometry Instancing" (Carucci) / GPU Gems 3 Ch.2 "Animated Crowd Rendering" (Dudash) — 본 핸드북 Ch.15·Ch.16 직후.
- GPU Gems 3 Ch.1 "Generating Complex Procedural Terrains" (Geiss) — Ch.16 직후. GPU 측 culling·LOD의 실전.
- GPU Gems 3 Ch.39 "Parallel Prefix Sum (Scan)" (Harris, Sengupta, Owens) — Ch.16 직후. compaction·sort의 primitive.
온라인
- Inigo Quilez articles — https://iquilezles.org/articles/. SDF·noise·smoothstep·palette의 단일 최고 출처. Ch.9 이후 자주 돌아오는 자료. "Domain warping", "fBm", "gradient noise derivatives"는 핸드북 Ch.9를 그대로 잇는 글.
- LearnOpenGL — https://learnopengl.com/. 본 핸드북이 "POP 시각"에서 다룬 raster pipeline을 OpenGL API 시각에서 다시 본다. Ch.2·Ch.14의 짝.
- WebGPU Fundamentals — https://webgpufundamentals.org/. Ch.17의 직접적 다음 단계. 본 핸드북의 어휘로 그대로 옮길 수 있는 첫 외부 환경.
- Karl Sims — Reaction-Diffusion (https://www.karlsims.com/rd.html) — Ch.11 직후. Gray-Scott을 평이한 언어로 풀어쓴 글.
- Craig Reynolds — Boids (https://www.red3d.com/cwr/boids/) — Ch.13 직후. 분리·정렬·응집 원본.
손작업 (Hands-on) — 추천 프로젝트 7개
각 프로젝트는 학습자가 자기 진행 작업·공연·설치에 통합할 수 있는 형태다. 7개 모두 본 핸드북의 POP/TOP/CHOP만으로 시작할 수 있다.
프로젝트 1 — Heightmap이 실시간으로 변하는 풍경
- 한 줄 설명: TOP에서 합성한 noise 텍스처를 매 프레임 vertex displacement로 사용해서, 정지된 grid가 움직이는 지형이 되도록 한다.
- 사용 챕터: Ch.4 (TOP→POP), Ch.9 (Noise/Displacement), Ch.14 (Render).
- 난이도 / 시간: ★☆☆ / 2–4시간.
- 결과물의 시각적 형태: 카메라가 천천히 움직이는 평면 grid. 표면이 저주파 noise로 부드럽게 일렁이고, 고주파 detail이 위에 얹혀 풍경의 결을 만든다. 무대 위 흰 단상에 투사하면 단상이 호흡하는 듯 보인다.
프로젝트 2 — 카메라가 들어가면 입자가 흩어지는 안개 (depth-aware repulsion)
- 한 줄 설명: 점 입자 구름 한가운데로 카메라가 진입하면 입자가 카메라를 회피한다. 카메라 깊이를 TOP에서 받아 POP attribute로 옮긴 뒤 입자 속도에 더한다.
- 사용 챕터: Ch.4 (TOP→POP), Ch.10 (Particle), Ch.13 (Neighborhood — 이웃 회피 추가 시).
- 난이도 / 시간: ★★☆ / 4–8시간.
- 결과물의 시각적 형태: 약 5만 개의 작은 점이 부유한다. 가상 카메라가 입자 구름 한가운데로 들어가는 순간, 카메라 주변 구형 영역의 입자들이 바깥으로 밀려난다. 카메라가 빠지면 천천히 다시 모인다.
프로젝트 3 — Reaction-Diffusion 위에 자라는 라인 식물
- 한 줄 설명: TOP에서 Gray-Scott RD를 ping-pong으로 시뮬레이션하고, 그 출력 텍스처의 농도 등치선을 따라 POP 라인 스트립을 생성·갱신한다.
- 사용 챕터: Ch.11 (Feedback), Ch.13 (Neighborhood), Ch.14 (Render).
- 난이도 / 시간: ★★★ / 1–2주.
- 결과물의 시각적 형태: 검은 배경 위에 흰 RD 패턴이 천천히 흐르고, 그 패턴의 능선을 따라 가는 흰 선이 자라난다. 시간이 지나면 선이 RD 패턴의 변화에 따라 끊기고 다시 이어진다. 식물의 잎맥·뿌리 같은 느낌.
프로젝트 4 — 백만 인스턴스 별
- 한 줄 설명: 백만 개의 POP point에 위치·크기·색상 attribute를 채우고, 한 번의 instanced draw로 모든 점을 별로 렌더한다. 점광원 효과는 GLSL MAT에서 fragment 측 처리.
- 사용 챕터: Ch.15 (Instancing), Ch.16 (Instancing 응용).
- 난이도 / 시간: ★★☆ / 4–8시간.
- 결과물의 시각적 형태: 둥근 깊이감 있는 별 무리. 시야에 따라 가까운 별은 큰 광점으로, 먼 별은 미세한 점으로. 카메라가 회전하면 시점에 의해 별 사이의 시차(parallax)가 느껴진다.
프로젝트 5 — 무대 큐별 boids
- 한 줄 설명: Ch.13의 boids 시뮬레이션에 공연 큐(시간·마디·신호)를 CHOP으로 주입해서, 큐가 바뀌면 분리·정렬·응집 가중치가 부드럽게 전환되도록 한다.
- 사용 챕터: Ch.5 (POP↔︎CHOP 가역성), Ch.13 (Neighborhood).
- 난이도 / 시간: ★★★ / 1–2주.
- 결과물의 시각적 형태: 약 5천 개의 작은 삼각형이 자기 추진력으로 화면을 떠다닌다. 어떤 큐에서는 새 떼처럼 한 덩어리로 뭉치고, 다른 큐에서는 분산되어 안개처럼 떠다닌다. 큐 전환 1–2초 동안 행동이 부드럽게 보간된다.
프로젝트 6 — 무용수 트래킹 데이터 → POP attribute로 흡인장 → 입자 응집
- 한 줄 설명: 무용수의 신체 관절 위치(Kinect/ZED/외부 트래킹)를 CHOP으로 받아 POP point에 attractor 목록으로 주입하고, 점 입자들이 무용수 형상으로 흘러가서 모인다.
- 사용 챕터: Ch.10 (Particle), Ch.13 (Neighborhood — attractor 검색).
- 난이도 / 시간: ★★★ / 2–4주.
- 결과물의 시각적 형태: 어두운 무대. 무용수의 윤곽이 천천히 모이는 백색 점 구름으로만 보인다. 무용수가 움직이면 입자가 신체를 따라 흐르고, 정지하면 신체에 정확히 응집한다. 무용수의 몸이 빛으로 그려진다.
프로젝트 7 — 인터랙티브 RD 캔버스
- 한 줄 설명: 관객의 손/마우스 입력 위치를 TOP에 흰 점으로 찍어 Gray-Scott RD의 seed로 사용하고, RD 결과를 큰 화면에 투사한다. 관객이 그린 자국에서 패턴이 자라난다.
- 사용 챕터: Ch.4 (TOP→POP / Touch input), Ch.11 (Feedback), Ch.14 (Render).
- 난이도 / 시간: ★★☆ / 4–8시간.
- 결과물의 시각적 형태: 큰 흰 캔버스에 관객의 손가락 자국에서 검은 RD 패턴이 점점 자라난다. 시간이 지나면 자국이 균사·산호·뇌 주름 같은 자기 조직된 패턴으로 변한다. 새 자국이 들어오면 그 자리에서 다시 자라기 시작한다.
메타-가이드 — 한 챕터를 마칠 때마다 자기 작업을 어떻게 다시 볼 것인가
한 챕터를 마치면 본 핸드북을 덮기 전에 자기 진행 중인 작업 한 가지를 떠올리고 이 질문을 한다. "이 챕터가 정의한 추상화 — attribute, dispatch, ping-pong, instancing 등 — 가 그 작업 안에 이미 숨어 있는가, 아니면 들어갈 자리가 있는가?" 들어갈 자리가 있다면 가장 작은 형태로 한 줄짜리 GLSL POP을 작성해 본다. 들어갈 자리가 없다면 왜 없는지를 한 줄로 적는다. 두 답 모두 다음 챕터로 가는 자기 지도가 된다. 이 핸드북의 마지막 가치는 코드가 아니라 이 자기 검토 루틴이다.
노드 ↔︎ GLSL 매핑
본 챕터는 큐레이션 챕터이므로 별도의 노드↔︎GLSL 매핑을 두지 않는다. 추천 프로젝트 7개 각각이 핸드북의 챕터로 돌아가는 인덱스다.
확인 질문 (Self-check)
- 위 추천 프로젝트 7개 중, 자기 진행 중인 공연·설치·실험과 가장 가까운 것은 무엇인가? 그 프로젝트의 어떤 챕터로 먼저 돌아갈 것인가?
- Real-Time Rendering 4ed의 어느 챕터가 본 핸드북 Ch.14의 다음 단계에 해당하는가? 그 챕터를 읽었을 때 본 핸드북의 어휘가 그대로 통하는가?
- PBR4(Pharr et al.)와 본 핸드북은 다루는 도메인이 다르다. 어떻게 다른가? 한 문장으로 말할 수 있는가?
- GPU Gems 3 Ch.32 "Broad-Phase Collision Detection"의 uniform grid 방식이 본 핸드북의 어느 챕터의 어느 절을 어떻게 잇는가?
- 본 핸드북을 끝낸 시점에서 자기 작업에 즉시 적용 가능한 가장 작은 한 가지는 무엇인가? 그것을 한 줄짜리 GLSL POP으로 적을 수 있는가?
연결 고리
본 챕터의 모든 자료는 위 이론 섹션에 인라인으로 인용했다. 핵심 진입점만 다시 한 번 모은다.
- Real-Time Rendering 4ed TOC: https://www.realtimerendering.com/book.html
- The Book of Shaders: https://thebookofshaders.com/
- Physically Based Rendering 4ed (무료): https://www.pbr-book.org/
- GPU Gems 1/2/3: https://developer.nvidia.com/gpugems/
- Inigo Quilez articles: https://iquilezles.org/articles/
- LearnOpenGL: https://learnopengl.com/
- WebGPU Fundamentals: https://webgpufundamentals.org/
- Karl Sims — Reaction-Diffusion: https://www.karlsims.com/rd.html
- Craig Reynolds — Boids: https://www.red3d.com/cwr/boids/
이 챕터의 한 줄 명제
핸드북의 마지막 페이지는 끝이 아니라 다음 한 권을 어느 자리에 펼칠지의 목차다.