본문 바로가기

분류 전체보기73

05. RayMarching - Camera move 이전 챕터에서 다룬 Rotation 을 사용하여 카메라의 원점을 이동해보고방향을 회전 시켜보자.  카메라 원점을 값을 변경해보자.계속 증가하는 iTime(시간)을 sin, cos 함수에 넣고 각각 x, y에 넣게 되면 ,원을 그리면서 카메라가 이동을 하게 한다. mouse x, y 좌표를 -0.5 ~ 0.5로 remap 한 뒤, 그 값을 rotation 공식에 theta를 넣어 회전 행렬을 만들자.회전 행렬을 vec3 rd에 곱해주게 되면 카메라 광선 방향이 마우스의 좌표에 따라 회전을 하게 된다. x의 값은 y 회전할 때 사용하게 하고, y 값은 x 회전할때 사용하게 한다.아래 그림처럼 y 회전은 Yaw, x 회전은 Pitch로 정의 된다. 전체 코드 >struct Surface { float d.. 2024. 8. 5.
04. RayMarching - Rotation 오늘은 도형을 몇가지 추가하고 도형의 움직임의 대해서 알아본다.아래 참조 사이트에 들어가면 SDF 함수로 도형의 코드가 잘 나와있다. 구 렌더링에 이어서 사각형 렌더링의 함수는 sdBox 이다.오리지널 사각형 렌더링 코드에서 offset 파라메터와, color 파라메터만 추가했다. 사각형의 sdBox 코드를 구현했으면, sdBox를 sdScene에 적용해보자.여러 개의 도형의 거리를 구해서 그중 가장 가까운 픽셀의 색과 거리를 리턴하는 함수 closer() 부분을 잘 보면된다. 회전 함수는 회전 행렬을 구해서 정점과 곱해주면 된다.Move, Roatation, Scale 3가지가 있지만 여기서는 회전 행렬만 구한다.회전 행렬은 잘 나와있으니, 다른 사이트에서도 참고하면 된다.  회전 행렬 >// Rota.. 2024. 8. 4.
03. RayMarhcing - Rendering Many Object 생성한 원을 여러개 구성하고 땅도 추가해본다.각 물체의 색도 각각 적용해보자.  sdSphere 함수의 리턴되는 값은 point와 원형의 표면까지 거리였다.구를 그릴때는 원점 기준으로 반지름 만큼 떨어진 지점이 표면임을 알수 있었다.그 표면의 지점과 카메라의 거리만큼을 ray에서 더해 주었는데, 여러개 원을 구성할때는 표면까지 거리 중 가장 최소의 값만 취하면 된다.우리 눈에 더 앞에있는 물체가 보이는 것과 같은 의미이다. uv 값의 범위는 가로세로 동일 비율을 적용하고 원점 기준으로 좌표계를 옮겨서 다음과 같다.-0.5  sdFloor가 음수가 되면 더 이상 ray를 증가시키지 않기 때문에, 구를 찾을수가 없다.그렇기 때문에 y 값을 + 1 증가시켜 것 같은데,구의표면과 카메라의 거리대상으로 한 sdS.. 2024. 8. 2.
02. RayMarhcing - Shading Sphere 이전 포스팅https://graphicsimon.tistory.com/68?category=1119246 01. RayMarhcing - Rendering Sphere위 그림은 2차원이 아닙니다. ^ ~ ^  3차원임 vec2 uv = ( fragCoord - 0.5 * iResolution.xy ) / iResolution.y;fragCoord 값은 해상도 값 기준 좌표이다.  ( 0 화면 중심이 원점이고 가로 세로 종횡비를 맞춰주는 코드graphicsimon.tistory.com 퐁라이팅 모델을 적용해서 구에 음영 입히기 노말을 계산하는 함수는 calcNormal 이다.두점 사이의 기울기를 법선 벡터 노멀로 사용할 수 가 있다.아주 작은 두점 사이의 기울기는 :  x증가량 / y 증가량 이다.- (x.. 2024. 8. 1.