# raytracing

22개의 포스트
post-thumbnail

[Ray Tracing in One Weekend 번역] 11. Positionable Camera

유전체와 마찬가지로 카메라는 디버깅하기가 어렵습니다. 그래서 저는 항상 점진적으로 코드를 작성합니다. 첫 번째, 조절할 수 있는 시야(field of view : fov)를 적용합니다. fov는 문을 통해 보는 각도입니다. 우리가 다루는 이미지는 정사각형이 아니기 때문

2020년 12월 1일
·
0개의 댓글
post-thumbnail

[miniRT] 4. 광선 구조체 만들기

레이 트레이싱을 구현하기 위해서는 광선을 쏘아 픽셀에 어떤 색이 보이는지 계산하기 위한 광선 구조체가 필요합니다. 광선은 P(t) = A + tb 로 나타낼 수 있습니다. A는 광선의 원점이고 b는 광선의 방향입니다. t는 실수입니다. t값을 변경하면 광선 상의 어떠한

2020년 11월 28일
·
0개의 댓글
post-thumbnail

[miniRT] 3. 벡터 구조체 만들기

그래픽 연산을 하기 위해 필요한 벡터 구조체와 벡터 함수들을 만들겠습니다. 이 벡터 구조체로 색상, 위치, 방향 등등의 많은 것들을 표현할 수 있습니다.먼저 벡터 구조체와 함수의 선언을 vec3.h 헤더 파일에 작성합니다.벡터 구조체벡터 사칙연산 함수벡터 내적, 외적

2020년 11월 26일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 9. Metal

만약 다른 메테리얼을 가진 또다른 오브젝트를 원한다면, 설계 결정사항을 가지고 있습니다. 많은 매개 변수와 다른 메테리얼 타입을 가진 범용적인 메테리얼을 만들 수 있습니다. 이건 나쁜 접근 방식이 아닙니다. 또는 동작을 캡슐화하는 추상 메테리얼 클래스를 만들 수 있습니

2020년 11월 7일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 12-Defocus Blur

마지막 기능으로 Blur 효과를 만들어 보자. Blur는 이미지를 흐리게 하는 효과다. 원문은 반영하고자하는 현실의 카메라에서 일어나는 현상을 설명한다. 하지만 저걸 다 구현할 게 아니므로 목표인 Blur를 위해 필요한 것만 챙기자. Blur, 즉 이미지를 흐릿하게하는

2020년 10월 26일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 11-Positionable Camera

이번엔 카메라 기능들을 구현해 본다. 먼저 시야를 조정하는 데 쓰는 field of view(fov)를 구현하자. fov는 수직, 수평 중 수직 fov를 사용할 것이다. 결국 fov가 뭐하는 거냐면, 지금까지 같은 뷰포트로 이미지를 출력했다면 fov값으로 뷰포트의 크기

2020년 10월 24일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 8. Diffuse Materials

