SlideShare a Scribd company logo
1 of 59
Download to read offline
BRDF기반 사전정의 스킨 셰이더
아이덴티티 게임즈
테크니컬 아티스트
김동석
BRDF기반 사전정의 스킨 셰이더

발표자 소개 / 차례 / 일러두기
발표자 소개

• 김동석
• 1999년 3D 모델러로 이 바닥에 굴러 들어옴.
• 아이닉스 소프트, 넥슨, 네오위즈를 거쳐~
• 현재 아이덴티티 게임즈에서 TA로 구르고 있습니다!
발표자 소개

• 김동석
• 1999년 3D 모델러로 이 바닥에 굴러 들어옴.
• 아이닉스 소프트, 넥슨, 네오위즈를 거쳐~
• 현재 아이덴티티 게임즈에서 TA로 구르고 있습니다!
네, 바로
차례

1. 일러두기
2. 피부 셰이더에서 제일 중요한 점 두가지
3. BRDF? 사전정의(Pre-Intergrated)?
4. 3DS Max에서 맵 만들기
5. 정리
일러두기

• 물리적으로 정확한 셰이더는 아닙니다.
 – 정확하게 만들 수도 있지만…

• 디퓨즈 부분에 대해서만 다루고 있습니다.
 – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요!
일러두기

• 물리적으로 정확한 셰이더는 아닙니다.
 – 정확하게 만들 수도 있지만…

• 디퓨즈 부분에 대해서만 다루고 있습니다.
 – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요!
   • 사실 그냥 Phong Specular를 쓰셔도 괜찮을 겁니다. 아마도…
일러두기

• 물리적으로 정확한 셰이더는 아닙니다.
 – 정확하게 만들 수도 있지만…

• 디퓨즈 부분에 대해서만 다루고 있습니다.
 – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요!
   • 사실 그냥 Phong Specular를 쓰셔도 괜찮을 겁니다. 아마도…

• 굉장히 주관적인 주장입니다.
 – 객관적 증명은 다음에 기회가 된다면…
뽕숑뽕숑한 피부를 만들기 위한,

피부 셰이더에서 제일 중요한 점 두 가지
피부 셰이더 하면 떠오르는 것

• 피부 셰이더라고 하면 제일먼저 뭐가 떠오르시나요?
피부 표현을 위한 도전(1)

• 2003년 Texture Space Diffusion (Borshukov et al.)
• 2005년 Gaussian Blur / Wrap lighting (Gosselin/Green)
피부 표현을 위한 도전(2)

• 2007년 NVIDIA Human Head
• 2009년 12-Tap Approximation
이런 기술들의 목적은 하나!

• 피부가 갖는 빛에 대한 투과성을 흉내 내는 것!
 – 피부는 두께에 따른 빛의 파장별 반사율이 다릅니다.
 – 그래서 암부에 빨간 색이 묻고 흐릿한 느낌을 갖게 됩니다.
즉, 이 두 가지의 피부 특징을 나타내려 한 것!




                ,
기존 셰이더들의 문제

• 무겁다!
 – NVidia의 경우 머리당 라이트맵 11개!
   • 이걸 매 프레임마다 Lerp해준다!
 – 12 tap Approximation 의 경우에도 머리당 라이트맵 2개!
   • 캐릭터 5개가 화면에 나오면?
   • (머리 5 + 몸 파트 5) * 2 = 라이트맵 20개!

• UV Seam 문제
그럼 SSSSS는?

• Screen Space Sub Surface Scattering
• 화면 단위 처리기 때문에 많은 캐릭터가 나오는 장면에 적합!
  – 그렇지만 한명만 나오는 장면에서도 같은 비용이 발생!

• Deferred 랜더러가 필요!
  – G-buffers 채널을 많이 쓴다!

• 결정적으로 S가 너무 많다!
그럼 해결책이 뭔데?

BRDF? 사전정의(PRE-INTERGRATED)?
Lambertian reflectance

