Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
게임 프로그래머를 위한
리얼타임 렌더링
- 조명편 -
2018.01.26 데브루키 발표자 이석우
발표자 소개
 이석우 (1987년생)
 게임 회사로 이직 희망하는 병특(전문연구요원)
 발표자료에 대한 오류사항이나 궁금한 점이 있으면 아래의 메일로 연락주세요.
kkndsta@naver.com
참고자료
 게임 프로그래밍을 위한 3차원 그래픽스 - 저자 : 한정현 -
지난 이야기
 그래픽스 파이프라인에서 프래그먼트 처리 단계는 프래그먼트의 색상을 구한다.
 색상은 텍스쳐링과 조명 등을 통해 구해진다.
조명이란 무엇인가
 조명(illumination or lighting)은 광원과 물체 사이의 상호작용을 처리하는 기술이다.
 조명 모델
 국소 조명 모델(Local illumination)
 전역 조명 모델(gl...
국소 조명 모델
 광원과 표면 재질의 특성만을 고려한 조명 모델이다.
 직접 조명(direct lighting)이라고 한다.
 계산이 간단하지만 퀄리티가 떨어진다.
전역 조명 모델
 현실에서는 모든 표면에 빛이 간접적으로 도달한다. (장면의 특정 위치에서 광원이
보이지 않더라도, 조명은 다른 표면의 반사나 굴절 등을 통해 그 위치에 전달된다.)
 이러한 간접 조명을 고려하기 위...
전역 조명 모델의 문제점
 계산하는 데 너무 많은 비용이 든다.
 레스터라이제이션 기반의 GPU 아키텍쳐는 국소 조명 모델이 더 적절하다.
전역 조명 모델의 동향
 정밀한 GI를 이용하기 보다는 계산을 간략화한 GI를 이용한다.
 GI를 미리 계산한 후 텍스쳐에 저장하여 이를 실시간에 사용한다.
오늘 발표
 프래그먼트 처리 단계에서 사용되는 국소 조명 모델에 대해서 알아본다.
Phong Lighting model
 가장 보편적인 국소 조명 모델이다.
 디퓨즈, 스펙큘러, 엠비언트, 발광 항을 고려한다.
Diffuse term
 디퓨즈 항은 객체의 표면에 부딪힌 후 전방향으로 흩어지는 빛을 표현한다
 물체의 표면으로 들어온 빛은 모든 방향으로 같은 강도로 반사된다. 이를 난반사라
부른다.
 따라서, 반사량은 카메라...
Diffuse term - Lambert’s law -
 대신 반사량은 물체 표면에 들어오는 빛의 양에 비례한다.
 빛의 양은 노말 벡터와 빛 벡터의 내적으로 측정할 수 있다.
 이를 람베르트 법칙이라 한다.
빛의...
Diffuse term - Lambert’s law -
 그림 (b)와 같이 노말 벡터와 빛 벡터의 방향이 같을 경우, 빛의 양이 가장 크다.
 그림 (c)와 같이 입사각이 90도일 경우, 값이 0이 된다.
 그림...
Diffuse term - 빛의 색과 재질 -
 빛의 양 이외에도 추가적으로 빛의 고유색과 재질의 디퓨즈 반사율(diffuse
reflectance)을 고려하여 디퓨즈 항을 계산한다.
𝐿 𝑑 = max 𝑛 ∙ 𝑙, 0...
Diffuse term - 빛의 색과 재질 -
 백색 빛 (1, 1, 1)이 물체의 표면 반사 노란빛을 띤다면 빨강색과 초록색은 반사하고
파란색을 흡수한다. 재질 파라미터를 이용하여 이러한 종류의 필터링이 가능하다.
...
Diffuse term
 디퓨즈 항을 적용한 결과
Specular term
 스펙큘러 항은 물체 표면에 하이라이트(highlight)를 만드는데 사용되며 정반사라
부른다.
 스펙큘러 항은 계산하기 위해 시야 벡터, 반사 벡터, 빛벡터를 이용한다.
Specular term -반사 벡터-
 반사 벡터 유도
Specular term -시야 벡터-
 디퓨즈 항이 시야 벡터에 독립적인 반면 스펙큘러 항은 시야 벡터에 의존한다.
 하이라이트의 감소되는 정도는 (𝑟 ∙ 𝑣) 𝑠ℎ
로 근사적으로 계산되며, sh는 표면의 반짝임
...
Specular term -하이라이트-
 sh값에 따른 결과
Specular term
 스펙큘러 항의 최종식은 아래와 같다.
 디퓨트 항의 재질과는 달리 스펙큘러 항의 재질 특성은 (0.9, 0.9, 0.9), (0.8, 0.8, 0.8)
등과 같이 회색조(gray-scale...
Ambient term
 앰비언트 항은 장면 속 물체들로 반사된 빛을 근사적으로 표현한다. 흔히 간접광이
라 부른다.
 퐁 모델에서 엠비언트 항은 빛이 물체의 모든 표면에 동일한 광도로 반사된다.
Emissive term
 마지막으로 발산광은(emissive light)은 표면 그 자체에서 발산하는 빛을 묘사한다.
Phong Lighting Model
 퐁 모델은 네 개 항을 더하여 다음과 같이 정의된다.
Shader
 쉐이더는 GPU에서 실행가능한 프로그램을 의미하여, 프로그래머가 제어 할 수 있다.
쉐이딩 언어
 C 언어와 매우 유사하다.
 Hight Level Shading Launguage(HLSL) by Microsoft
 GLSL(OpenGL Shading Language) by OpenGL
 벡터와...
Per-vertex Lighting
 Per-vertex Lighting은 버텍스 쉐이더에서 조명을 계산한다.
Per-vertex Lighting
 버텍스 쉐이더에서 계산된 조명 값은 래스터 라이져 단계에서 선형 보간되어 픽셀
단위의 값들로 저장된다.
Per-vertex Lighting 의 문제점
 하나의 삼각형을 이루는 3개의 버텍스에 하이라이트가 없을 경우, 삼각형 사이에 점 p에
서 하이라이트가 존재해도 Per-vertex Lighting의 결과는 하이라이트가...
Per-vertex Lighting 의 문제점
 이 문제는 카메라가 움직일 때 더욱 두드러져 하이라이트가 없어졌다 갑자기 생기
는 현상이 발생한다.
Per-fragment Lighting
 Per-vertex Light 문제를 해결하기 위해 프래그먼트에서 조명을 계산한다.
Per-fragment Lighting
 픽셀 세이더에서 조명을 계산하기 전, 노말
벡터를 반드시 정규화 해야한다. 래스터라
이저 단계에서 보간된 노말 벡터는 일반적
으로 단위벡터가 아니기 때문이다.
Q&A
Upcoming SlideShare
Loading in …5
×

리얼타임 렌더링 - 조명 입문편 -

컴퓨터 그래픽스에서 조명의 기본적인 내용을 다룬다.

  • Be the first to comment

리얼타임 렌더링 - 조명 입문편 -

  1. 1. 게임 프로그래머를 위한 리얼타임 렌더링 - 조명편 - 2018.01.26 데브루키 발표자 이석우
  2. 2. 발표자 소개  이석우 (1987년생)  게임 회사로 이직 희망하는 병특(전문연구요원)  발표자료에 대한 오류사항이나 궁금한 점이 있으면 아래의 메일로 연락주세요. kkndsta@naver.com
  3. 3. 참고자료  게임 프로그래밍을 위한 3차원 그래픽스 - 저자 : 한정현 -
  4. 4. 지난 이야기  그래픽스 파이프라인에서 프래그먼트 처리 단계는 프래그먼트의 색상을 구한다.  색상은 텍스쳐링과 조명 등을 통해 구해진다.
  5. 5. 조명이란 무엇인가  조명(illumination or lighting)은 광원과 물체 사이의 상호작용을 처리하는 기술이다.  조명 모델  국소 조명 모델(Local illumination)  전역 조명 모델(global illumination)
  6. 6. 국소 조명 모델  광원과 표면 재질의 특성만을 고려한 조명 모델이다.  직접 조명(direct lighting)이라고 한다.  계산이 간단하지만 퀄리티가 떨어진다.
  7. 7. 전역 조명 모델  현실에서는 모든 표면에 빛이 간접적으로 도달한다. (장면의 특정 위치에서 광원이 보이지 않더라도, 조명은 다른 표면의 반사나 굴절 등을 통해 그 위치에 전달된다.)  이러한 간접 조명을 고려하기 위해 전역 조명 모델(global illumination)은 주변 물체 들을 잠재적인 광원으로 본다.
  8. 8. 전역 조명 모델의 문제점  계산하는 데 너무 많은 비용이 든다.  레스터라이제이션 기반의 GPU 아키텍쳐는 국소 조명 모델이 더 적절하다.
  9. 9. 전역 조명 모델의 동향  정밀한 GI를 이용하기 보다는 계산을 간략화한 GI를 이용한다.  GI를 미리 계산한 후 텍스쳐에 저장하여 이를 실시간에 사용한다.
  10. 10. 오늘 발표  프래그먼트 처리 단계에서 사용되는 국소 조명 모델에 대해서 알아본다.
  11. 11. Phong Lighting model  가장 보편적인 국소 조명 모델이다.  디퓨즈, 스펙큘러, 엠비언트, 발광 항을 고려한다.
  12. 12. Diffuse term  디퓨즈 항은 객체의 표면에 부딪힌 후 전방향으로 흩어지는 빛을 표현한다  물체의 표면으로 들어온 빛은 모든 방향으로 같은 강도로 반사된다. 이를 난반사라 부른다.  따라서, 반사량은 카메라 시선(시야 방향)에 무관하다.
  13. 13. Diffuse term - Lambert’s law -  대신 반사량은 물체 표면에 들어오는 빛의 양에 비례한다.  빛의 양은 노말 벡터와 빛 벡터의 내적으로 측정할 수 있다.  이를 람베르트 법칙이라 한다. 빛의 양 = max 𝑛 ∙ 𝑙, 0 = max(𝑛𝑙𝑐𝑜𝑠𝜃, 0) 𝑝: 물체 표면 위의 한 점 𝑙 : 빛벡터 𝑛: 노말벡터 𝜃: 입사각
  14. 14. Diffuse term - Lambert’s law -  그림 (b)와 같이 노말 벡터와 빛 벡터의 방향이 같을 경우, 빛의 양이 가장 크다.  그림 (c)와 같이 입사각이 90도일 경우, 값이 0이 된다.  그림 (d)와 같이 입사각이 90도 이상일 경우 내적은 음의 값이 된다. 이럴 경우 빛의 양은 0으로 한다. max 𝑛𝑙𝑐𝑜𝑠0, 0 = 𝑛𝑙 max 𝑛𝑙𝑐𝑜𝑠90° , 0 = 0 max 𝑛𝑙𝑐𝑜𝑠120° , 0 = 0
  15. 15. Diffuse term - 빛의 색과 재질 -  빛의 양 이외에도 추가적으로 빛의 고유색과 재질의 디퓨즈 반사율(diffuse reflectance)을 고려하여 디퓨즈 항을 계산한다. 𝐿 𝑑 = max 𝑛 ∙ 𝑙, 0 𝑠 𝑑 ⊗ 𝑚 𝑑 𝐿 𝑑 : 디퓨즈 항 𝑠 𝑑 : 빛의 고유색 𝑚 𝑑 : 재질의 디퓨즈 반사율
  16. 16. Diffuse term - 빛의 색과 재질 -  백색 빛 (1, 1, 1)이 물체의 표면 반사 노란빛을 띤다면 빨강색과 초록색은 반사하고 파란색을 흡수한다. 재질 파라미터를 이용하여 이러한 종류의 필터링이 가능하다. (1, 1, 1) ⊗ (1, 1, 0) = (1, 1, 0) (0.5, 0.5, 0.5) ⊗ (0.5, 1, 0.5) = (0.25, 0.5, 0.25) 𝑠 𝑑 ⊗ 𝑚 𝑑
  17. 17. Diffuse term  디퓨즈 항을 적용한 결과
  18. 18. Specular term  스펙큘러 항은 물체 표면에 하이라이트(highlight)를 만드는데 사용되며 정반사라 부른다.  스펙큘러 항은 계산하기 위해 시야 벡터, 반사 벡터, 빛벡터를 이용한다.
  19. 19. Specular term -반사 벡터-  반사 벡터 유도
  20. 20. Specular term -시야 벡터-  디퓨즈 항이 시야 벡터에 독립적인 반면 스펙큘러 항은 시야 벡터에 의존한다.  하이라이트의 감소되는 정도는 (𝑟 ∙ 𝑣) 𝑠ℎ 로 근사적으로 계산되며, sh는 표면의 반짝임 (shininess)를 의미한다.  완벽히 매끄러운 표면의 경우, sh값은 무한대가 되고 𝜌 = 0일 경우에만 카메라에 보인다.  그렇지 않은 표면에서는, 𝜌가 0일 때 가장 큰 하이라이트가 생기고 𝜌가 커질수록 급격히 감소한다.
  21. 21. Specular term -하이라이트-  sh값에 따른 결과
  22. 22. Specular term  스펙큘러 항의 최종식은 아래와 같다.  디퓨트 항의 재질과는 달리 스펙큘러 항의 재질 특성은 (0.9, 0.9, 0.9), (0.8, 0.8, 0.8) 등과 같이 회색조(gray-scale)로 표현되는데, 이는 하이라이트가 광원을 띄게 하기 위함이다.
  23. 23. Ambient term  앰비언트 항은 장면 속 물체들로 반사된 빛을 근사적으로 표현한다. 흔히 간접광이 라 부른다.  퐁 모델에서 엠비언트 항은 빛이 물체의 모든 표면에 동일한 광도로 반사된다.
  24. 24. Emissive term  마지막으로 발산광은(emissive light)은 표면 그 자체에서 발산하는 빛을 묘사한다.
  25. 25. Phong Lighting Model  퐁 모델은 네 개 항을 더하여 다음과 같이 정의된다.
  26. 26. Shader  쉐이더는 GPU에서 실행가능한 프로그램을 의미하여, 프로그래머가 제어 할 수 있다.
  27. 27. 쉐이딩 언어  C 언어와 매우 유사하다.  Hight Level Shading Launguage(HLSL) by Microsoft  GLSL(OpenGL Shading Language) by OpenGL  벡터와 행렬 같은 특수한 데이터 타입을 지원한다.  입력 데이터의 두가지 종류  Varing data: 쉐이더를 실행할 때마다 변하는 데이터(예 : 버텍스)  Uniform data : 다수의 쉐이더에서 공유되는 일정한 값(예 : 월드 행렬)
  28. 28. Per-vertex Lighting  Per-vertex Lighting은 버텍스 쉐이더에서 조명을 계산한다.
  29. 29. Per-vertex Lighting  버텍스 쉐이더에서 계산된 조명 값은 래스터 라이져 단계에서 선형 보간되어 픽셀 단위의 값들로 저장된다.
  30. 30. Per-vertex Lighting 의 문제점  하나의 삼각형을 이루는 3개의 버텍스에 하이라이트가 없을 경우, 삼각형 사이에 점 p에 서 하이라이트가 존재해도 Per-vertex Lighting의 결과는 하이라이트가 보이지 않는다. Per-vertex Lighting Per-fragment Lighting 실제 조명
  31. 31. Per-vertex Lighting 의 문제점  이 문제는 카메라가 움직일 때 더욱 두드러져 하이라이트가 없어졌다 갑자기 생기 는 현상이 발생한다.
  32. 32. Per-fragment Lighting  Per-vertex Light 문제를 해결하기 위해 프래그먼트에서 조명을 계산한다.
  33. 33. Per-fragment Lighting  픽셀 세이더에서 조명을 계산하기 전, 노말 벡터를 반드시 정규화 해야한다. 래스터라 이저 단계에서 보간된 노말 벡터는 일반적 으로 단위벡터가 아니기 때문이다.
  34. 34. Q&A

×