Reflection

post_thumbnail

  • V - View로 향하는 벡터
  • R - Reflection 벡터
  • N - 법선 Vector (normalized)

  • R = N * cos(a) + S
    • cos(a) = (N * V)이고, (N * V) / magnitude(V) = V 벡터가 N으로 투영된 벡터
      • 위의 (N * V) / magnitude(V) 식에서 N은 정규화되지 않은 상태
    • (N * V)에 단위벡터 N을 곱하면 법선 N 벡터를 구할 수 있다
  • S = N * cos(a) - V
  • R = 2 (N * cos(a)) - V
    • R = 2*(norm(N) * N * V) - V

Refraction

스카이박스(Skybox)

  • 씬에서 제일 먼저 렌더링된다
    • DepthTest는 하지 않음
  • 카메라의 viewpoint를 항상 따라다닌다

Dynamic Environment Mapping

  • environment mapping을 위해 드로잉을 각 시면의 개수(cubemap일 경우 6회)만큼 해야함
  • 한번은 인게임 업데이트, 다른 하나는 텍스처에 입힐 스크린 버퍼
  • 텍스쳐가 실시간으로 업데이트 되면서 Dynamic Reflection/Dynamic Refraction 가능ㅉ

출처