• 컴퓨터 그래픽에 있어 디퓨즈 부분을 표현하는 가장 기본적인 방식.
 – “표면으로부터 관찰되는 방사선의 강도는 표면 법선과 관찰자 시선 사이의 각 𝜃의 Cosine에
  대해 직접적으로 비례한다.”

• 쉽게 말해 빛과 표면이 이루는 각도에 따라 음영이 결정된다는 소리.
Lambertian reflectance

              • 응? 그럼 이런 것들은?
              • 익히 알고 있던 셰이더 이름들은 디퓨즈 셰이딩에 관한 것이
               아니었다!
              • 이것들은 하이라이트, 즉 BRDF를 기반으로 한 Specular 계
               산에 관한 것이었다!
                – 물론 Oren-Nayar-Blinn은 디퓨즈 셰이딩에 관한 것입니다.
BRDF
Bidirectional reflectance distribution function

• 양방향 반사 분포 함수
  – 입사되는 광자들이 특정한 방향으로 나가는 확률값을 반환하는 함수
BRDF
Bidirectional reflectance distribution function
• 앞의 식을 설명하자면,
 – 𝜔 𝜊 방향으로 반사되어 나가는 복사휘도와 𝜔 𝜄 방향에서 들어오는 미분 복사조도 사이의 비율
 – 이게 Bidirectional, 양방향인 이유는 입사/반사 방향에 따라 함수 값이 달라지기 때문
 – 특정 식을 의미하지 않음.

• 사실 Lambert 셰이딩이 그렇게 간단하게 계산 될 수 있는 이유는 빛이 입사하는 방
 향에 관계없이 모든 방향으로 같은 양의 빛을 반사한다고 가정했기 때문이다.
• 요컨대, 특정 표면이 내가 보는 시점과 빛과의 관계에 따라 갖는 특정 값을 얻는 법
그러나

                 그때는 그냥
디퓨즈는 Lambertian, 스페큘러는 BRDF인줄만 알았습니다.

               그런데…
(시간이 흘러)   두 가지, 새로운 것을 보게 됐다!

• 팀 포트리스2의 툰 셰이딩을 흉내 낸 것   • Arch & Design Material (3DS Max)
1. Lambert 셰이딩 계산을 UV좌표로 쓸 수 있다!

2. BRDF를 디퓨즈에도 적용 할 수 있다!



           죄송합니다! 너무나 당연한걸…
이런 겁니다!

• 텍스쳐의 UV 좌표는 0~1사이의 실수입니다.
• 즉, Lambertian Reflection으로 얻어진 실수를 U좌표로 쓸 수 있다는 겁니다!
 – V좌표는 무조건 0이라고 해두면…

       어두운 쪽=0




                 밝은 쪽=1
여기에 Lambertian Reflection을 BRDF로 바꾸면…

• Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고,
• 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면…
• 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.
여기에 Lambertian Reflection을 BRDF로 바꾸면…

• Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고,
• 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면…
• 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.
여기에 Lambertian Reflection을 BRDF로 바꾸면…

• Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고,
• 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면…
• 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.


       즉,          Sub Surface Scattering을
            (텍스쳐만 있다면)


                  할 수 있다는 겁니다!
여기에 Lambertian Reflection을 BRDF로 바꾸면…

• Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고,
• 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면…
• 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.


       즉,          Sub Surface Scattering을
            (텍스쳐만 있다면)


                  할 수 있다는 겁니다!
그럼 그 텍스쳐는 어디서 구하는데?

3DS MAX에서 맵 만들기
BRDF를 기록한 맵 만들기 - 0

• 우리에겐 최고의 랜더링 솔루션을 제공하는 3D Studio Max가 있습니다.
 – 자체 랜더러도 훌륭하고요,
 – 업계 표준이라는 Mentalray도 탑재하고 있죠,
 – 거기다 모든 3D 어플리케이션 중 가장 많은 외부 랜더러를 갖고 있습니다.
 – 결정적으로 끝내주는 피부 셰이더를 갖고 있습니다!




                    아니 뭐 제가 맥스만 쓸 줄 알아서 이런게 아니라고 말은 못하겠지만…