이제, 물체와 여러 개의 픽셀 당 광선을 만들었으므로, 사실적인 메테리얼을 만들 수 있습니다. 디퓨즈(diffuse(matte)) 메테리얼부터 시작하겠습니다. 한 가지 질문은 지오메트리와 메테리얼을 다양하게 조합할 것(메테리얼을 여러 구에 할당할 수 있습니다. 그 반대

2020년 10월 24일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 10-Dielectrics

이번 챕터는 Dialectrics라는 material을 구현해 본다. 물, 유리, 다이아몬드 같은 투명한 물질을 Dielectrics(유전체)라고 한다. 광선이 Dialectrics에 닿으면 반사된 광선과 굴절되는 광선으로 나뉜다. 우리는 이 두 현상 중에서 무작위로

2020년 10월 23일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 9-Metal

Metal이라는 재질의 사물을 표현해본다.Material 추상class를 작성한다. 다양한 재질을 구현할 때 쓰기 위함이다. 예제에서 쓰는 Material에는 다음 두 가지가 필요하다.산란하는(scattered) 광선을 생성하는 기능산란 되는 광선의 감쇠 정도원문은 c

2020년 10월 19일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 7. Antialiasing

실제 카메라로 사진을 찍으면 가장자리에서 계단현상(jaggies)이 대개 발생하지 않습니다. 가장자리 픽셀에서 앞쪽과 뒤쪽의 색상이 혼합되기 때문입니다. 각 픽셀 내부의 샘플들의 평균을 활용하여 같은 효과를 구현할 수 있습니다. 계층화(stratification)는 신

2020년 10월 19일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 8-Diffuse Materials

이번엔 물체의 재질에 따라 빛의 확산 및 반사 등을 적용해 물체를 더 사실적으로 표현하는 작업을 한다. 특히 복잡한 이론이 많은 부분이라 그냥 그런 원리를 적용했구나하고 넘어가도 좋다.이번 주제에 구현할 Diffuse Materials은 matte라는 재질로 표면이 거

2020년 10월 17일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 7-Antialiasing

이번 주제는 Antialiasing이다. 백문이 불여일견이라고 먼저 원문의 7단원 가장 마지막에 위치한 이미지인 >Image 6: Before and after antialiasing 를 먼저 살펴보자. 이미지를 살펴봤다면 Antialiasing 전후의 이미지가 다르

2020년 10월 16일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 6-Surface Normals and Multiple Objects(2)

광선이 쏘아져 부딪친 물체의 표면에 대해 외면과 내면 중 어느 측면에서 광선이 쏘아졌는지는 중요한 요소다. 광선이 쏘아진 측면에 따라 물체를 다르게 rendering해야하기 때문이다.(ex: 문자가 쓰여진 종이의 양면, 내면과 외면을 가진 유리구슬 등) 이번에할 작업은

2020년 10월 15일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 6. Surface Normals and Multiple Objects

첫 번째로, 음영 표현을 위해 표면 법선 벡터를 계산합니다. 이것은 교차점의 표면에 대하여 수직인 벡터입니다. 법선 벡터를 만들기 위한 두 가지 설계 결정사항이 있습니다. 한 가지는 법선 벡터의 크기가 단위 길이인지 여부입니다. 법선 벡터의 크기가 단위 길이라면 음영을

2020년 10월 14일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 5. Adding a Sphere

레이 트레이서에 오브젝트 한 개를 추가해봅시다. 구(sphere)는 광선이 오브젝트를 교차하는지 계산이 매우 간단하기 때문에 레이 트레이서에서 구가 자주 사용됩니다.

2020년 10월 12일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 5-Surface Normals and Multiple Objects(1)

이전 포스트에서 풍경 안에 구를 그렸지만 입체감이 없어 그저 붉은 원처럼 보인다. 이번엔 shading으로 표면의 입체감을 살려보자. 원문의 normal은 구의 중심에서 구의 표면의 임의의 점 P방향의 방향벡터를 뜻한다. normal이니 방향벡터니 설명하면 길어지니 우

2020년 10월 9일
·
0개의 댓글
post-thumbnail

[42cursurs]Ray Tracing in One Weekend 4-Adding a Sphere

이전 포스트에서 그라데이션으로 이미지를 출력해 보았다. 이제 이 이미지를 배경으로 구 하나를 그려보자.원문에서는 구의 방정식과 판별식을 이용해 광선 P(t)와 구의 교차여부를 판별하는 내용을 설명한다. 내용이 이해가 안가면 아래의 코드에서 hit_sphere라는 함수가

2020년 10월 8일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 4. Rays, a Simple Camera, and Background

모든 레이 트레이서는 광선(ray)을 따라서 어떤 색이 보이는지 계산하는 ray 클래스를 가지고 있습니다. 광선을 함수 P(t) = A + tb라고 생각해봅시다. P는 3D 공간에서 한 직선상의 위치입니다. A는 광선의 원점이고 b는 광선의 방향입니다. 파리미터 t는

2020년 10월 8일
·
0개의 댓글

[Ray Tracing in One Weekend 번역] 3. The vec3 Class

거의 모든 그래픽스 프로그램은 기하학적 벡터와 색상을 저장하는 클래스를 가지고 있습니다. 많은 시스템에서 이 벡터들은 4차원(xyz + 동차좌표 또는 RGB + 투명도)입니다. 우리가 만들려고 하는 것은 3차원 좌표계로 충분합니다. `vec3` 클래스를 사용하여 색상,

2020년 10월 6일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 2. Output an Image

일단 이미지를 보는 방법이 필요합니다. 가장 간단한 방법은 파일에 결과를 출력하는 것입니다. 하지만 문제는 파일 포맷의 종류가 너무 많다는 것입니다. 파일 포맷들 중 다수의 포맷들은 복잡합니다. 저는 항상 plain text ppm file로 시작합니다.

2020년 10월 3일
·
0개의 댓글