# ScratchPixel - 컴퓨터 그래픽스를 기초부터 무료로 배우기

> Clean Markdown view of GeekNews topic #25414. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25414](https://news.hada.io/topic?id=25414)
- GeekNews Markdown: [https://news.hada.io/topic/25414.md](https://news.hada.io/topic/25414.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-29T19:32:39+09:00
- Updated: 2025-12-29T19:32:39+09:00
- Original source: [scratchapixel.com](https://www.scratchapixel.com)
- Points: 40
- Comments: 1

## Summary

**Scratchapixel**은 컴퓨터 그래픽스의 원리와 구현을 **기초 수학부터 3D 렌더링, 절차적 생성**까지 단계적으로 다룰 수 있는 무료 온라인 플랫폼입니다. 실습 중심의 강의 구조로, 복잡한 이론 설명보다 **직접 눈으로 확인할 수 있는 시각적 결과**를 먼저 경험하도록 설계되어 있습니다. 최근에는 **Vulkan API 과정**도 추가되었습니다.

## Topic Body

- 컴퓨터 그래픽스의 기초부터 고급 주제까지 무료로 학습할 수 있는 온라인 교육 플랫폼  
- **3D 렌더링**, **수학적 기초**, **디지털 이미징**, **절차적 생성**, **툴링** 등 다양한 주제를 체계적으로 다룸  
- 실습 중심의 강의 구조로, 이론보다 **직접적인 결과**를 먼저 경험하도록 설계  
- **Vulkan API 학습 과정(신규)**, **3D 프로그래밍 블로그(예정)**, **도서(출간 예정)** 등 계속 발전중  
- 개발자와 디자이너가 **컴퓨터 그래픽스의 원리와 구현 기술**을 깊이 이해할 수 있는 무료 학습 자원  
  
---  
- **Scratchapixel**은 “Learn computer graphics from scratch and for free”라는 슬로건 아래, **컴퓨터 그래픽스 전반을 무료로 학습할 수 있는 웹사이트**임  
### 현재 등록된 과정들  
- ## 3D 렌더링의 기초 (The Foundations of 3D Rendering)  
  - **초보자 친화적 순서로 구성된 렌더링 입문 강의**  
    - 이론보다 **직접적인 결과물 구현**을 먼저 다루는 접근 방식을 채택  
  - 주요 강의 주제는 다음과 같음  
    - **Ray-Tracing 입문**, **3D 장면 렌더링**, **Rasterization**, **투영 행렬**, **셰이딩과 조명**, **텍스처링**, **가속 구조**, **볼륨 렌더링** 등  
  - 각 강의는 실제 구현 예제와 함께 **픽셀 좌표 계산**, **핀홀 카메라 모델**, **BRDF 및 셰이더 개념** 등을 다룸  
- ## 컴퓨터 그래픽스를 위한 수학 (Mathematics for Computer Graphics)  
  - 그래픽스 구현에 필요한 **수학적 이론과 도구**를 설명  
    - 이 섹션은 입문용이 아니라, 다른 강의에서 언급된 개념을 참고할 **참조용 자료**로 구성  
  - 주요 주제는 **기하학**, **행렬 역연산(Gauss-Jordan 방법)** , **보간법**, **LookAt 함수**, **셰이딩 수학**, **몬테카를로 방법**, **푸리에 변환** 등  
- ## Computer Graphics Gems  
  - 특정 카테고리에 속하지 않지만 흥미로운 **개별 그래픽스 주제 모음**  
    - 현재는 **Blackbody 복사** 강의만 포함됨  
- ## Geometry  
  - **컴퓨터 그래픽스에서 형태를 정의하는 방법**을 다룸  
    - **Bézier 곡선과 곡면**을 이용한 형태 표현 방법을 설명  
- ## Digital Imaging  
  - **이미지 파일 처리와 색상 관리**를 다룸  
  - 주요 주제는 **빛과 색 공간**, **디지털 이미지의 파일-화면 변환**, **기본 이미지 조작** 등  
- ## Procedural Generation of Virtual Worlds  
  - **자연 현상의 절차적 시뮬레이션**을 다룸  
  - **Value Noise**, **Perlin Noise**, **하늘색 시뮬레이션** 등의 주제를 포함  
- ## Tooling  
  - **3D 도구 개발과 상호작용 기술**을 다룸  
  - **윈도우 관리(Windowing)** , **OBJ 파일 포맷**, **카메라 내비게이션 제어** 등의 내용을 포함  
### 최근 뉴스   
- 곧 오픈할 **블로그**는 3D 프로그래밍뿐 아니라 **AI와 교육** 등 관련 주제를 다룰 예정  
- **Vulkan API**에 대한 새로운 강의가 추가될 예정   
- "Learn Computer Graphics Programming from Scratch"라는 제목의 도서도 출간 예정

## Comments



### Comment 48410

- Author: neo
- Created: 2025-12-29T19:32:39+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46410210) 
- 이 웹사이트가 정말 많이 발전했음. 산타가 기부를 남겨야 할 정도로 훌륭함  
  **컴퓨터 그래픽스** 분야에는 더 많은 **오픈 교육 자료**가 필요하다고 생각함. 예전 기술들은 오래된 책 속에 묻혀 있고, 새로운 기술들은 기업의 벽 뒤에 가려 있음. Sergei Savchenko의 *3D Graphics Programming Games and Beyond* 같은 책이 좋은 예임.  
  요즘 그래픽스 API들은 불필요하게 복잡해서, 차라리 GPU를 잊고 **소프트웨어 래스터라이저**나 **레이 트레이서**를 직접 구현하는 게 좋은 출발점이라 봄.  
  다만 이 사이트는 Discord 외에 연락 방법이 없는 게 아쉬움. 기부 페이지도 메인 페이지에서 바로 갈 수 있으면 좋겠음
  - 예전에 한 학생이 3D 게임을 만들고 싶다고 했을 때, 교수님이 난감해하셨던 기억이 있음. 그래서 내가 “도서관에서 Foley & Van Dam 책을 빌려보라”고 조언했음. 지금은 여러 개정판이 나와 있음 — [Computer Graphics (Goodreads)](https://www.goodreads.com/book/show/5257044-computer-graphics)

- 이건 정말 보물 같은 자료임  
  내 닉네임은 예전에 만들었던 **Reactor 3D 엔진**에서 따온 것임. Quake 3가 고등학교 시절 내 인생을 바꿨음. Doom이 컴퓨터에 입문하게 했다면, Quake 3는 3D에 빠지게 했음.  
  수학은 잘 몰랐지만 코드를 베껴가며 배웠고, 지금은 웹과 그래픽스가 섞인 커리어를 걷고 있음. WebGL과 WebGPU가 보편화된 덕분에, 직장에서 박사들에게 **vertex packing**과 GPU 구조체 전송법을 가르치기도 했음.  
  XNA Silverlight 개발자와 함께 일한 적도 있어서 MonoGame의 먼 친척쯤 됨. 이제는 Vulkan/DX12/Metal 같은 새로운 방식이 대세임

- 이 사이트 정말 멋짐. 꼭 살펴봐야겠음  
  대학원 시절 **레이 트레이서**를 직접 구현했는데, 그때 참고한 책이 Andrew S. Glassner의 *An Introduction to Ray Tracing*이었음. 지금은 무료로 다운로드 가능함 — [링크](https://www.realtimerendering.com/blog/an-introduction-to-ray-tracing-is-now-free-for-download/)

- 예전에 만든 **그래픽스 프로그래밍 무료 자료 모음집**이 있음. 지금은 많이 업데이트하진 않지만 도움이 될 수 있음 — [gist 링크](https://gist.github.com/notnotrobby/ceef71527b4f15869133ba7b397912e9)

- 내 커리어 대부분에서 그래픽스는 **블라인드 스팟**이었음. 데이터와 분산 시스템 쪽으로 흘러갔지만, 사실 처음엔 게임을 만들고 싶어서 프로그래밍을 시작했음  
  예전에 OpenGL로 행성 궤도 시뮬레이션을 만들거나, Flash로 이상한 슈팅 게임을 만든 적도 있음. 하지만 **Vulkan**을 배워보려 하면 코드 양에 질려서 포기하게 됨. 근본적인 개념을 잘 몰라서 그런 듯함. 언젠가 여유가 생기면 진지하게 다시 배워보고 싶음
  - WebGL이나 더 나은 선택으로 **WebGPU**를 추천함. 배우기 훨씬 쉽고, 배운 개념이 다른 API에도 적용됨 — [WebGPU Fundamentals](https://webgpufundamentals.org), [WebGL2 Fundamentals](https://webgl2fundamentals.org)
  - 나도 비슷한 느낌임. **Zbrush**와 **Maya**에 영감을 받아 셰이더로 예술을 만들어보려 했지만, 이런 거대한 소프트웨어를 부분적으로라도 복제하려면 매일 이 분야에 매달려야 할 듯함. Zbrush의 성능은 정말 경이로움
  - Vulkan은 초보자용이 아님. 기본기를 알아도 너무 장황함. **Modern OpenGL** 정도면 충분하고, Vulkan을 꼭 써야 한다면 SDL3 같은 상위 라이브러리를 쓰는 게 좋음
  - 내 생각엔 현대 그래픽스는 너무 복잡함. **GPU 프로그래밍**과 **컴퓨터 그래픽스**를 혼동하지 말아야 함. 초보자는 Vulkan보다 CPU 기반 **래스터라이저**나 **레이 트레이서**를 직접 구현해보는 게 훨씬 좋음  
    예제 자료로 [Tiny Renderer](https://haqr.eu/tinyrenderer/)와 [Ray Tracing in One Weekend](https://raytracing.github.io/books/RayTracingInOneWeekend.html)를 추천함.  
    이런 과정을 거치면 GPU가 왜 그렇게 설계되었는지 깊이 이해할 수 있음. 이후 OpenGL 4.6이나 D3D11, 그리고 [ShaderToy](https://shadertoy.com), [ShaderAcademy](https://shaderacademy.com) 같은 사이트로 확장해보길 권함  
    CPU 기반 렌더링이 여전히 중요한 이유는, 영화 렌더러들이 **정밀도** 때문에 CPU를 사용하기 때문임. 참고로 [WARP](https://learn.microsoft.com/en-gb/windows/win32/direct3darticles/directx-warp)와 [LLVMpipe](https://docs.mesa3d.org/drivers/llvmpipe.html)는 실제 프로덕션에서도 쓰이는 소프트웨어 래스터라이저임
  - Vulkan은 사실 **그래픽스 API가 아니라 저수준 GPU API**임. 그래픽스는 GPU가 할 수 있는 기능 중 하나일 뿐임. 이걸 이해하면 Vulkan의 설계가 왜 그런지 납득됨

- 이 웹사이트의 콘텐츠를 정말 즐기고 있음. 작년에 **AI 썸네일** 관련 피드백을 반영해준 것도 감사함 — [HN 피드백 링크](https://news.ycombinator.com/item?id=40622209)
  - 그래도 여전히 메인에 **오타 투성이의 이미지**가 남아 있는 건 아쉬움. 교육용 사이트로서는 보기 좋지 않음

- 올해 목표 중 하나는 **기초부터 소프트웨어 3D 렌더러**를 직접 만드는 것임. 게임 엔진도, GPU도 없이 순수하게 구현해볼 예정임
  - 훌륭한 접근임. 나도 오랫동안 그렇게 가르쳐왔음. 대부분의 사람들이 3D 그래픽스는 곧 **래스터라이제이션**이라고 생각하지만, 나는 오히려 **레이 트레이싱**으로 시작한 게 행운이었다고 느낌
  - 다른 관점에서 보고 싶다면 [Computer Graphics from Scratch](https://gabrielgambetta.com/computer-graphics-from-scratch/index.html)도 추천함. 무료이며 이름이 비슷해서 헷갈릴 수 있음
  - 또 다른 좋은 자료로 [Tiny Renderer](https://haqr.eu/tinyrenderer/)가 있음
  - “build-your-own-x” 프로젝트 모음에도 관련 가이드가 있음 — [GitHub 링크](https://github.com/codecrafters-io/build-your-own-x)
  - 3D 그래픽스를 단 하나의 수식으로 풀어주는 영상도 있음 — [YouTube: One Formula That Demystifies 3D Graphics](https://www.youtube.com/watch?v=qjWkNZ0SXfo)

- 요즘은 **LLM에 웹사이트 링크나 PDF를 넣어** 인터랙티브 학습 자료로 바꿀 수 있음. 나도 오늘 1000페이지짜리 PDF를 그렇게 변환해서 게임 엔진 공부에 활용했음. 북마크로만 남기지 않아서 좋음
  - 그런데 1000페이지 PDF를 처리할 만큼 **컨텍스트 윈도우가 큰 LLM**이 있나 궁금함

- 혹시라도 **NVIDIA의 그래픽스 API 독점**, **Google의 웹 지배**, 그리고 **AMD의 부진한 대안**이 끝나는 날이 오길 바람
