[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기

10,078 views

Published on

How to create Physical based shader by UDK.

Published in: Entertainment & Humor
0 Comments
56 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,078
On SlideShare
0
From Embeds
0
Number of Embeds
188
Actions
Shares
0
Downloads
234
Comments
0
Likes
56
Embeds 0
No embeds

No notes for slide

[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기

  1. 1. UDK로 물리 기반 셰이더 만들기아이덴티티 게임즈테크니컬 아티스트김동석
  2. 2. 발표자 소개 / 차례 / 일러두기
  3. 3. 발표자 소개• 김동석– 1999년 3D 모델러로 게임 바닥에서 밥벌이 시작– 아이닉스 소프트, 넥슨, 네오위즈를 거쳐~– 현재 아이덴티티 게임즈에서 TA로 열심히 밥벌이하고 있습니다!3
  4. 4. 네, 아이덴티티 게임즈는 그 유명한• 남자들의 수영장을 가진, 그곳입니다!4
  5. 5. 차례1. 일러두기2. 물리 기반 셰이더 (Physical Based Shader)의 정의3. 물리 기반 셰이더의 구조4. 물리 기반 셰이더를 만들기 위한 전제5. UDK로 물리 기반 셰이더 만들기5
  6. 6. 일러두기• 이 발표는 tri-Ace, Lazarov, Sébastien Lagarde의 PBS를 바탕으로합니다.• 물리적으로 정확한 셰이더는 아닙니다.(물리 기반 셰이더라며!)6
  7. 7. 물리 기반 셰이더( PYSICAL BASED SHADER)의 정의이러쿵 저러쿵 풀어보는
  8. 8. 물리 기반 셰이더라니? (1)• 기존의 실시간 셰이더들은 물리적으로 부정확한 부분이 많았습니다.– 어두운 Diffuse map을 써야 한다던가– Ambient Light가 단색이라던가– Specular가 엄청 약하거나, 혹은 강하거나8
  9. 9. 물리 기반 셰이더라니? (2)• 기존의 실시간 셰이더들은 물리적으로 부정확한 부분이 많았습니다.– Fresnel 효과가 잘못 들어가있거나– Reflection에 대한 고려가 전혀 없거나– 조명이 엄청 약한데도 엄청 밝은 셰이더라던가9
  10. 10. 그럼 예전 셰이더들이 물리랑은 상관 없는거야?• 기존 셰이더들이 생략을 좀 많이 했을 뿐입니다.– Lambert diffuse 셰이딩은 표면이 완벽하게 빛을 반사한다고가정합니다.– 거울의 반사율도 90%!• Phong 셰이딩은 현실 세계의 Specular를 재현하지 못합니다.– 원형 물체에선 괜찮지만 평평한 면에선 실제 스페큘러를 표현하지못합니다.– 언제나 동그랗게 맺히는 하이라이트~10
  11. 11. 물리 기반 셰이더는 뭐가 다른데?• 물리 기반 셰이더는 생략된 물리 현상들을 좀더 많이 구현한셰이더입니다.– Oren-nayar– Blinn-Phong Specular– 미세표면– Fresnel 효과– Image Base Light– 에너지 보존 법칙11
  12. 12. 모든 표면은 거칠다! MICROFACET BRDF실제 세계의 물리 효과들 1
  13. 13. 실제 세계의 물리 효과들 1- Microfacet BRDF (1)• Microfacet theory(미세표면 이론)은 물리 기반 셰이더의 근간– 물체의 표면은 매우 작은, 완전 반사가 일어나는 편평한 표면의 집합13
  14. 14. 실제 세계의 물리 효과들 1- Microfacet BRDF (2)• 예전 셰이더들은 물체의 모든 표면이 완전 반사를 한다고 가정하고만들어 졌습니다.14
  15. 15. 실제 세계의 물리 효과들 1- Microfacet BRDF (3)• 그럼 표면이 거칠면?15
  16. 16. 실제 세계의 물리 효과들 1- Microfacet BRDF (4)• Specular의 모양도 바뀝니다!16
  17. 17. 모든 표면은 반짝인다!실제 세계의 물리 효과들 2
  18. 18. 실제 세계의 물리 효과들 2 - 모든 표면은 Specular가 있다! (1)• 셰이더라고 그러지만 사실은 반사 모델– BRDF라는 말도 양방향 ‘반사’ 분포 함수18
  19. 19. 실제 세계의 물리 효과들 2 - 모든 표면은 Specular가 있다! (2)• 카메라에 편광 필터를 사용해서 사진을 찍어 보신분은 아시겠지만좀더 색이 풍부하게 나옵니다.– 이게 표면에서 반사되는 난반사를 줄여줘서 - Specular를 줄여줘서 -본래의 색을 더 풍부하게 보이게 해주는 원리 입니다.• 즉, 편광 필터를 사용해서 찍은 사진들은 물체의 Diffuse 부분만을얻어낸 것으로, 포토샵으로 원래 사진에서 디퓨즈 부분만 빼면Specular만 남은 이미지를 얻을 수 있습니다.19
  20. 20. 실제 세계의 물리 효과들 2 - 모든 표면은 Fresnel이 있다! (1)• 스넬의 법칙(Snell’s Law)– 두 매질이 마주하는 경계면에서 임계각을넘으면 전반사가 일어난다.• 즉, 우리가 익히 아는 Specular 반사는 특정각도에서만 일어납니다.22
  21. 21. 실제 세계의 물리 효과들 2 - 모든 표면은 Fresnel이 있다! (2)• Fresnel의 법칙(Fresnel Effect)– 표면의 반사량은 관찰자의 시점과 표면이이루는 각도에 영향을 받는다.– 표면을 바라보는 각도가 물체의 전반사가일어나는 고유 각도, 즉 CriticalAngle(임계각)에 이르면 Fresnel 효과를경험 할 수 있게 됩니다.23
  22. 22. • 마루도 얕은 각도에서 보면 거울처럼 반사가 일어납니다.• 우리가 흔히 아는 Fresnel은진정한 Fresnel이 아닌겁니다!
  23. 23. • 마루도 얕은 각도에서 보면 거울처럼 반사가 일어납니다.• 우리가 흔히 아는 Fresnel은진정한 Fresnel이 아닌겁니다!
  24. 24. 실제 세계의 물리 효과들 2 - 모든 표면은 Fresnel이 있다! (3)• 우리 주변 물체들의 IOR• 나무, 돌 같은 Specular가 없는 것처럼 보이는 재질들은 얕은각도에서 전반사가 일어납니다.26재질 IOR(Index Of Refraction)진공 1.0공기 1.0002926유리 1.5유리, 나무, 돌, 콘크리트 3 ~ 4 (14 ~ 30도)플라스틱 5 ~ 8금속 20 ~ 100
  25. 25. 실제 세계의 물리 효과들 2 - 빛을 받는 물체의 표면도 그림자가 진다!• Fresnel 때문에 Specular가 잘 안보인다는 설명은 뭔가 부족– 유리와 벤젠의 IOR은 같지만 Specular는 다르게 보임27
  26. 26. 빛은 모든 방향에서 온다!실제 세계의 물리 효과들 3
  27. 27. 실제 세계의 물리 효과들 3 - Image Based Lighting (1)• 기존의 셰이더는 Ambient Light를 그냥단색으로 처리하는 경우가 대부분29
  28. 28. 실제 세계의 물리 효과들 3 - Image Based Lighting (2)• 실제 세계에선 그늘진 부분에서도 난반사에 의한 조명이 발생30
  29. 29. 실제 세계의 물리 효과들 3 - Image Based Lighting (3)• Image Based Lighting(IBL)은단색으로 이뤄지던 주변광을 사진이나이미지를 통해 여러 색을 갖게 만들어주는 것.– 이것은 Diffuse 부분만이 아닌Specular와 Reflection 양쪽에 영향을주며, 표면의 거칠기에 따라 반사되는주변광의 모양이 바뀝니다.31
  30. 30. 실제 세계의 물리 효과들 3 - Image Based Lighting (4)• Specular와 Reflection32
  31. 31. 에너지 보존 법칙 - 들어온 것보다 나가는 것이 많을 수없다!실제 세계의 물리 효과들 4
  32. 32. 실제 세계의 물리 효과들 4 - 에너지 보존 법칙 (1)• 뉴턴 역학계에 속해있다면 모든 물리 현상은 에너지보존 법칙을 따릅니다.– 방출되는 에너지는 입력되는 에너지와 같거나 작다.– 무한동력이 존재하지 않는 이유죠.34
  33. 33. 실제 세계의 물리 효과들 4 - 에너지 보존 법칙 (2)• 빛도 마찬가지!– 입사되는 빛보다 반사되는 빛의 양이 많을 수 없다!35에너지 보존 법칙 무시 에너지 보존 법칙 적용
  34. 34. 정리 하자면…• PBS는 이런 실제 세계의 물리 효과들을 표현합니다.– Microfacet BRDF• 모든 표면에 존재하는 Specular• 모든 표면에 존재하는 Fresnel• 표면 특유의 거칠기에 따른 미세표면 Shadowing과 Maksing– IBL(Image Based Lighting)• 실제 세계의 난반사를 시뮬레이션 하는 IBL• 표면의 거칠기에 따라 변형되는 주변광의 모양– 그리고 마지막으로 이런 모든 물리적 현상을 에너지 보존 법칙에따라 표현합니다.
  35. 35. 물리 기반 셰이더의 구조게임으로 나온 PBS의 비교
  36. 36. 기본적인 셰이더의 구조• 셰이더는 크게 두 부분으로 구성– Directional Light 부분– Ambient Light 부분• 각 부분은 다시 세가지 반사 성분으로 이루어 짐– Diffuse– Specular– Reflection• 기존 셰이더들은 Reflection 성분을 제외하고 구성된 경우가 많고,특히 Ambient Light 부분은 Diffuse만 고려38
  37. 37. 물리 기반 셰이더의 구조• PBS 역시 다음과 같은 식으로 구성 됩니다.– (Directional Light) + (Ambient Light)• Directional Light는 다음과 같이 구성 됩니다.– (디퓨즈 부분) + (스페큘러 부분) + (반사 부분)• 디퓨즈 부분– (디퓨즈 맵) * (디퓨즈 셰이딩) * (노멀라이징 식)• 스페큘러 부분– (Normalizing Term) * (Specular Term) * (Fresnel Term) * (Visibility Term)• 반사 부분– 큐브맵을 사용해서 표면 거칠기에 따른 표현 정도를 결정합니다.39
  38. 38. Diffuse Albedo Equition (1)• 이 식은 PBS의 Directional 부분의 디퓨즈 라이트 부분과 스페큘러라이트 부분 입니다.40
  39. 39. Diffuse Albedo Equition (2)41
  40. 40. PBS들의 비교지금까지 게임에 쓰인
  41. 41. Tri-Ace의 PBS (1)• 2010년 Siggraph에서 제안 되었으며 게임에 적용 가능한 최초의PBS에 대한 발표 입니다.43
  42. 42. Tri-Ace의 PBS (2)• (Visibility Term)*(Specular Normalizing) =0.0397436n+0.0856832로 간략화 됩니다.44
  43. 43. Tri-Ace의 PBS (3)• Specular normalizing과 사전 정의 AmbientLighting45
  44. 44. Lazarov의 PBS (1)• 2011년 Siggraph에서 발표된, Call of Duty - Black ops에서 쓰인셰이더 입니다.46
  45. 45. Lazarov의 PBS (2)• Distribution Term– Beckmann Specular (m = 거칠기)– Blinn - Phong Sepcular in logarithmic encoding of the specularpower (n = Specular Power)47
  46. 46. Lazarov의 PBS (2)• Distribution Term– Beckmann Specular (m = 거칠기)– Blinn - Phong Sepcular in logarithmic encoding of the specularpower (n = Specular Power)48
  47. 47. Lazarov의 PBS (3)• Fresnel Term- 원래 Schlick의 식에서 Cspec은 F0로 옆의 식을 사용한 Fresnel계수- n = IOR. Lazarov의 Fresnel에선 Specular Color로 간략화• Visibility Term49
  48. 48. Lazarov의 PBS (4)• Reflection과 Ambient Light를 위한 IBL50
  49. 49. 다른 PBS들• Far cry3 에서 사용된 PBS는 Lazarov의 PBS에 Diffuse 부분에 대한normalizing과 Visibility Term의 간략화가 이뤄진 PBS입니다.• Sébastien Lagarde의 PBS는 Lazarov의 PBS에 좀더 정밀한 IBL과이를 위해 새로운 normalizing 식을 도출 해 낸 것입니다.51
  50. 50. UDK용 PBS!이것들을 짬뽕해서 제안하는
  51. 51. 제안하는 PBS𝐿 𝑃𝐵𝑆 = 𝐿 𝑑𝑖𝑟𝑒𝑐𝑡𝑖𝑛𝑎𝑙 + 𝐿 𝑎𝑚𝑏𝑖𝑒𝑛𝑡𝐿 𝑑𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛𝑎𝑙 = 𝑅 𝑑𝑖𝑓𝑓 + (𝐹𝑆𝐺× 𝑉(𝑙, 𝑣, ℎ) ×𝐷 ℎ4) + 𝐼𝐵𝐿 𝑟𝑒𝑓𝐿 𝑎𝑚𝑏𝑖𝑒𝑛𝑡 = 𝑅 𝑑𝑖𝑓𝑓 + (𝑆𝑝𝑒𝑐 𝑎𝑚𝑏𝑖𝑒𝑛𝑡 × 𝐺𝑙𝑜𝑠𝑠) + 𝐼𝐵𝐿 𝑟𝑒𝑓𝑅 𝑑𝑖𝑓𝑓 = 𝑐 𝑑𝑖𝑓𝑓 × 1 − 𝑐 𝑠𝑝𝑒𝑐 × { 𝑙 ∙ 𝑛 + 𝐼𝐵𝐿 𝑚𝑖𝑛−1}𝐹𝑆𝐺 = 𝑐 𝑠𝑝𝑒𝑐 + (1 − 𝑐 𝑠𝑝𝑒𝑐)𝑒−6ℎ∙𝑣
  52. 52. 제안하는 PBS (계속)𝑉 𝑙, 𝑣, ℎ =1( 𝑛 ∙ 𝑙 1 − 𝑎 + 𝑎)( 𝑛 ∙ 𝑣 1 − 𝑎 + 𝑎)𝑎 =2𝛼𝑝 + 18, 𝛼𝑝 = 8192 𝐺𝑙𝑜𝑠𝑠, 𝐺𝑙𝑜𝑠𝑠 𝑖𝑛 [0, 1]𝐷 ℎ4=𝛼𝑝 + 28(𝑛 ∙ ℎ) 𝛼𝑝
  53. 53. 𝜋 or Not 𝜋• Diffuse Term에서1𝜋이 없는 이유–1𝜋은 Lambertian BRDF 식에 원래 포함되어 있는 부분– 실제 세계에서 빛을 계산 할때 radiometric하게 빛을 측정– 게임 라이트는 그렇지 않음!• Specular Term에서1𝜋이 없는 이유– Blinn-Phong이나 Phong NDF BRDF모델은 SH기반– 게임의 Specular는 빛을 받는 부분에서만 계산. 즉, SH 성분은 계산 하지 않음• 요컨데, 게임에서 쓰이는 조명 시스템은 복사광을 계산하지 않기 때문에 실제BRDF식에서 존재하는1𝜋을 사용하지 않습니다!55
  54. 54. 물리 기반 셰이더를 만들기 위한 전제UDK에서
  55. 55. PBS를 위한 전제• PBS를 위해선 엔진이 3가지를 지원해야 합니다.– Gamma-Correct Rendering– High Dynamic Range Rendering– Tone mapping– UDK는 이 세가지를 모두 지원합니다.• High Dynamic Range(HDR) Rendering– UDK의 HDR 랜더링된 이미지는 포스트 프로세스 버퍼에서 접근가능합니다.– 어차피 톤 맵도 포스트 프로세스니 상관 없습니다.– 문제는 Gamma-Correct Rendering인데...57
  56. 56. 빌어먹을 감마 코렉션…58
  57. 57. 텍스쳐 읽을때- D3DSAMP_SRGBTEXUTRE랜더타겟에다 쓸때- D3DRS_SRGBWRITEENABLE
  58. 58. 다음 텍스쳐는 어떻게 설정해줘야 할까요?• 디퓨즈 맵• 노멀 맵• 스페큘러 맵60
  59. 59. 정답61sRGB Linear sRGB?
  60. 60. UDK의 sRGB 옵션• UDK는 기본적으로 임포트 되는 모든텍스쳐가 리니어 컬러 스페이스에서작업되어 저장된 것으로 상정합니다.• 그렇기 때문에 외부 프로그램에서 그린이미지와 똑같이 출력을 하려면 UDK로임포트 하는 과정에서 역sRGB 보정을 해서이미지를 밝게 만들어야 합니다.62
  61. 61. 그럼 Specular map은?• 당연히 노멀맵처럼 Linear gamma space여야 합니다.– 그런데 전 sRGB를 사용했습니다. 왜?– 너무 어둡거든요!• 옆의 그림을 보시면 이해가 빠르실겁니다.– 아스팔트랑 알콜의 스페큘러가 구분이 되십니까?63
  62. 62. Gamma Correction에 대해 정리 하자면…• UDK에선 입력되는 텍스쳐의 색 공간이 어떻든 무조건 리니어 감마스페이스에서 제작한 것으로 상정하고 저장한다!• UDK에선 그래픽 버퍼에서 최종 랜더링을 그릴때 무조건 sRGB로색공간 변화를 해준다!• 그래서 입력된 텍스쳐와 같은 결과를 얻으려면 역sRGB를 취해 밝게저장 해야 한다!• 즉, 디퓨즈 맵은 그냥 보통 작업하듯이 작업 하면 되고, 스페큘러맵은 IOR 컬러의 역sRGB로 색공간 변화 준 것으로 작업 한다!64
  63. 63. UDK로 PBS 만들기이제 진짜로 만들어 봅시다!
  64. 64. 일단 Normalmap부터 만들어 봅시다.• Blinn-Phong 모델을 사용하면DXT1으로 압축된 Normalmap이문제가 됩니다.– UDK에선TC_NormalmapUncommpressed방식으로 압축 하면 됩니다만해상도가 떨어집니다.– 해상도를 유지하면서 블록 압축현상을 피하고 싶었습니다.66Uncompressed DXT1
  65. 65. 그래서 약간의 처리를 해줍니다.67• 6 instructions가 들긴 합니다만노멀맵의 해상도도 유지하면서 DXT1압축에 의한 노이즈도 없애 줍니다.• 심지어 텍스쳐 메모리 차지하는 용량도DXT1과 차이가 없습니다!
  66. 66. 그래서 약간의 처리를 해줍니다.68• 6 instructions가 들긴 합니다만노멀맵의 해상도도 유지하면서 DXT1압축에 의한 노이즈도 없애 줍니다.• 심지어 텍스쳐 메모리 차지하는 용량도DXT1과 차이가 없습니다!
  67. 67. 큐브맵 LOD 접근하기 (1)• IBL과 표면 거칠기에 따른 반사를큐브맵의 Mipmap을 통해처리한다고 말씀 드렸습니다.– 그런데 UDK에서 어찌 Mipmap에접근 하누?– UDK의 머테리얼 에디터도 결국은HLSL코드 입니다.– 한번 불러와진 텍스쳐는HLSL변수로 선언되어 있습니다.이런 식으로요!69
  68. 68. 큐브맵 LOD 접근하기 (2)70
  69. 69. 큐브맵 LOD 접근하기 (3)• 이렇게 하면 이런게 됩니다.71
  70. 70. Diffuse Term72
  71. 71. Distribute Term73
  72. 72. Fresnel & Visibility Term74
  73. 73. Ambient Term75
  74. 74. PBS의 활용법만든건 써먹어야지!
  75. 75. SpecualrMap과 GlossinessMap• - Specular Map– 하이라이트의 색– 하이라이트 강도– 주변 환경(EnvCube)의 반사 세기– Fresnel 효과 정도– Diffuse Map의 밝기• Glossiness Map– 하이라이트가 맺히는 면적– 하이라이트 강도– 주변 환경의 반사 선명도– 표면의 거칠기77
  76. 76. Specular 면적에 따른 강도의 변화• 하이라이트가 넓게 - Glossiness가낮으면– 맺히는 하이라이트의 강도는자동으로 줄어듭니다.• 하이라이트가 좁게 - Glossiness가높으면– 맺히는 하이라이트의 강도가높아집니다.78
  77. 77. SpecularMap의 제작• 비금속류(녹슨 금속, 얼음, 물, 나무, 돌, 천 등)– RGB(0, 0, 0) ~ RGB(75, 75, 75)– UnrealColor(0.0, 0.0, 0.0) ~ (0.08, 0.08, 0.08)• 고광택 마감제가 칠해진 표면(플라스틱, 니스가 칠해진 나무,폴리에스테르 가죽 등)– RGB(90, 90, 90) ~ RGB(143, 143, 143)– UnrealColor(0.1, 0.1, 0.1) ~ (0.28, 0.28, 0.28)• 금속류(페인트가 칠해진 철, 알루미늄, 구리, 청동, 백금 등)– RGB(155, 155, 155) ~ RGB(255, 255, 255)– UnrealColor(0.3, 0.3, 0.3) ~ (1, 1, 1)79
  78. 78. http://seblagarde.wordpress.com/2012/04/30/dontnod-specular-and-glossiness-chart/
  79. 79. Glossiness Map의 강도에 따른 Specular81
  80. 80. Specular와 Glossiness의 강도에 따른 주변 환경 반사 값 변화 (1)82
  81. 81. Specular와 Glossiness의 강도에 따른 주변 환경 반사 값 변화 (2)83
  82. 82. CONCLUSION마지막 장입니다!
  83. 83. PBS는 이런 겁니다.• PBS는 실제 세계의 물리 효과들을 표현합니다.– 모든 표면에 존재하는 Specular– Fresnel– 표면 거칠기에 따른 미세표면 Shadowing과 Masking– IBL(Image Based Lighting)– 에너지 보존 법칙
  84. 84. PBS의 장점과 단점• 장점– 적은 텍스처 리소스로 거의 모든재질을 표현 할 수 있음– 아티스트가 조절할 부분이 적음– 다양한 조명 환경에서의 안정적결과물– 하나의 셰이더만 있으면 되므로Differed Renderer에도 적합– 적용하는데 특별한 신기술이 필요없음• 단점– 아티스트에게 개념을이해시키기 힘듦– WYSWYG을 위한 별도의장치가 필요– 큐브맵을 자동으로 만들어줄장치가 필요– 리얼한 장면만 만들 수 있음
  85. 85. PBS는…• 제작이 좀 난해 하지만 충분히 시도할 가치가 있는 도전이라생각합니다.89
  86. 86. 질문사항은…• Jalnaga@eyedentitygames.com 으로 메일 주시거나~• 트위터 @jalnaga나• http://jalnaga.net에 메시지를 남겨 주시면 성심 성의껏 답변드리겠습니다.90
  87. 87. 끝!

×