본 내용은 <그래픽스 새싹코스 - 홍정모> 강의를 토대로 작성하였습니다. honglab에서 강의를 구매하실 수 있습니다.
원리
1. 모니터 픽셀을 시작으로 모니터와 수직인 방향으로 가상 공간을 향해 광선을 쏴준다.
2. 광선에 부딪힌 물체로부터 색을 가져온다.
여기서 z 방향은
const auto rayDir = vec3(0.0f, 0.0f, 1.0f);
색을 가져오기 위해서는 먼저 광선이 물체에 닿았는지 안 닿았는지 먼저 판단이 필요
const Hit hit = sphere->IntersectRayCollision(ray);
// 광선이 물체에 닿으면 그 물체의 색 반환
vec3 traceRay(Ray &ray)
{
const Hit hit = sphere->IntersectRayCollision(ray);
if (hit.d < 0.0f)
{
return vec3(0.0f);
}
else
{
return sphere->color * hit.d; // 깊이를 곱해서 입체감 만들기
}
}
* d = 광선의 시작부터 충돌 지점까지의 거리
* hit.d<0.0f = 광선의 시작점으로부터 충돌지점까지 거리가 음수라면 충돌을 하지 않았음
참고 자료
'그래픽스ㆍDirectX' 카테고리의 다른 글
[DirectX 11] Phong Shading (0) | 2023.09.25 |
---|---|
[그래픽스 새싹코스] Separable Gaussian blur (0) | 2022.09.19 |
Ray Casting, Ray Tracing, Real-Time Ray Tracing (0) | 2022.06.06 |
[KUOCW] 13. 캐릭터 애니메이션 - 2. 본 스페이스에서 캐릭터 스페이스로 (0) | 2022.06.05 |
[KUOCW] 13. 캐릭터 애니메이션 - 1. 관절체 애니메이션 (0) | 2022.06.04 |
댓글