physically based rendering 기초! 기초!

26
Physically Based Rendering 기기 ! 기기 ! 기기 기기기 - 기기

Upload: hyuk-kim

Post on 17-Aug-2015

409 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Physically Based Rendering 기초! 기초!

PhysicallyBasedRendering기초 ! 기초 !카사 스터디 - 김혁

Page 2: Physically Based Rendering 기초! 기초!

내용

Real Shading in Unreal Engine 4 문서 앞부분

Physically Based Rendering 의 기초를 다룸

디즈니의 PBR ( 비실시간 )-> 언리얼 엔진 4 의 근사를 통한 실시간 계산 방법을 설명

이번 발표에서는 IBL(Image Based Lighting) 만 다룸

Page 3: Physically Based Rendering 기초! 기초!

디즈니 BRDF 의 원칙 (Principle)

물리적으로 올바르기보다는 아티스트 친화적일 것

물리적인 파라미터 보다는 직관적인 파라미터를 지향

가급적 적은 파라미터 , 가급적 0~1 범위로 조절

모든 파라미터의 조합은 견고 (robust) 하고 ,있음직해야함 (plausible)

Page 4: Physically Based Rendering 기초! 기초!

언리얼 엔진 BRDF 의 원칙

기본적으로 디즈니의 BRDF 를 따름

리얼타임

가급적 적은 파라미터와직관적인 인터페이스 등은 디즈니와 동일

Perceptually Linear – 레이어링

Photorealistic/Non-photorealistic

Page 5: Physically Based Rendering 기초! 기초!

사용되는 파라미터 ( 디즈니 )

줄인다며 !!!

Page 6: Physically Based Rendering 기초! 기초!

사용되는 파라미터 ( 언리얼 엔진 4)

Page 7: Physically Based Rendering 기초! 기초!

Rendering Equation

출처 : http://www.cc.gatech.edu/~turk/7490_stuff/talks.html

Page 8: Physically Based Rendering 기초! 기초!

Rendering Equation

모든 방향 (Wi) 에서 x 로 들왔다가눈 방향 (Wo) 으로 나가는 것을 계산

= 픽셀

출처 : https://en.wikipedia.org/wiki/Rendering_equation

Page 9: Physically Based Rendering 기초! 기초!

계산 (Diffuse 와 Specular 를 분리함 )

Page 10: Physically Based Rendering 기초! 기초!

Microfacet Specular BRDF

Page 11: Physically Based Rendering 기초! 기초!

Importance Sampling

중요하고 자주 등장하는 개념( 실시간 렌더링에서는 그렇게 자주 등장하진 않았음 )

Uniform Sampling 균일하게 샘플링한다 균일하게 더한다

Importance Sampling 기여도에 따라 확률을 만들고 ( 중요한 지점은 높은 확률 ) 기여도에 따라 값을 낮추고 더한다

Page 12: Physically Based Rendering 기초! 기초!

Uniform Sampling

Page 13: Physically Based Rendering 기초! 기초!

Importance Sampling

Page 14: Physically Based Rendering 기초! 기초!

코 .. 코드를 보자…

1024 번 샘플링 코드

실제로는 안쓰이는 코드

그런데 돌아는감 . ( 반 실시간 )

Page 15: Physically Based Rendering 기초! 기초!

Split Sum Approximation

수학적으로는 말도 안되는 근사 Li 를 상수처럼 여겨서 시그마 밖으로 뺀 후 다시 풀어버렸음

하지만 Roughness 가 높을 경우 ( 반구 샘플링 ) 어차피 엇비슷 Roughness 가 낮을 경우 ( 거울 , 글로시 ) 샘플링 주변 값들이 비슷 결과적으로 꽤 괜찮음 ( 오잉 ?)

Page 16: Physically Based Rendering 기초! 기초!

Pre-Filtered Environment Map

이 부분

환경 맵을 계산함

여긴 Roughness 가 없는데 , Roughness 를 기준으로 미리 샘플링해둠

이 부분이 두번째 큰 근사 계산

Page 17: Physically Based Rendering 기초! 기초!

원래는 Li 과 Lo 방향에 따라 모양이 달라짐 ( 예 , 타원 )

그걸 그냥 원으로 고정한 것임

즉 , 실시간에서만 알 수 있는 Li 과 Lo 의 의존이 없어짐

Page 18: Physically Based Rendering 기초! 기초!

그렇게 함으로써

( 주의 : 실제 이 이미지는 아님 )

원본 환경 맵 (Roughness = 0) 을 기준으로 Roughness=1까지의 이미지를 미리 만들어둘 수 있음 ( 밉맵으로 저장 )

Page 19: Physically Based Rendering 기초! 기초!

Environment BRDF

이걸 계산

잘 보면 Li( 환경 맵 ) 와 관련이 없음

이렇게 가정하고 풀면 다음의 공식이 나옴

f(BRDF) 와 F(Fresnel) 은 그냥 문서에 있는 거 대입하면 됨

Page 20: Physically Based Rendering 기초! 기초!

Environment BRDF

방금의 계산을텍스쳐로 구워둠

이건 공통적으로 사용 가능

Page 21: Physically Based Rendering 기초! 기초!

다시 코 .. 코드를 보자

밉맵으로 만들어둔 텍스쳐를 적당히 얻어옴

방금의 Lookup Texture

Page 22: Physically Based Rendering 기초! 기초!

Diffuse + Specular

잠깐 ? 그럼 Metallic? 은 ?

Metal: Black * Diffuse BRDF + Albedo * Specular BRDF

Non-metal: Albedo * Diffuse BRDF + White * Specular BRDF

Page 23: Physically Based Rendering 기초! 기초!

시행착오 및 팁 (Experiences)

예전에 Specular Color 로 썼던 것 대신 Roughness 를 쓸 것 Specular Color 와 Roughness 가 반대라고 생각하면 쉬움

유니티 엔진 5 와 Frostbite 엔진은 1-Roughness=Smooth 를 씀

Page 24: Physically Based Rendering 기초! 기초!

Metalic 은 일반적으로 0 혹은 1 로만 세팅

Page 25: Physically Based Rendering 기초! 기초!

결론

아직은 발전과 시행 착오 단계

엔진마다 구현 방법이나 도입하는 수식이 조금씩 다르다

기존 앰비언트 / 디퓨즈 / 스페큘러 컬러만 조절하던아티스트 들에게는 딴 세상

언리얼 엔진은 NPR 도 중요하게 생각하는데 ,현재 방법 (Specular Color 를 조절 못하는 환경 ) 에서는NPR 을 만들기 어려움

그래서 ( 인지 ) 유니티 5 는 PBR Material 을 두개를 만들었음 하나는 메탈릭을 조절 하나는 스페큘러 컬러 값을 조절 ( 아티스트 멘붕하겠다 )

Page 26: Physically Based Rendering 기초! 기초!

출처 & 참고자료

SIGGRAPH 2012 Course:Practical Physically Based Shading in Film and Game Productionhttp://blog.selfshadow.com/publications/s2012-shading-course/ Physically Based Shading at Disney (Brent Burley)

SIGGRAPH 2013 Course:Physically Based Shading in Theory and Practicehttp://blog.selfshadow.com/publications/s2013-shading-course/ Real Shading in Unreal Engine 4 (Brian Karis)

SIGGRAPH 2014 Course:Physically Based Shading in Theory and Practicehttp://blog.selfshadow.com/publications/s2014-shading-course/ Moving Frostbite to PBR (Sébastien Lagarde & Charles de

Rousiers)