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)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 22. Direct3D Stencil
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 22. Direct3D Stencil

2023. 6. 19. 16:25

1. Direct3D Stencil

1.1 Stencil

1.1.1 Stencil Buffer

 - 스텐실 버퍼는 어떤 특수 효과를 내는데 사용할 수 있는 화면 밖 버퍼

   - 스텐실 버퍼는 후면 버퍼, 깊이 버퍼와 해상도가 같으며, 스텐실 버퍼의 픽셀은 후면 버퍼 & 깊이 버퍼 픽셀과 대응

     - 스텐실 버퍼를 지정한 경우 스텐실 버퍼는 깊이 버퍼에 부착

   - 포스터나 판화에 쓰이는 스텐실의 용도와 같음, 특정 픽셀 단편들이 후면 버퍼에 기록되지 못하게 만드는 데 쓰임

     - 거울을 구현할 때 물체가 반사된 이미지를 거울의 평면에 그려야 함

       - 거울 테두리 바깥까지 반사상이 그려져서는 안됨

1.1.2 Depth & Stencil Buffer

 - Depth & Stencil Buffer를 생성할 때 특정한 자료 형식을 지정할 필요가 있음

DXGI_FORMAT_D32_FL0AT_S8X24_UINT; DXGI_FORMAT_D24_UNORM_S8_UINT;

   - 매 프레임의 시작에서 깨끗이 지워야 함

void ID3DllDeviceContext::ClearDepthStencilView;

1.1.3 Stencil Test

 - 스텐실 버퍼를 이용하면 후면 버퍼의 특정 영역으로의 렌더링을 방지

   - 주어진 한 픽셀을 후면 버퍼에 기록할 것인지 아닌지를 스텐실 버퍼에 근거해서 판정하는 것

     - 스텐실 적용이 활성화된 경우 스텐실 판정은 픽셀이 래스터화되는 과정에서 일어남(OM)

   - 두 피연산자를 응용 프로그램이 지정한 비교 연산자로 비교하는 것

     - 응용 프로그램이 정의한 스텐실 기준 값 & 응용 프로그램이 정의한 마스킹 값을 비트별 논리곱으로 결합

     - 스텐실 버퍼에 이미 있던 해당 픽셀의 값 & 응용 프로그램이 정의한 마스킹 값을 비트별 논리곱으로 결합

if(StencilRef & StencilReadMask (비교 연산자) Value & StencilReadMask);

   - 비교 연산자를 사용할 수 있는 함수의 종류가 구조체로 지정

typedef enum D3D11_COMPARISON_FUNC;

1.1.4 Stencil Interface

 - 스텐실 인터페이스를 생성하기 전 밑의 구조체를 채워 사용

typedef struct D3D11_DEPTH_STENCIL_DESC;

   - 위의 구조체를 채워 다음 함수를 호출하여 인터페이스를 가리키는 포인터를 얻음

HRESULT ID3D11Device::CreateDepthStencilState;

     - 인터페이스의 포인터를 얻고 이후 Depth & Stencil 상태를 출력 병합기(OM) 단계에 묶음

void ID3D11DeviceContext::OMSetDepthStencilState;
저작자표시 (새창열림)

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

[Direct11] 24. Direct3D Geometry Shader  (0) 2023.06.20
[Direct11] 23. EX App Program - Mirror  (0) 2023.06.19
[Direct11] 21. EX App Program - Fog System  (1) 2023.06.17
[Direct11] 20. Direct3D Blending - Blending System  (0) 2023.06.17
[Direct11] 19. Direct3D Blending  (0) 2023.06.17
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 24. Direct3D Geometry Shader
    • [Direct11] 23. EX App Program - Mirror
    • [Direct11] 21. EX App Program - Fog System
    • [Direct11] 20. Direct3D Blending - Blending System
    GameChoi
    GameChoi

    티스토리툴바