Ray Tracing - Cube Mapping
카테고리: Graphics
태그: DirectX
홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.
🐥 Cube Map
Cube Map | Mapping |
---|---|
그래픽스를 이용해 3차원 공간을 만드는 것은 아주 비싼 연산을 필요로 할 것이다. 이때 앞서 배운 텍스처링의 개념을 이용하면 기가 막힌 최적화를 할 수 있다. Cube를 이용하여 닫힌 공간을 만들고, 각각의 면에 공간과 같은 이미지를 매핑해주는 것이다.
Cube Map 구현 방법
// top
auto imageTexture_top = std::make_shared<Texture>("./skybox/top.jpg");
auto square_top = make_shared<Square>(vec3(-2.0f, 2.0f, 2.0f), vec3(-2.0f, 2.0f, -2.0f), vec3(2.0f, 2.0f, -2.0f), vec3(2.0f, 2.0f, 2.0f),
vec2(0.0f, 0.0f), vec2(1.0f, 0.0f), vec2(1.0f, 1.0f), vec2(0.0f, 1.0f));
square_top->amb = vec3(1.0f);
square_top->dif = vec3(0.0f);
square_top->spec = vec3(0.0f);
square_top->ambTexture = imageTexture_top;
square_top->difTexture = imageTexture_top;
objects.push_back(square_top);
// bottom
// front
// ...
주의할 점
처음에 별 생각없이 구현을 했다가 이상한 결과가 튀어나왔다. 문제의 원인은 left 사각형의 vertex 순서가 texture의 uv좌표계와 다르기 때문이었다. 다시 말해 vertex_0가 uv좌표 (0,0)이 아닌 다른 좌표에 매핑 되었기 때문. 주의가 필요한 부분인 것 같다.
🐥 Results
댓글 남기기