일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c++ 5567
- pcce 기출문제 9번 지폐 접기
- python 고대 문명 유적 탐사
- 티스토리챌린지
- 렌더링 파이프
- PCCE
- c++ 1991
- 잔디 기부 캠페인
- 잔디 기부
- pcce 기출문제 10번 지폐 접기 풀이
- DirectX12
- directx 그래픽스
- 프로그래밍공부
- boj 5567
- depth-stencil
- DirectX
- 수식 복원하기
- pcce 기출문제 풀이
- boj 1991
- root signature
- 고대 문명 유적 탐사
- constant buffre
- pccp 기출문제 풀이
- gemmasprint
- texture mapping
- 백준 5567
- 코드트리 고대 문명 유적 탐사
- pcce 기출문제 10번 공원
- 오블완
- pcce 기출문제 10번 공원 풀이
- Today
- Total
오구의코딩모험
[DirectX] Texture Mapping, Depth Stencil View 본문
텍스처 매핑과 좌표 변환
게임 그래픽 프로그래밍은 화면에 물체를 그리기 위한 여러 단계의 과정을 포함합니다.
이 과정에서 텍스처 매핑, 좌표 변환, Rasterizer, Depth-Stencil View 등의 개념은 매우 중요한 역할을 합니다.
1. 텍스처 매핑(Text Mapping)
텍스처 매핑이란?
- 텍스처 매핑은 3D 모델의 정점(Vertex) 좌표를 기준으로 이미지를 매핑하여, 물체 표면에 색상과 질감을 입히는 기술입니다.
- 이 과정에서 UV 좌표가 중요한 역할을 하며, UV 좌표는 텍스처의 특정 위치를 가리키는 좌표 체계입니다.
텍스처 매핑의 활용
- 텍스처 매핑은 단순한 색상 표현을 넘어, 질감(texture), 패턴, 세부적인 디테일을 추가하여 사실적인 그래픽을 구현할 때 사용됩니다.
2. Rasterizer와 보간 작업
Rasterizer란?
- Rasterizer는 3D 정점 데이터를 2D 화면에 렌더링하기 위한 단계로, 픽셀 단위의 데이터로 변환합니다.
- 이 단계에서 보간(interpolation) 작업이 이루어지며, 정점 간 색상과 텍스처 좌표 값을 계산하여 부드러운 그래픽을 제공합니다.
GPU에서 Rasterizer의 역할
- Rasterizer는 GPU의 파이프라인에서 핵심 역할을 수행하며, Depth-Stencil View를 통해 처리된 깊이 정보를 활용하여 픽셀 렌더링의 효율성을 높입니다.
3. C++ 파일 시스템: std::filesystem
파일 관리의 효율성
- C++17부터 추가된 std::filesystem은 파일과 디렉터리 작업을 쉽게 수행할 수 있는 표준 라이브러리입니다.
- 주요 기능
* 파일 경로 생성 및 처리
* 파일 존재 여부 확인
* 디렉터리 순회
#include <iostream>
#include <filesystem>
int main() {
std::filesystem::path path = "example.txt";
if (std::filesystem::exists(path)) {
std::cout << "File exists: " << path << std::endl;
}
return 0;
}
4. SamplerState와 UV 좌표
SamplerState란?
- SamplerState는 텍스처 좌표(UV 값)를 사용하여 픽셀에 적용할 텍스처 데이터를 결정하는 정책입니다.
- UV 보간 및 필터링 방식은 그래픽의 품질에 영향을 미칩니다.
UV 좌표란?
- U, V는 각각 텍스처의 X축과 Y축에 해당하는 값으로, 0에서 1 사이의 값으로 텍스처의 위치를 지정합니다.
5. Depth-Stencil View
깊이와 스텐실의 역할
- Depth-Stencil View는 렌더링 과정에서 물체의 깊이를 계산하여, 화면에 나타낼 픽셀과 숨길 픽셀을 구분합니다.
- 스텐실은 추가적으로 특정 기준을 충족하는 픽셀만 렌더링할 수 있도록 설정합니다.
깊이 버퍼의 동작
- 깊이 값(Depth Value)이 1 이상이거나 음수인 경우, Rasterizer 단계에서 걸러져 계산되지 않습니다.
// 깊이 버퍼 생성 예제
D3D12_DEPTH_STENCIL_VIEW_DESC depthDesc = {};
depthDesc.Format = DXGI_FORMAT_D32_FLOAT;
depthDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D;
// Depth-Stencil View 생성 후 적용
6. 카메라 좌표계와 투영 좌표계
카메라 좌표계(Camera Space)
- 카메라 좌표계는 3D 공간에서 원근법을 적용하여 객체를 렌더링하는 좌표계입니다.
투영 좌표계(Projection Space)
- 투영 좌표계는 3D 좌표를 2D 화면에 투영하는 방식으로, 화면 크기에 맞는 비율을 유지하며 깊이에 따라 표현 여부를 결정합니다.
정리
1. Rasterizer와 Depth-Stencil View의 차이점
Rasterizer는 3D 데이터를 2D 화면으로 변환하는 작업을 하고, Depth-Stencil View는 깊이와 스텐실 정보를 활용해 렌더링 결과를 제어합니다.
2. Depth-Stencil View에서 깊이 값의 범위
일반적으로 깊이 값은 0~1 사이의 값을 가지며, 이 범위를 벗어나는 경우 렌더링에서 제외됩니다.
3. UV 좌표
UV 좌표는 텍스처 상의 위치를 나타내는 좌표로, 0~1 사이의 값을 가집니다.
4. 텍스처 매핑을 시작할 때 유의해야 할 점
텍스처의 크기와 UV 좌표 범위를 일치시키고, 필터링 설정(SamplerState)을 적절히 조정해야 합니다.
'Game > DirectX' 카테고리의 다른 글
[DirectX] 변환 행렬 (Matrix) (2) | 2024.12.16 |
---|---|
[DirectX] Component, 삼각 함수, Vector (4) | 2024.12.10 |
[DirectX] Input과 Timer, Material (1) | 2024.12.07 |
[DirectX] Window Application (0) | 2024.11.28 |
[DirectX] 그래픽스, 렌더링 파이프 (2) | 2024.11.22 |