[OpenGL] 8. Shading

scarleter99·2023년 5월 16일
0

OpenGL

목록 보기
8/10

📌 Shading

  • 렌더링 과정에서 빛의 거리와 각도에 따라 물체 표면의 조도를 변화시킨다.
    • 현실의 물리 법칙과 다르게 동작하는 경우가 많다.

Phong Reflection Model

  • 현실의 물리 법칙과 다르게 동작한다.
  • 빛을 3가지 종류로 구분하여 게산한 후 합치는 방식이다.
    • Ambient Reflection, Diffuse Reflection, Specular Reflection

Ambient Reflection (주변광)

  • 주변의 다른 물체면으로 부터 반사되어온 빛이다.
  • 주변 반사에 의해 물체면으로 입사되는 빛은 계산하기가 매우 복잡하다.
    • 따라서 주변광은 모든 물체면에 대해 일정 크기로 밝기를 증가시키는 것으로 대신한다.
    • Normal 벡터, 광원 벡터, 카메라 벡터에 영향을 받지 않는다.

Diffuse Reflection (난반사광)

  • 물체면에서 사방으로 반사되어 나가는 빛이다.
  • 난반사에 의해 물체면으로 반사되는 빛은 계산하기가 매우 복잡하다.
    • 따라서 난반사광은 물체면에서 사방으로 모두 동일하게 빛을 반사시킨다고 가정한다.
    • 카메라 벡터에 영향을 받지 않는다.
  • 벡터 l과 n 사이의 각이 작을수록 더 밝아진다.
    • 벡터 l과 n이 정규화 되어있다면 밝기는 두 벡터의 내적에 비례한다.
    • 사이각이 둔각인 경우를 대비하여 최소값을 0으로 둔다.

Specular Reflection (정반사광)

  • 물체면에서 정반사되어 나가는 빛이다.
  • 정반사에 의해 물체면에서 반사되는 빛을 계산한다.
  • 반사 벡터와 카메라 벡터 사이의 각이 작을수록 더 밝아진다.
  • 벡터 rrvv사이의 각이 작을수록 더 밝아진다.
    • 벡터 rrvv가 정규화 되어있다면 밝기는 두 벡터의 내적의 a(Shininess Coefficient)제곱에 비례한다.
    • 사이각이 둔각인 경우를 대비하여 최소값을 0으로 둔다.
    • a(Shininess Coefficient)가 커질수록 하이라이트가 더 강해진다.

Phong Reflection Model

  • a,b,c,da, b, c, d는 거리에 따른 밝기 감소량 계수이다.
  • La,Ld,LsL_{a}, L_{d}, L_{s}는 하나의 빛이 가진 3가지 RGB속성이다.
  • ka,kd,ksk_{a}, k_{d}, k_{s}는 물체면이 가진 Material이다.

Phong-Blinn Reflection Model

  • Phong reflection model의 Specular reflection이 개선 되었다.
  • 벡터 rr보다 hh가 더 계산하기 쉽다.

Computing Per-vertex Normals

  • Per-Vertex Normal 계산법
    - Primitive의 Vertex로 이루어진 벡터들의 외적을 이용하여 Normal을 계산한다.
    - 주변 Face의 Normal을 모두 더한 후 정규화 시킨다.

0개의 댓글