BRDF를 기록한 맵 만들기 - 1

• Max의 Sub Surface Scattering Fast Skin shader로 피부 재질을 만들어 줍니다.
• 만들어진 재질에서 스페큘러와 반사를 없애고 디퓨즈 색을 흰색으로 바꿔 구에 적용합니다.
BRDF를 기록한 맵 만들기 - 2
BRDF를 기록한 맵 만들기 - 2
BRDF를 기록한 맵 만들기 - 2
이렇게 만들어진 맵을 셰이더에 적용하면~




 Lambert Shading   BRDF Skin Shading
확대해서 보면…
           요렇게 바알갛게
           핏기가 올라옵니다.




           첫번째 피부 셰이더의 특징은
           만들었다면, 두번째 특징은?
피부 셰이더의 두번째 특징을 재현 하려면?

• Blend Normal
  – 빛이 피부 속으로 확산 되는 것을 Blurring한 노멀맵으로 표현.
  – 원본의 R채널에 Blur를 줍니다.
  – 이렇게 만들어진 이미지와 원본의 GB채널을 합해 새로운 노멀맵을 만들어 줍니다.
  – 원본 노멀맵과 새로 만들어진 노멀맵을 BRDF 셰이딩의 R채널을 기준으로 Lerp해줍니다.
BRDF 셰이딩의 R채널을 기준으로?

• BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
BRDF 셰이딩의 R채널을 기준으로?

• BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
BRDF 셰이딩의 R채널을 기준으로?

• BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
BRDF 셰이딩의 R채널을 기준으로?

• BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
BRDF 셰이딩의 R채널을 기준으로?

• BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.




 즉, 어떻게 노멀맵을 섞어야 하는지를 얻을 수 있다.
그럼 왜 R채널만 Blur 주는데?

• 모든 채널에 Blur를 주면 세세한 디테일이 전부 사라집니다!




         Original Normal   Blend Normal   Blur Normal
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
이제 마무리네요!

정리 (CONCLUSION)
BRDF기반 사전정의 피부 셰이더

• BRDF: 빛만을 고려한 것이 아닌, 시점까지 고려한
• 사전 정의: BRDF 맵과 Blend 노멀맵을 미리 만들어 놓은

• 피부 셰이더!
이게 뭐가 좋냐면…

• 빠릅니다!
• 필요한 텍스쳐가 적어 메모리 사용량이 매우 적습니다!
• Shader model 3.0 기반이기 때문에 어떤 플랫폼에도 적용 할 수 있습니다!
• 이 방식을 응용하면 피부 BRDF맵 뿐만 아니라 거의 모든 재질의 BRDF맵을 얻을 수
 있습니다!
• 그렇지만 잘 살펴보면 단점도 있습니다.
 – 두께에 기반한 SSS는 불가능 합니다.
 – 뒤쪽에서 투과되는 빛은 따로 처리를 해줘야
  합니다.
 – 피부에 부드럽게 떨어지는 그림자를 만들 수
  없습니다.
 – 미리 만들어 놓아야 하는 것들이 많아 아티스
  트가 최종 결과물을 예측하기가 어렵습니다.




     써놓고 보니 정말 많은 단점이군요. OTL
그래도…

• MMORPG에도 적용 가능한, 간단하지만 효과 좋은 피부 셰이더라 자부합니다!
질문사항은…

• Jalnaga@eyedentitygames.com 으로 메일 주시거나~
• 트위터 @jalnaga나
• http://jalnaga.net에 메시지를 남겨 주시면 성심 성의껏 답변 드리겠습니다.
끝!

More Related Content

What's hot

