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)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 21. EX App Program - Fog System
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 21. EX App Program - Fog System

2023. 6. 17. 18:53

1. EX App Program

1.1 Fog System

1.1.1 Fog System Principle

 - 게임에서 특정한 기상조건을 흉내 낼 때 유용한 것이 안개 효과

   - 먼 거리의 렌더링 결함이나 파핑현상을 숨길 수 있음

     - 절두체의 먼 평면 뒤에 있던 물체가 카메라의 이동에 따라 절두체 안으로 들어오면서 화면으로 튀어 나오는 현상

     - 지평선 부근의 산처럼 멀리 있는 물체는 흐릿해 보이기에 대기 원근 현상을 흉내 내기에 적합

1.1.2 Pixel Shader

 - 안개의 색상과 안개가 시작되는 거리, 안개의 범위를 설정

cbuffer cbPerFrame { /* ... */ float gFogStart; float gFogRange; float4 gFogColor; };

   - 렌더링 시 삼각형의 한 점의 색상을 원래 색상과 안개 색상의 가중 평균으로 결정

     - 카메라 위치와 표면 점 사이의 거리에 의존하는 0에서 1사이 값을 이용

       - 카메라와 표면 점 사이의 거리가 커지면 이 값이 1에 가까워지며, 표면 점이 점점 안개에 가려지는 효과가 생김

     - 밑의 코드로 부터 안개와 카메라 시점에서의 거리를 판단

       - 사이에 있는 경우 안개 색에 의해 변경되지 않음 & 안개가 시작되지 않은 것으로 판단

float fogLerp = saturate((distToEye - gFogStart) / gFogRange);

   - 안개의 시작점을 범위를 설정한 값으로 부터 카메라의 시점이 있다면 안개가 거리에 따라 생성

     - 거리가 증가함에 따라 0에서 1로 선형 증가, 안개 색의 가중치가 점차 커지고 원 색상의 가중치가 점점 작아짐

       - 거리가 멀어지면서 표면점이 점점 더 안개에 가려지는 효과가 생김

litColor = lerp(litColor, gFogColor, fogLerp);

1.1.3 C++ 응용 프로그램

 - 나머지 코드는 이전 코드와 동일

 

[Direct11] 11. EX App Program - Color Box

1. EX App Program 1.1 Color Box 1.1.1 Geometry Buffer - 색상이 있는 박스를 생성하기 위해 각 정점에 대해 좌표 및 색상 적용 Vertex vertices[] = { { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT4((const float*)&Colors::White) }, { XMFLOAT3

choiprogramming.tistory.com

   - 안개의 색상, 시작점, 범위 등 설정하여 렌더링

Effects::BasicFX->SetDirLights(_dirLights);
Effects::BasicFX->SetEyePosW(_eyePosW);
Effects::BasicFX->SetFogColor(Colors::Silver);
Effects::BasicFX->SetFogStart(15.0f);
Effects::BasicFX->SetFogRange(175.0f);
저작자표시 (새창열림)

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

[Direct11] 23. EX App Program - Mirror  (0) 2023.06.19
[Direct11] 22. Direct3D Stencil  (0) 2023.06.19
[Direct11] 20. Direct3D Blending - Blending System  (0) 2023.06.17
[Direct11] 19. Direct3D Blending  (0) 2023.06.17
[Direct11] 18. EX App Program - Texture Box  (0) 2023.06.16
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 23. EX App Program - Mirror
    • [Direct11] 22. Direct3D Stencil
    • [Direct11] 20. Direct3D Blending - Blending System
    • [Direct11] 19. Direct3D Blending
    GameChoi
    GameChoi

    티스토리툴바