깊이 버퍼
깊이 버퍼(Depth Buffer)란?
화면의 각 픽셀에 대해 ‘가장 가까운 물체’만 보이도록 해주는 메모리입니다.
정투영 기준의 간단한 깊이 버퍼 실습
정투영에서는 Barycentric 좌표를 이용해 보간 값 alpha[i] 로 삼각형의 꼭짓점의 3개의 z 값으로부터 픽셀 [i][j] 의 깊이 버퍼 값 depth 를 구한 후 depth 의 값이 더 작을 수록 해당 color 값으로 변경한다.
깊이 버퍼는 1.0 으로 설정하는 것이 보편적이다.
if (alpha0 >= 0.0f && alpha1 >= 0.0f && alpha2 >= 0.0f) {
const float area = alpha0 + alpha1 + alpha2;
const vec3 color =
(alpha0 * c0 + alpha1 * c1 + alpha2 * c2) / area;
const float depth = (alpha0 * this->vertexBuffer[i0].z +
alpha1 * this->vertexBuffer[i1].z +
alpha2 * this->vertexBuffer[i2].z) /
area;
// depth 확인 후 픽셀 값 변경
if (depth < depthBuffer[i + width * j]) {
depthBuffer[i + width * j] = depth;
pixels[i + width * j] = vec4(color, 1.0f);
}
}

'DX' 카테고리의 다른 글
| 뒷면 제거 (0) | 2025.04.30 |
|---|---|
| 쉐이더 개념 (0) | 2025.04.30 |
| 그림자 표현 (0) | 2025.03.31 |
| 원근 투영을 이용한 물체 표현 (0) | 2025.03.31 |
| Ray-Tracing (0) | 2025.03.17 |