[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근MinGeun Park
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기Madumpa Park
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해tartist
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑MinGeun Park
 
아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더포프 김
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred RenderingKWANGIL KIM
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술YEONG-CHEON YOU
 
2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성Gunho Shin
 
언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정Dae Hyek KIM
 
Ue4 에서의 환경변화 구현
Ue4 에서의 환경변화 구현Ue4 에서의 환경변화 구현
Ue4 에서의 환경변화 구현kyuil choi
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingYEONG-CHEON YOU
 

What's hot (20)

[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
D2 Hdr
D2 HdrD2 Hdr
D2 Hdr
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해
 
Ssao
SsaoSsao
Ssao
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
 
아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering
 
Compute shader
Compute shaderCompute shader
Compute shader
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술
 
2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성
 
언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정
 
Ue4 에서의 환경변화 구현
Ue4 에서의 환경변화 구현Ue4 에서의 환경변화 구현
Ue4 에서의 환경변화 구현
 
Motion blur
Motion blurMotion blur
Motion blur
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion Culling
 

Viewers also liked

[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기동석 김
 
Hair animation by vertex shader
Hair animation by vertex shaderHair animation by vertex shader
Hair animation by vertex shader동석 김
 
버텍스 셰이더로 하는 머리카락 애니메이션
버텍스 셰이더로 하는 머리카락 애니메이션버텍스 셰이더로 하는 머리카락 애니메이션
버텍스 셰이더로 하는 머리카락 애니메이션동석 김
 
언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질동석 김
 
Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4동석 김
 
언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex ProcessingDae Hyek KIM
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)ozlael ozlael
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.ozlael ozlael
 
언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFog언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFogDae Hyek KIM
 
언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF TermDae Hyek KIM
 
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & GlassDae Hyek KIM
 
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험Jooeun Park
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머포프 김
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성JiUng Choi
 

Viewers also liked (20)

[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
 
Hair animation by vertex shader
Hair animation by vertex shaderHair animation by vertex shader
Hair animation by vertex shader
 
버텍스 셰이더로 하는 머리카락 애니메이션
버텍스 셰이더로 하는 머리카락 애니메이션버텍스 셰이더로 하는 머리카락 애니메이션
버텍스 셰이더로 하는 머리카락 애니메이션
 
언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질
 
Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4
 
언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 
언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFog언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFog
 
Hair in Tomb Raider
Hair in Tomb RaiderHair in Tomb Raider
Hair in Tomb Raider
 
언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term
 
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
 
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험
NDC 2015 박주은,최재혁 물리기반렌더링 지난1년간의 경험
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성
 

Similar to Brdf기반 사전정의 스킨 셰이더

Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadowMoonLightMS
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1MoonLightMS
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자MoonLightMS
 
PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3Jooyoung Yi
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습Jungsoo Park
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)해강
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환Yggdrasil610
 
7강 shader basic lighting_배포용 삭제버전
7강 shader basic lighting_배포용 삭제버전7강 shader basic lighting_배포용 삭제버전
7강 shader basic lighting_배포용 삭제버전JP Jung
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesJangho Lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트JP Jung
 

Similar to Brdf기반 사전정의 스킨 셰이더 (15)

Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
 
Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadow
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자
 
PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환
 
7강 shader basic lighting_배포용 삭제버전
7강 shader basic lighting_배포용 삭제버전7강 shader basic lighting_배포용 삭제버전
7강 shader basic lighting_배포용 삭제버전
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination Techniques
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
 

Brdf기반 사전정의 스킨 셰이더

  • 1. BRDF기반 사전정의 스킨 셰이더 아이덴티티 게임즈 테크니컬 아티스트 김동석
  • 2. BRDF기반 사전정의 스킨 셰이더 발표자 소개 / 차례 / 일러두기
  • 3. 발표자 소개 • 김동석 • 1999년 3D 모델러로 이 바닥에 굴러 들어옴. • 아이닉스 소프트, 넥슨, 네오위즈를 거쳐~ • 현재 아이덴티티 게임즈에서 TA로 구르고 있습니다!
  • 4. 발표자 소개 • 김동석 • 1999년 3D 모델러로 이 바닥에 굴러 들어옴. • 아이닉스 소프트, 넥슨, 네오위즈를 거쳐~ • 현재 아이덴티티 게임즈에서 TA로 구르고 있습니다!
  • 6. 차례 1. 일러두기 2. 피부 셰이더에서 제일 중요한 점 두가지 3. BRDF? 사전정의(Pre-Intergrated)? 4. 3DS Max에서 맵 만들기 5. 정리
  • 7. 일러두기 • 물리적으로 정확한 셰이더는 아닙니다. – 정확하게 만들 수도 있지만… • 디퓨즈 부분에 대해서만 다루고 있습니다. – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요!
  • 8. 일러두기 • 물리적으로 정확한 셰이더는 아닙니다. – 정확하게 만들 수도 있지만… • 디퓨즈 부분에 대해서만 다루고 있습니다. – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요! • 사실 그냥 Phong Specular를 쓰셔도 괜찮을 겁니다. 아마도…
  • 9. 일러두기 • 물리적으로 정확한 셰이더는 아닙니다. – 정확하게 만들 수도 있지만… • 디퓨즈 부분에 대해서만 다루고 있습니다. – 스페큘러나 반사는 Kelemen / Szirmay - Kalos model을 쓰세요! • 사실 그냥 Phong Specular를 쓰셔도 괜찮을 겁니다. 아마도… • 굉장히 주관적인 주장입니다. – 객관적 증명은 다음에 기회가 된다면…
  • 10. 뽕숑뽕숑한 피부를 만들기 위한, 피부 셰이더에서 제일 중요한 점 두 가지
  • 11. 피부 셰이더 하면 떠오르는 것 • 피부 셰이더라고 하면 제일먼저 뭐가 떠오르시나요?
  • 12. 피부 표현을 위한 도전(1) • 2003년 Texture Space Diffusion (Borshukov et al.) • 2005년 Gaussian Blur / Wrap lighting (Gosselin/Green)
  • 13. 피부 표현을 위한 도전(2) • 2007년 NVIDIA Human Head • 2009년 12-Tap Approximation
  • 14. 이런 기술들의 목적은 하나! • 피부가 갖는 빛에 대한 투과성을 흉내 내는 것! – 피부는 두께에 따른 빛의 파장별 반사율이 다릅니다. – 그래서 암부에 빨간 색이 묻고 흐릿한 느낌을 갖게 됩니다.
  • 15. 즉, 이 두 가지의 피부 특징을 나타내려 한 것! ,
  • 16. 기존 셰이더들의 문제 • 무겁다! – NVidia의 경우 머리당 라이트맵 11개! • 이걸 매 프레임마다 Lerp해준다! – 12 tap Approximation 의 경우에도 머리당 라이트맵 2개! • 캐릭터 5개가 화면에 나오면? • (머리 5 + 몸 파트 5) * 2 = 라이트맵 20개! • UV Seam 문제
  • 17. 그럼 SSSSS는? • Screen Space Sub Surface Scattering • 화면 단위 처리기 때문에 많은 캐릭터가 나오는 장면에 적합! – 그렇지만 한명만 나오는 장면에서도 같은 비용이 발생! • Deferred 랜더러가 필요! – G-buffers 채널을 많이 쓴다! • 결정적으로 S가 너무 많다!
  • 18. 그럼 해결책이 뭔데? BRDF? 사전정의(PRE-INTERGRATED)?
  • 19.
  • 20. Lambertian reflectance • 컴퓨터 그래픽에 있어 디퓨즈 부분을 표현하는 가장 기본적인 방식. – “표면으로부터 관찰되는 방사선의 강도는 표면 법선과 관찰자 시선 사이의 각 𝜃의 Cosine에 대해 직접적으로 비례한다.” • 쉽게 말해 빛과 표면이 이루는 각도에 따라 음영이 결정된다는 소리.
  • 21. Lambertian reflectance • 응? 그럼 이런 것들은? • 익히 알고 있던 셰이더 이름들은 디퓨즈 셰이딩에 관한 것이 아니었다! • 이것들은 하이라이트, 즉 BRDF를 기반으로 한 Specular 계 산에 관한 것이었다! – 물론 Oren-Nayar-Blinn은 디퓨즈 셰이딩에 관한 것입니다.
  • 22. BRDF Bidirectional reflectance distribution function • 양방향 반사 분포 함수 – 입사되는 광자들이 특정한 방향으로 나가는 확률값을 반환하는 함수
  • 23. BRDF Bidirectional reflectance distribution function • 앞의 식을 설명하자면, – 𝜔 𝜊 방향으로 반사되어 나가는 복사휘도와 𝜔 𝜄 방향에서 들어오는 미분 복사조도 사이의 비율 – 이게 Bidirectional, 양방향인 이유는 입사/반사 방향에 따라 함수 값이 달라지기 때문 – 특정 식을 의미하지 않음. • 사실 Lambert 셰이딩이 그렇게 간단하게 계산 될 수 있는 이유는 빛이 입사하는 방 향에 관계없이 모든 방향으로 같은 양의 빛을 반사한다고 가정했기 때문이다. • 요컨대, 특정 표면이 내가 보는 시점과 빛과의 관계에 따라 갖는 특정 값을 얻는 법
  • 24. 그러나 그때는 그냥 디퓨즈는 Lambertian, 스페큘러는 BRDF인줄만 알았습니다. 그런데…
  • 25. (시간이 흘러) 두 가지, 새로운 것을 보게 됐다! • 팀 포트리스2의 툰 셰이딩을 흉내 낸 것 • Arch & Design Material (3DS Max)
  • 26. 1. Lambert 셰이딩 계산을 UV좌표로 쓸 수 있다! 2. BRDF를 디퓨즈에도 적용 할 수 있다! 죄송합니다! 너무나 당연한걸…
  • 27. 이런 겁니다! • 텍스쳐의 UV 좌표는 0~1사이의 실수입니다. • 즉, Lambertian Reflection으로 얻어진 실수를 U좌표로 쓸 수 있다는 겁니다! – V좌표는 무조건 0이라고 해두면… 어두운 쪽=0 밝은 쪽=1
  • 28. 여기에 Lambertian Reflection을 BRDF로 바꾸면… • Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고, • 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면… • 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.
  • 29. 여기에 Lambertian Reflection을 BRDF로 바꾸면… • Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고, • 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면… • 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다.
  • 30. 여기에 Lambertian Reflection을 BRDF로 바꾸면… • Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고, • 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면… • 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다. 즉, Sub Surface Scattering을 (텍스쳐만 있다면) 할 수 있다는 겁니다!
  • 31. 여기에 Lambertian Reflection을 BRDF로 바꾸면… • Lambert 셰이딩은 빛과 표면에 관한 값만 나옵니다. 이걸 V축 좌표로 삼고, • 시점과 표면에 관한 dot product 값을 구해서 U축 좌표로 삼으면… • 물체의 뒤편에 빛이 있을 때 표면의 빛 정보를 텍스쳐에서 얻어 올 수 있습니다. 즉, Sub Surface Scattering을 (텍스쳐만 있다면) 할 수 있다는 겁니다!
  • 32. 그럼 그 텍스쳐는 어디서 구하는데? 3DS MAX에서 맵 만들기
  • 33. BRDF를 기록한 맵 만들기 - 0 • 우리에겐 최고의 랜더링 솔루션을 제공하는 3D Studio Max가 있습니다. – 자체 랜더러도 훌륭하고요, – 업계 표준이라는 Mentalray도 탑재하고 있죠, – 거기다 모든 3D 어플리케이션 중 가장 많은 외부 랜더러를 갖고 있습니다. – 결정적으로 끝내주는 피부 셰이더를 갖고 있습니다! 아니 뭐 제가 맥스만 쓸 줄 알아서 이런게 아니라고 말은 못하겠지만…
  • 34. BRDF를 기록한 맵 만들기 - 1 • Max의 Sub Surface Scattering Fast Skin shader로 피부 재질을 만들어 줍니다. • 만들어진 재질에서 스페큘러와 반사를 없애고 디퓨즈 색을 흰색으로 바꿔 구에 적용합니다.
  • 35. BRDF를 기록한 맵 만들기 - 2
  • 36. BRDF를 기록한 맵 만들기 - 2
  • 37. BRDF를 기록한 맵 만들기 - 2
  • 38. 이렇게 만들어진 맵을 셰이더에 적용하면~ Lambert Shading BRDF Skin Shading
  • 39. 확대해서 보면… 요렇게 바알갛게 핏기가 올라옵니다. 첫번째 피부 셰이더의 특징은 만들었다면, 두번째 특징은?
  • 40. 피부 셰이더의 두번째 특징을 재현 하려면? • Blend Normal – 빛이 피부 속으로 확산 되는 것을 Blurring한 노멀맵으로 표현. – 원본의 R채널에 Blur를 줍니다. – 이렇게 만들어진 이미지와 원본의 GB채널을 합해 새로운 노멀맵을 만들어 줍니다. – 원본 노멀맵과 새로 만들어진 노멀맵을 BRDF 셰이딩의 R채널을 기준으로 Lerp해줍니다.
  • 41. BRDF 셰이딩의 R채널을 기준으로? • BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
  • 42. BRDF 셰이딩의 R채널을 기준으로? • BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
  • 43. BRDF 셰이딩의 R채널을 기준으로? • BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
  • 44. BRDF 셰이딩의 R채널을 기준으로? • BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양.
  • 45. BRDF 셰이딩의 R채널을 기준으로? • BRDF 셰이딩으로 얻어지는 것은 피부 속으로 RGB 각각의 빛이 투과하는 양. 즉, 어떻게 노멀맵을 섞어야 하는지를 얻을 수 있다.
  • 46. 그럼 왜 R채널만 Blur 주는데? • 모든 채널에 Blur를 주면 세세한 디테일이 전부 사라집니다! Original Normal Blend Normal Blur Normal
  • 47. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 48. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 49. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 50. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 51. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 52. 이렇게 만들어진 BRDF기반 사전정의 피부 셰이더입니다!
  • 54. BRDF기반 사전정의 피부 셰이더 • BRDF: 빛만을 고려한 것이 아닌, 시점까지 고려한 • 사전 정의: BRDF 맵과 Blend 노멀맵을 미리 만들어 놓은 • 피부 셰이더!
  • 55. 이게 뭐가 좋냐면… • 빠릅니다! • 필요한 텍스쳐가 적어 메모리 사용량이 매우 적습니다! • Shader model 3.0 기반이기 때문에 어떤 플랫폼에도 적용 할 수 있습니다! • 이 방식을 응용하면 피부 BRDF맵 뿐만 아니라 거의 모든 재질의 BRDF맵을 얻을 수 있습니다!
  • 56. • 그렇지만 잘 살펴보면 단점도 있습니다. – 두께에 기반한 SSS는 불가능 합니다. – 뒤쪽에서 투과되는 빛은 따로 처리를 해줘야 합니다. – 피부에 부드럽게 떨어지는 그림자를 만들 수 없습니다. – 미리 만들어 놓아야 하는 것들이 많아 아티스 트가 최종 결과물을 예측하기가 어렵습니다. 써놓고 보니 정말 많은 단점이군요. OTL
  • 57. 그래도… • MMORPG에도 적용 가능한, 간단하지만 효과 좋은 피부 셰이더라 자부합니다!
  • 58. 질문사항은… • Jalnaga@eyedentitygames.com 으로 메일 주시거나~ • 트위터 @jalnaga나 • http://jalnaga.net에 메시지를 남겨 주시면 성심 성의껏 답변 드리겠습니다.
  • 59. 끝!