본문 바로가기

Metal11

무게 중심 좌표계, Barycentric coordinates Barycentric coordinate system - WikipediaFrom Wikipedia, the free encyclopedia Coordinate system that is defined by points instead of vectors Barycentric coordinates ( λ 1 , λ 2 , λ 3 ) {\displaystyle (\lambda _{1},\lambda _{2},\lambda _{3})} on an equilateral triangle and on a right triangle.en.wikipedia.org삼각형 색상 보간삼각형의 각 꼭짓점에 3원색을 선언하고 삼각형 내부의 색상은 내삽을 이용해서 처리하기Interpolation하나의 직선 위에 Interpola.. 2024. 4. 30.
Perspective Projection & Phong Shading Perspective Projection필요 데이터 구조눈 위치 벡터 (원근 투영을 구현하기 위함)화면을 바라보는 시점의 좌표(World)를 설정한다.화면을 바라보는 시점에 각 화면의 픽셀을 보는 방향 벡터를 구한다.Ray의 방향 벡터를 위의 벡터로 설정해 투영한다.final class Raytracer{... let eye: vector_float3 = .init(0, 0, -1) func render()->[Vertex]{ var vertices:[Vertex] = Array(repeating: .init(position: .zero, color: .zero), count: height * width) for j in (0..Phong Shading Phong sh.. 2024. 4. 22.
RayTracing으로 삼각형 그리기 삼각형 광선 충돌 아이디어 💡 삼각형이 이루는 평면에서 충돌한 지점이 삼각형 내부에 있는지 찾는다. ⇒ 삼각형의 특징: 하나의 평면 위에 존재한다. 1. 하나의 무한히 넓은 평면에서 광선이 충돌하는지 찾기 평면 법선 정규 백터를 이용한다. (n이라고 정의) 💡 삼각형을 이루는 벡터와 외적을 이용해 법선 벡터를 찾을 수 있다. 💡 충돌한 위치와, 삼각형을 이루는 점의 위치를 향하는 벡터와 평면의 법선 벡터를 내적하면 수직으로 0이 된다. 충돌한 위치는 다음과 같이 나타낼 수 있다. o ⇒ 광선의 원점 d ⇒ 광선의 진행 방향 t ⇒ 충돌 지점의 거리 p = o + td (t는 스칼라, 나머지 변수 모두 벡터) 충돌 지점 거리 구하기 방정식 2. 이 평면과 광선이 만나는 곳이 삼각형 내부에 있는지 찾기 충돌.. 2024. 4. 8.
Raytracing으로 구 그리기 ⛔ Metal Shader를 사용한 방법이 아니라 CPU를 사용해서 픽셀마다 색상을 직접 지정해 그리내는 렌더링 방법, GPU를 사용해서 나타낸 것은 아니다.필요 데이터 구조 Ray - 광선 광선의 시작점 광선의 방향 Hit - 충돌시 유의미한 데이터 광선과 충돌 지점까지 거리 (d) 충돌한 위치 (position) 충돌한 위치의 법선 백터 (normalize) Sphere - 구 구의 중심 좌표 구의 반지름 구의 재질(색상) Raytracer - 광 추적기 스크린의 사이즈 물체 (구 정보를 여기에 포함시킨다.) ⇒ 화면상에 픽셀들에서 광선을 내보내서 충돌하는 물체의 빛, 재질의 정보를 얻어오는 역할이다. 필요 메서드 구 intersectRayCollision 특정 Ray가 본인에게 충돌하는지 확인하는 .. 2024. 3. 31.