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)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 9. Direct3D API Interface & Function #2
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 9. Direct3D API Interface & Function #2

2023. 6. 14. 17:49

1. Direct3D API Interface & Function

1.1 Vertex Shader

1.1.1 Vertex Shader HLSL Code

 - 정점을 생성할 때 위치와 색상으로 생성하여 정점 셰이더의 매개변수가 4개

   - 처음 두가지의 값은 입력 매개변수, 나머지 둘은 출력 매개변수

     - HLSL에서는 참조나 포인터가 없으므로 구조체를 이용하거나 out이 지정된 출력 매개변수를 사용

struct Vertex { XMFLOAT3 Pos; XMFLOAT4 Color;};
void VS(float3 iPosL : POSITION, float4 iColor : COLOR,
	out float4 oPosH : SV_POSITION, out float4 oColor : COLOR);

   - 처음 두 입력 매개변수는 정점 셰이더의 입력 서명을 형성하며 커스텀 정점 구조체의 자료 멤버들에 대응

     - 출력 매개변수 또한 존재, 정점 셰이더의 출력을 파이프라인의 다음 단계의 해당 입력에 대응시키는 역할

1.1.2 Constant Buffer

 - 셰이더가 접근할 수 있는 다양한 자료를 저장하는 유연한 자료 블록

cbuffer cbPerObject { float 4x4 gWorldViewProj; };

   - World Space 행렬은 물체마다 다르므로 위에서 생성한 World, View, Projection 행렬 또한 물체마다 달라야 함

     - 여러 물체를 그리는 경우 그리기전 위의 변수를 적절히 갱신해야함

1.2 Pixel Shader

1.2.1 Pixel Shader

 - Rasterizer 단계는 정점 셰이더가 공급한 정점 특성들을 삼각형의 픽셀들을 따라 보간한 결과를 픽셀 셰이더로 입력

   - 각 정점이 아닌 각 픽셀 단편마다 실행하므로 주어진 입력으로 부터 픽셀 단편의 색상을 계산

     - 픽셀 단편은 도중에 폐기되어 후면 버퍼까지 도달하지 못할 수 있음

       - 깊이 값이 더 작은 다른 픽셀 파편에 의해 가려지거나 스텐실 판정 같은 이후의 파이프라인 판정과정에서 폐기

float4 PS(float4 posH : SV_POSITION, float4 color : COLOR) : SV_Target { return pin.Color; }

1.3 Render State

 - 렌더링 파이프라인의 특정 측면의 구성에 쓰이는 관련 상태 집합으로 묶어 관리

1.3.1 Rasterizer State

 - 파이프라인의 Rasterizer Stage를 구성하는 데 쓰이는 설정들을 묶은 상태 집합

typedef struct D3D11_RASTERIZER_DESC;

1.3.2 Blend State

 - 혼합 연산을 구성하는 데 쓰이는 상태 집합

1.3.3 Depth Stencil State

 - 깊이 판정과 스텐실 판정을 구성하는 데 쓰이는 상태 집합

저작자표시 (새창열림)

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

[Direct11] 11. EX App Program - Color Box  (0) 2023.06.14
[Direct11] 10. Direct3D Effect Framework  (0) 2023.06.14
[Direct11] 8. Direct3D API Interface & Function #1  (0) 2023.06.14
[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
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 11. EX App Program - Color Box
    • [Direct11] 10. Direct3D Effect Framework
    • [Direct11] 8. Direct3D API Interface & Function #1
    • [Direct11] 7. Rendering Pipeline - Pixel Shader & Output Merger (PS & OM)
    GameChoi
    GameChoi

    티스토리툴바