[Computer Graphics] Lighting

ChangJin·2023년 12월 26일

Computer Graphics

목록 보기
1/1
post-thumbnail

라이팅이란 무엇인가?


광원에서 방사된 빛이 물체에 반사되어 이것을 카메라로 보는 것입니다

  • 카메라는 눈이 될 수 있습니다
  • 반사된 빛의 각도와 파장에 따라 음영과 색상이 결정됩니다
  • 사실상 음영이라는 것은 빛이 반사되지 않는 부분이라고 생각하면 됩니다
  • 앰비언트 컬러 : 주변광

디퓨저컬러 : 광원에서 반사된 빛이 눈에 노말에 들어왔을때의 컬러

파이널컬러 : 앰비언트 컬러 주변광과 디퓨저 컬러 광원에서 방사된 빛의 색상을 더해준 후에 이 object 자체의 색상과 곱해줘서 파이널 컬러로 나타내게 됩니다


OpenGL, DirectX 같은 쉐이더 프로그래밍에서는 기본적으로 사용하고 있습니다.

Ambient Color = Ambient Strength Ambient Color
Diffuse Color = Dot(Object Object Normal
Light Direction) Light Color
Final Color = (Ambient Color + Diffuse Color)
Object Color


  • 직접적으로 라이팅해서 물체에 반사되는 빛의 색상을 계산하는 것을 direct illumination이라고 합니다.
  • 빛은 한 번만 반사되는 게 아니라 여러 번 물체에 반사되어 눈에 도달할 수 가 있습니다.

  • 반사된 빛을 처리하는 방법을 indirect illumination 이라고 합니다.

  • 유리에 대한 굴절, 거울에 대한 반사등과 같은 빛의 반응을 모두 합쳐서 global illumination이 됩니다.

  • 다만 이런 global illumination을 계속 계산하는데는 많은 부하가 걸리기 때문에 예전부터 lightmap 이라는 기법을 많이 사용하고 있습니다.
  • 정적인 오브젝트에 direct lighting과 indirect lighting에 대한 gloabl illumination 결과 값을 텍스처에 저장을 해서 오브젝트에 텍스처로 입히는 것인데 이게 바로 유니티의 베이킹입니다.

  • Mode에는 3가지가 있습니다.
    • realtime은 실시간으로 static으로 고정된 오브젝트와 dynamic으로 고정되지 않고 이동할 수 있는 오브젝트의 노드에 광원효과를 주며 그림자를 만듭니다. realtime은 global illumination, baking은 포함되지 않습니다.
    • baked같은 경우는 dynamic 오브젝트 캐릭터와 같이 이동하는 오브젝트에는 적용되지 않고 가만히 있는 오브젝트에 적용됩니다.
    • Mixed를 선택하면 정적인 오브젝트에는 light mapping기법을 사용하고 동적인 오브젝트는 실시간으로 계산하게 됩니다.


  • Window - Rendering - Lighting 으로 들어가면 lighting에 대한 정보를 모두 볼 수 있습니다.


  • 외부환경이 던전이나 지방과 같은 실내 환경이라면 sunSource를 제거하고 lighting을 baking할 때 사용하시면 됩니다. skybox도 마찬가지 입니다.
profile
게임 프로그래머

0개의 댓글