GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • core
  • RPG Game
  • protobuf
  • Player State
  • c++
  • Algorithm Strategies
  • Game Room
  • Network Worker
  • server
  • Game Server
  • Destination Move Packet
  • Other Character
  • GAME Client
  • job queue
  • Direct11
  • Player Move Packet
  • client
  • session
  • UE5
  • Direct3D

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 5. Rendering Pipeline - Vertex Shader (VS)
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 5. Rendering Pipeline - Vertex Shader (VS)

2023. 6. 13. 17:34

1. Rendering Pipeline

1.1 Vertex Shader

 - 입력 조립기 단계에서 기본 도형들을 조립한 후 정점들이 정점 셰이더 단계로 입력

   - 정점 하나를 받아 정점 하나를 출력하는 함수, 화면에 그려질 모든 정점은 정점 셰이더 단계를 거침

   - 프로그래머가 구현하여 GPU로 제출, 그 함수는 각 정점에 대해 GPU에서 실행되므로 아주 빠름

     - 변환, 조명, 변위 매핑 등 수많은 특수 효과를 정점 셰이더에서 수행 가능

       - 입력 정점 자료, Texture, 변환 행렬, 장면 광원 정보 등 GPU 메모리에 담긴 다른 자료에도 접근 가능

1.1.1 Local Space & World Space

 - 물체의 기하구조를 장면 전역의 좌표계를 기준으로 직접 구축하는 것이 아님

   - 물체 자신의 Local Space를 기준으로 구축하면 좌표계 원점을 중심 가까이 둘 수 있고 좌표 축들을 물체에 맞게 정렬

     - 물체 자신의 공간에서 3차원 모형의 정점들을 모두 정의했다면 세계 공간의 관계를 정의

       - World Space 기준으로 한 Local Space 원점과 축들의 위치 및 방향 지정, 그에 해당하는 좌표 변경 변환 수행

1.1.2 Camera(View) Space

 - 최종적으로 화면에 표시되는 것은 장면의 2차원 이미지이므로 장면에 가상의 카메라를 배치

   - 세계에서 관찰자가 볼 수 있는 영역,, 세계에서 2차원 이미지를 생성해야 하는 영역을 결정

     - 카메라에 Local Space 영역을 생성하면 좌표계가 Camera Space

 - 밑의 함수를 통해 World Space의 시야 행렬을 계산 & 카메라의 Local Space 영역에서 역행렬을 통해 구할 수 있음

XMMATRIX XMMatrixLookAtLH (
FXMVECTOR EyePosition,   // 입력카메라위치
FXMVECTOR FocusPosition, // 입력 대상점
FXMVECTOR UpDirection) ; // 입력 세계 상향 벡터

1.1.3 투영과 동차 절단 공간

 - 카메라가 바라보는 공간 영역 (절두체 - 끝이 잘린 사각뿔)

   - 시야 절두체 안의 3차원 기하구조를 2차원 투영 창으로 투영

     - 물체의 3차원 깊이가 증가함에 따라 그 투영의 크기가 줄어드는 형상이 나타남 (Perspective Projection)

 - XMA Math 라이브러리를 통해 원근 투영 행렬을 구축해 주는 함수를 제공

XMMATRIX XMMatrixPerspectiveFovLH (
FLOAT FovAngleY, // 수직 시이각 ( 라디안 단위)
FLOAT AspectRatio, // 비 = 너비 / 높이
FLOAT NearZ, // 가까운평면까지의 거리
FLOAT FarZ) ; // 먼 평면까지의 거리

   - 응용 프로그램 창의 너비와 높이를 이용하여 종횡비를 계산하고 수직 시야각, 평면의 거리를 구해 값을 넣음

XMMATRIX P = XMMatrixPerspectiveFovLH(0.25f*MathX::Pi, AspectRatio(), l.Of, 1000.Of);
저작자표시 (새창열림)

'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글

[Direct11] 7. Rendering Pipeline - Pixel Shader & Output Merger (PS & OM)  (0) 2023.06.13
[Direct11] 6. Rendering Pipeline - Tessellation & Rasterizer (TS & RS)  (0) 2023.06.13
[Direct11] 4. Rendering Pipeline - Input Assembler (IA)  (0) 2023.06.13
[Direct11] 3. Direct3D EX Application Framework  (0) 2023.06.12
[Direct11] 2. Direct3D initialization  (0) 2023.06.12
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 7. Rendering Pipeline - Pixel Shader & Output Merger (PS & OM)
    • [Direct11] 6. Rendering Pipeline - Tessellation & Rasterizer (TS & RS)
    • [Direct11] 4. Rendering Pipeline - Input Assembler (IA)
    • [Direct11] 3. Direct3D EX Application Framework
    GameChoi
    GameChoi

    티스토리툴바