들어가기에 앞서 CUDA와 Visual Studio 2022를 설치하고 프로젝트를 생성하는 방법을 안내해드리겠습니다.
1. CUDA Toolkit 설치
•
•
운영 체제 선택: Windows를 선택하고, 시스템 사양에 맞는 버전을 다운로드합니다.
•
설치 실행: 다운로드한 설치 파일을 실행하고, 기본 설정으로 설치를 진행합니다. Express 설치를 권장합니다.
2. Visual Studio 2022 설치/설정
•
Visual Studio 2022 설치: 아직 설치하지 않았다면, Microsoft 웹사이트에서 Visual Studio 2022 Community(무료) 또는 Professional/Enterprise 버전을 다운로드합니다.
•
워크로드 선택: 설치 시 "C++를 사용한 데스크톱 개발" 워크로드를 선택해야 합니다. 이미 설치되어 있다면, Visual Studio Installer를 통해 수정할 수 있습니다.
3. CUDA 프로젝트 생성
•
Visual Studio 실행: Visual Studio 2022를 실행합니다.
•
새 프로젝트 만들기: "새 프로젝트 만들기"를 선택합니다.
•
CUDA 템플릿 선택: 검색 상자에 "CUDA"를 입력하고, "CUDA 12.x Runtime" 템플릿을 선택합니다 (버전은 설치한 CUDA Toolkit에 따라 다를 수 있습니다).
•
프로젝트 구성: 프로젝트 이름과 위치를 지정하고 "만들기"를 클릭합니다.
4. 프로젝트 설정 확인
•
프로젝트 속성: 솔루션 탐색기에서 프로젝트를 우클릭하고 "속성"을 선택합니다.
•
CUDA C/C++ 설정: "CUDA C/C++" 섹션에서 GPU 아키텍처 설정을 확인합니다. 보통 compute_XX,sm_XX 형식으로 되어 있으며, 사용 중인 GPU에 맞게 설정되어야 합니다.
5. 테스트 코드 작성 및 실행
주의사항
•
NVIDIA GPU가 설치되어 있어야 합니다.
•
CUDA Toolkit 버전과 Visual Studio 버전의 호환성을 확인하세요.
•
GPU 드라이버가 최신 버전으로 업데이트되어 있어야 합니다.
Contents (목차)
2.1 The PPM Image Format (PPM 이미지 형식)
2.2 Creating an Image File (이미지 파일 생성)
2.3 Adding a Progress Indicator (진행 표시기 추가)
3.1 Color Utility Functions (색상 유틸리티 함수)
4.1 The ray Class (ray 클래스)
4.2 Sending Rays Into the Scene (장면에 광선 보내기)
5.1 Ray-Sphere Intersection (광선-구 교차)
5.2 Creating Our First Raytraced Image (첫 번째 레이트레이싱 이미지 생성)
6.1 Shading with Surface Normals (표면 법선을 이용한 셰이딩)
6.2 Simplifying the Ray-Sphere Intersection Code (광선-구 교차 코드 단순화)
6.3 An Abstraction for Hittable Objects (충돌 가능한 객체를 위한 추상화)
6.4 Front Faces Versus Back Faces (앞면 대 뒷면)
6.5 A List of Hittable Objects (충돌 가능한 객체의 목록)
6.6 Some New C++ Features (몇 가지 새로운 C++ 기능)
6.7 Common Constants and Utility Functions (공통 상수 및 유틸리티 함수)
6.8 An Interval Class (구간 클래스)
8.1 Some Random Number Utilities (몇 가지 난수 유틸리티)
8.2 Generating Pixels with Multiple Samples (다중 샘플을 사용한 픽셀 생성)
9.1 A Simple Diffuse Material (간단한 확산 재질)
9.2 Limiting the Number of Child Rays (자식 광선 수 제한)
9.3 Fixing Shadow Acne (그림자 노이즈 수정)
9.4 True Lambertian Reflection (진정한 람베르시안 반사)
9.5 Using Gamma Correction for Accurate Color Intensity (정확한 색상 강도를 위한 감마 보정 사용)
10.1 An Abstract Class for Materials (재질을 위한 추상 클래스)
10.2 A Data Structure to Describe Ray-Object Intersections (광선-객체 교차를 설명하는 데이터 구조)
10.3 Modeling Light Scatter and Reflectance (빛의 산란과 반사율 모델링)
10.4 Mirrored Light Reflection (거울 반사)
10.5 A Scene with Metal Spheres (금속 구가 있는 장면)
10.6 Fuzzy Reflection (흐릿한 반사)
11.1 Refraction (굴절)
11.2 Snell's Law (스넬의 법칙)
11.3 Total Internal Reflection (전반사)
11.4 Schlick Approximation (슐릭 근사)
11.5 Modeling a Hollow Glass Sphere (속이 빈 유리 구 모델링)
12.1 Camera Viewing Geometry (카메라 뷰잉 기하학)
12.2 Positioning and Orienting the Camera (카메라 위치 및 방향 설정)
13.1 A Thin Lens Approximation (얇은 렌즈 근사)
13.2 Generating Sample Rays (샘플 광선 생성)
14.1 A Final Render (최종 렌더)
14.2 Next Steps (다음 단계)
14.2.1 Book 2: Ray Tracing: The Next Week (책 2: 레이 트레이싱: 다음 주)
14.2.2 Book 3: Ray Tracing: The Rest of Your Life (책 3: 레이 트레이싱: 남은 인생)
14.2.3 Other Directions (다른 방향)



