오구의코딩모험

[DirectX] Texture Mapping, Depth Stencil View 본문

Game/DirectX

[DirectX] Texture Mapping, Depth Stencil View

오구.cpp 2024. 12. 4. 23:40
반응형

텍스처 매핑과 좌표 변환

 

게임 그래픽 프로그래밍은 화면에 물체를 그리기 위한 여러 단계의 과정을 포함합니다.

이 과정에서 텍스처 매핑, 좌표 변환, 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. RasterizerDepth-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
Comments