보고 있으면 배가 부르다🤭
miniRT는 창(window)제어와 computer graphic의 입문을 목표로 한다. mlx는 창(window)제어와 그래픽 작업을 위한 라이브러리다.42docs의 예제를 따라가며 살펴보도록 하자.macos에서 컴파일 명령은 아래와 같이해보자.mlx는 mac 자체
후킹(영어: hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 출처: https&
참고: Ray Tracing in One Weekend Book Series-source code: https://github.com/RayTracing/raytracing.github.io/ Ray Tracing in One Weekend-원문: https://ray
지금부터 나올 내용은 기하에서의 벡터를 알고 있다면 이해가 쉽다. 이외에도 내적, 외적, 구의 방정식 등 기하 벡터를 공부해보지 않은 분들은 낯설 수 있다. vector class다. 더불어 rgb 값을 표현하는 color와 3차원 좌표계의 점을 나타내는 point3를
광선 P를 함수로 나타내면 P(t)=A+tb라고 할 수 있다. 여기서 A는 광원(ray origin: 광선의 시작 지점이다.), b는 광선의 진행방향이다. 여기서 A, b는 삼차원 좌표계 위의 벡터이고 t는 광선의 크기와 방향을 결정한다. 지금까지 삼차원 좌표계를 표현
이전 포스트에서 그라데이션으로 이미지를 출력해 보았다. 이제 이 이미지를 배경으로 구 하나를 그려보자.원문에서는 구의 방정식과 판별식을 이용해 광선 P(t)와 구의 교차여부를 판별하는 내용을 설명한다. 내용이 이해가 안가면 아래의 코드에서 hit_sphere라는 함수가
이전 포스트에서 풍경 안에 구를 그렸지만 입체감이 없어 그저 붉은 원처럼 보인다. 이번엔 shading으로 표면의 입체감을 살려보자. 원문의 normal은 구의 중심에서 구의 표면의 임의의 점 P방향의 방향벡터를 뜻한다. normal이니 방향벡터니 설명하면 길어지니 우
광선이 쏘아져 부딪친 물체의 표면에 대해 외면과 내면 중 어느 측면에서 광선이 쏘아졌는지는 중요한 요소다. 광선이 쏘아진 측면에 따라 물체를 다르게 rendering해야하기 때문이다.(ex: 문자가 쓰여진 종이의 양면, 내면과 외면을 가진 유리구슬 등) 이번에할 작업은
이번 주제는 Antialiasing이다. 백문이 불여일견이라고 먼저 원문의 7단원 가장 마지막에 위치한 이미지인 >Image 6: Before and after antialiasing 를 먼저 살펴보자. 이미지를 살펴봤다면 Antialiasing 전후의 이미지가 다르
이번엔 물체의 재질에 따라 빛의 확산 및 반사 등을 적용해 물체를 더 사실적으로 표현하는 작업을 한다. 특히 복잡한 이론이 많은 부분이라 그냥 그런 원리를 적용했구나하고 넘어가도 좋다.이번 주제에 구현할 Diffuse Materials은 matte라는 재질로 표면이 거
Metal이라는 재질의 사물을 표현해본다.Material 추상class를 작성한다. 다양한 재질을 구현할 때 쓰기 위함이다. 예제에서 쓰는 Material에는 다음 두 가지가 필요하다.산란하는(scattered) 광선을 생성하는 기능산란 되는 광선의 감쇠 정도원문은 c
이번 챕터는 Dialectrics라는 material을 구현해 본다. 물, 유리, 다이아몬드 같은 투명한 물질을 Dielectrics(유전체)라고 한다. 광선이 Dialectrics에 닿으면 반사된 광선과 굴절되는 광선으로 나뉜다. 우리는 이 두 현상 중에서 무작위로
이번엔 카메라 기능들을 구현해 본다. 먼저 시야를 조정하는 데 쓰는 field of view(fov)를 구현하자. fov는 수직, 수평 중 수직 fov를 사용할 것이다. 결국 fov가 뭐하는 거냐면, 지금까지 같은 뷰포트로 이미지를 출력했다면 fov값으로 뷰포트의 크기