Grahpics

[Graphics] DirectX12 - Lighting 개요

송만덕 2022. 2. 6. 03:29

 

Lighting 개요

 

 

  • 3D 표현을 위해서는 명암이 중요하고, 명암을 표현하기 위해선 조명이 필요하며 조명이 나타내는 이 존재한다.
  • 우선 의 종류로는 크게 세가지가 있다.

 

Diffuse : 난반사광 Ambient : 환경광 Specular : 정반사광
  • 물체의 표면에서 분산되어 눈으로 바로 들어오는 빛이다.

  • 각도에 따라 밝기가 다르다.

  • 많은 반사를 거쳐서 광원이 불분명한 빛이다.

  • 물체를 덮고 있는 빛이며 일정한 밝기와 색으로 표현된다.
  • 분산광과 달리 한방향으로 완전히 반사되는 빛이다.

  • 반사되는 부분은 흰색의 광으로 보인다.

빛의 세 종류

  • Vertex Shader는 정점에 관한 연산을 해준다면, Pixel Shader에서는 픽셀에 대한 색상의 연산 등이 호출이 된다.
  • 물체와 빛에 따른 벡터의 내용은 다음과 같다.

 


 

빛의 연산

 

  Diffuse 난반사광

  • Diffuse의 경우 람베르트(램버시안) 코사인 법칙을 사용한다.
  • 표면 위치 벡터에서 빛 위치 벡터를 빼서 빛에서 표면으로 가는 벡터를 구한 뒤, 입사각의 코사인값을 구하기 위해 Normal 벡터와 빛 벡터의 내적을 이용한다.
  • 이후 빛을 정면으로 받으면 입사각이 0이 될 것이며 cos 0 = 1이기 때문에 강하게 나타나고,
  • 비스듬히 받으면( 90 > θ >0) 0~1의 값이 나와 1보단 흐릿해지며
  • 90도가 넘어갈 경우 cos <90 은 0~음수이기 때문에 빛이 비치지 않게 된다.
  • 만약 RGB 값이 {1, 1, 1}이며 입사각이 60˚라면 빛의 양은 0.5가 될 것이고 이를 RGB에 곱하여 얻는 결과값은 {0.5, 0.5, 0.5}가 되는 것이다.

 

 

Ambient 환경광

  • 환경광의 경우 각도나 세기에 상관없이 물체나 배경에 모두 일정하게 비추는 빛이다.
  • 따라서 환경광은 여러방향으로 비추고 반사하기 때문에 빛이 직접 닿지 않더라도 반사하여 물체에 닿는 빛을 고려해주어 최소한의 빛의 값을 보장해준다.
  • 환경광의 세기에 따라 물체의 RGB에 곱해짐으로써 영향을 주게 된다.

 

 

  Specular 정반사광

  • 빛이 표면에 닿아 입사각과 같은 각도로 반사되는 빛이다.
  • Specular 연산은 다음과 같다.

  • Vector R과 Vector C의 사이각에 따라 빛의 세기가 달라진다.
  • Vector R을 구하는 방법은 다음과 같다.

 

 

 


 

 

조명

 

  • Directional Light = 보통 환경광을 표현할 때 사용됨
  • Point Light        = 전등이나 횃불과 같이 주변을 밝히는 조명에 사용됨
  • Spot Light         = 손전등과 같이 특정한 방향을 밝히는 조명에 사용됨.