GN⁺: 그래픽 프로그래머가 되는 방법
(gpuopen.com)AMD의 도구, 라이브러리 및 효과에 대한 소개
- AMD의 GPUOpen 웹사이트는 GPU 관련 도구, 라이브러리 및 효과에 대해 배우기에 최적의 장소임.
- 초급 소프트웨어 엔지니어도 쉽게 이해할 수 있도록 설계된 자료와 가이드를 제공함.
- 사용자들이 AMD의 기술을 활용하여 최적화된 그래픽과 성능을 달성할 수 있도록 지원함.
GN⁺의 의견
- 이 글에서 가장 중요한 것은 AMD의 GPUOpen이 그래픽 개발자들에게 유용한 자원을 제공한다는 점임.
- 초급 개발자들도 쉽게 접근하고 활용할 수 있는 자료가 많아, 그래픽 프로그래밍에 관심 있는 사람들에게 흥미로울 것임.
Hacker News 의견
- 초급 소프트웨어 엔지니어가 컴퓨터 그래픽스 분야에 입문할 때, 사용할 도구를 먼저 고민하기보다는 무엇을 만들고 싶은지에 대해 생각해보는 것이 중요함. 최종 결과물에 집중하면서 첫 걸음을 내딛어야 함. 많은 도구들이 그래픽 프로그래밍의 다양한 단계를 추상화하고 있어, 처음부터 저수준 코드에 너무 많은 시간을 소비할 위험이 있음. 또한, 특정 산업 분야에서는 Unity, TouchDesigner, three.js, After Effects 같은 도구를 사용하고 C++는 거의 쓰지 않는 경우가 많음. 깊은 이해는 중요하지만, 실제 산업에 들어가면서 배우는 것이 더 효율적임.
- 그래픽 프로그래머로서 알아야 할 것들에는 프로그래밍과 API 이상의 지식이 포함됨. 회전, 뷰, 투영 행렬, 벡터 수학, 셰이더 프로그래밍, 절차적 기본 형태, 이미지 합성, 포워드 및 디퍼드 렌더링, 샘플링 기법, 그림자 및 조명 기술, 3D 앱에서 데이터 추출 방법, 프로파일러 및 디버거 사용, Siggraph 논문 읽기, 공간 분할 및 볼륨 계층 기법, 간단한 레이트레이서 구축, 기본 형태에 대한 이해, 입자 및 시뮬레이션 경험 등이 있음.
- Pikuma의 'Graphics From Scratch' 과정을 추천함. SDL을 사용하여
set_pixel
함수를 작성하는 것으로 시작하고, 모든 행렬 연산, 정점 변환, 삼각형 래스터화를 직접 코드로 작성함. 각 픽셀의 색상을 계산하는 과정을 배움. - DX/VK/OGL로 시작하는 것 외에도 그래픽 프로그래머가 되는 다양한 방법이 있음. C++를 전혀 사용하지 않아도 됨. 예를 들어, 3Blue1Brown은 Python으로 놀라운 3D 그래픽을 만듦. 게임 엔진을 작성하고 싶다면 DirectX나 Vulkan을 배우고, 브라우저 애플리케이션을 작성하고 싶다면 WebGL을 배움. 이러한 API는 무겁고 그래픽에 대해 많이 가르쳐주지 않을 수 있음. 그래픽 개념을 배우고 싶다면 어떤 언어로든 자체 래스터라이저와 레이 트레이서를 작성함. Processing, PlotDevice.io, NodeBox, DrawBot, ShaderToy 등 초보자에게 접근하기 쉽고 재미있는 그래픽 라이브러리 및 코딩 환경이 많음.
- Shadertoy에서 셰이더 작성을 통해 그래픽스 프로그래밍을 배울 수 있음. 많은 그래픽 프로그래머가 여기서 시작함. SDF, 레이 마칭, 노이즈 함수 등에 대한 10개 이상의 튜토리얼을 만듦.
- 그래픽 프로그래밍 산업에서 실제로 사용하는 자료를 공유함. 그래픽 분야는 너무 커져서 모든 사람에게 맞는 학습 방법이 존재하지 않음. 그래픽을 배우고 싶다면 멘토를 찾는 것이 좋음.
- 컴퓨터 그래픽스에는 수백 가지의 전문 분야가 있으며, 해당 웹사이트는 프로그래밍 그래픽 SDKs라는 작은 부분에만 초점을 맞춤.
- 게임 개발자이지만 그래픽 프로그래머는 아님. 현대 그래픽 API와 GLSL 셰이더를 사용하지만, 13살 아이가 Scratch나 Python에서 C++로 넘어가고 싶어할 때, 1999년부터 가지고 있던 OpenGL 1.2 DLL을 사용하여 간단한 코드를 작성하게 함. 현대 API의 복잡한 설정보다 훨씬 재미있음. 아이는 보로노이 다이어그램과 같은 계산 기하학에 관심이 있어서 그래픽 API는 수단에 불과함. C++와 구식 OpenGL의 성능은 Scratch보다 훨씬 빠름. 간단한 API를 사용하여 C++와 OpenGL을 동시에 배우는 것은 상당히 야심 찬 도전임. 단순함이 학습을 관리 가능하게 유지하고, 잘 진행되고 있음. 멋진 마칭 스퀘어 데모를 만들고, 런타임에 파라미터를 조정할 수 있는 IMgui 메뉴를 추가하는 데 도움을 줌.
- 개인적인 여정을 공유함. 두 해 전에 여러 튜토리얼과 유튜브 비디오를 따라 첫 3D 엔진을 만듦. 매우 간단하지만, 간단한 것을 좋아함. 현재 이 엔진을 사용하여 도시 건설 게임을 만드는 작업을 진행 중임. 행렬과 교차 곱을 사용하여 물건을 조작하는 방법을 배우는 것이 매우 재미있음.
- BASIC 프로그래밍 언어로 작성된 간단한 그래픽 코드 예시를 제공함.