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
  • Game Room
  • client
  • Direct3D
  • job queue
  • server
  • Network Worker
  • protobuf
  • Destination Move Packet
  • Other Character
  • GAME Client
  • c++
  • session
  • Player Move Packet
  • Algorithm Strategies
  • UE5
  • Player State
  • core
  • Direct11
  • RPG Game

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 13. Lighting System - Diffuse & Ambient & Specular Light
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 13. Lighting System - Diffuse & Ambient & Specular Light

2023. 6. 15. 18:11

1. Lighting System

1.1 Lighting

 - 조명과 음영은 물체의 입체감과 부피감을 묘사하는 데 큰 도움

   - 시각적 인식은 빛과 물체 재질의 상호작용에 의존

   - 실사적인 장면을 생성하는 문제의 상당 부분은 물리적으로 정확한 조명 모형과 관련

 - 정확한 조명 모형일수록 계산 비용이 높음, 사실감과 속도의 균형을 맞추는 것이 중요

   - 영화의 프레임들이 실시간으로 생성되는 것이 아닌 미리 렌더링해 두는 것

   - 게임은 실시간 응용 프로그램이므로 프레임들이 적어도 초당 30프레임의 속도로 렌더링할 필요가 있음

1.1.1 Material & Intensity

 - 정점 색상을 직접 지정X, 표면의 재질 특성과 광원의 특성을 설정하고 조명 방정식을 적용하여 정점 색상이 결정

   - 조명 방정식은 빛과 재질의 상호작용에 기초해서 정점 색상을 계산하는 역할

 - 재질은 빛이 물체의 표면과 상호작용하는 방식을 결정하는 속성들의 집합

   - 표면이 반사 흡수하는 빛의 색상들, 표면의 반사율, 투명도, 광택도는 모두 표면의 재질을 구성하는 매개변수

   - 조명 모형에서 하나의 광원은 빨간색과 녹색, 파란색의 빛을 여러 가지 세기로 방출

   - 다양한 빛의 색을 흉내 & 광원에서 나온 빛이 물체와 충돌하면 물체의 표면이 그 빛의 일부를 흡수, 일부는 반사

1.1.2 Normal Vector

 - 면 법선은 한 다각형이 향하고 있는 방향을 나타내는 단위 벡터, 다각형의 모든 점에 수직인 단위 벡터

   - 표면 법선은 표면의 한 점의 접평면에 수직인 단위 벡터, 표면의 한 점이 바라보는 방향을 결정함을 기억

 - 조명 계산을 위해서는 삼각형 메시 표면의 모든 점에서 표면 법선이 필요

   - 광원이 메시 표면의 점으로 입사한 각도를 구할 수 있으므로 삼각형의 정점들, 세 꼭짓점에서만 지정

     - 래스터화 과정에서 세 정점 법선의 보간을 통해 표면 점의 법선이 결정

       - 삼각형의 두 변의 벡터를 알고 있을 경우 외적을 통해 법선 벡터를 구할 수 있음

1.2 Lighting System

1.2.1 Diffuse Light

 - 거친 표면이 있다면 한 점을 빛이 때리면 광선들이 다양한 무작위 방향들로 흩어짐

   - 반사된 빛은 시점과 무관하게 눈에 도달, 표면의 한 점의 색상은 그 점을 어디에서 보든 같음

     - 이에 따라 분산광을 계산할 때 시점을 고려할 필요X & 분산광 조명 계산은 시점에 독립적

   - 분산광의 색과 표면의 분산광 재질 색상에 관여

     - 분산광 재질 색상은 표면이 입사 분산광을 얼마나 반사하고 흡수하는 지를 뜻함

       - 분산광의 색과 분산광 재질 색상을 성분별로 곱하면 반사된 분산광의 색상이 나옴

         - 입사 분산광이 (0.8, 0.8, 0.8)이고 분산광 재질 색상이 (0.5, 1.0, 0.75)인 경우, 두 값을 곱해 색상을 정함

       - 반사광의 세기를 람베르트의 코사인 법칙에 의해 빛 벡터와 표면 법선의 각도에 따라 반산광의 세기를 조율

   - 위 두가지 계산을 통해 반사광을 구할 수 있음

1.2.2 Ambient Light

 - 조명 모형은 장면의 다른 물체에 반사된 간접광을 고려하지 않지만 한쪽 면만 비춘다고 해서 반대쪽이 검지는 않음

   - 벽이나 방의 다른 물체에 반사된 빛이 주전자의 반대쪽을 비추기 때문

 - 간접광의 효과를 어느 정도 흉내 내기 위해 조명 공식을 사용하여 주변광 향을 사용

   - 광원에서 간접적으로 표면에 도달한 빛의 양과 표면이 주변광을 얼마나 흡수하고 반사하는 지 결정하는 값을 사용

     - 모든 주변광은 물체를 균일하게 비추므로 실질적인 물리 계산이 전혀 관여하지 않음

1.2.3 Specular Light

 - 매끄러문 표면인 경우, 표면을 때린 광선들 중 시점을 향한 광선들은 특히나 눈에 뚜렷하게 인식

   - 특정 방향으로 반사되는 빛

     - 시점에 따라 인식하지 않을 수 있고, 시점이 이동함에 따라 반영광의 양도 변함 (시점에 의존적임)

   - 반영광의 세기는 밑의 그림처럼 세타가 0인경우 최대이고 사람의 눈에서 부터 멀어질 경우 점차 0으로 감소

   - 계산식은 밑의 그림을 통해 설명

     - 사람의 눈의 벡터와 계산을하여 구한 벡터를 사용하여 세타를 구할 수 있음

저작자표시 (새창열림)

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

[Direct11] 15. EX App Program - Light System  (0) 2023.06.15
[Direct11] 14. Lighting System - Directional & Point & Spot Light  (0) 2023.06.15
[Direct11] 12. EX App Program - Hills  (1) 2023.06.14
[Direct11] 11. EX App Program - Color Box  (0) 2023.06.14
[Direct11] 10. Direct3D Effect Framework  (0) 2023.06.14
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 15. EX App Program - Light System
    • [Direct11] 14. Lighting System - Directional & Point & Spot Light
    • [Direct11] 12. EX App Program - Hills
    • [Direct11] 11. EX App Program - Color Box
    GameChoi
    GameChoi

    티스토리툴바