SlideShare a Scribd company logo
1 of 10
Wrapped Diffuse
이민웅
Shader Study
Wrapped Diffuse
• 팀 포트리스 2에서 사용
• subsurface scattering, area light source,
더 부드러운 reflectance 를 표현하기 위해
서 Hemisphere(반구)를 감싸는 셰이딩 모
델

Lambert

Wrapped Diffuse
Wrapped Diffuse
• HarfLambert 공식과 비슷함
– W=1이면, Half Lambert 공식

• Half Lambert와 유사하게 투과되는 느낌을
표현하는데 많이 사용
– 피부, 나뭇잎, 파티클 라이팅에 주로 사용
기본 Lambert Diffuse 공식
float diffuse = max(0, dot(normal, lightdirection));
기본 HalfLambert Diffuse 공식
float halflambert_term = dot(normal, lightdirection) * 0.5f + 0.5f
Wrapped Diffuse 공식
float diffuse = saturate((dot(normal, lightdirection) + OFFSET) / (1.0+OFFSET ));
Wrapped Diffuse

Wrapped SH 자세한 내용
http://blog.selfshadow.com/2011/12/31/righting-wrap-part-1/
http://blog.selfshadow.com/2012/01/07/righting-wrap-part-2/

Wrap Shading
www.iro.umontreal.ca/~derek/files/jgt_wrap.pdf
Wrapped Diffuse
• 팀 포트리스 방식
– Wrapped Function은 Half Lambert를 이용해서,
1D Wrapped Diffuse Texture에서 값을 얻어오
는것
– GPU Gems 16. Real-Time Approximation to
Subsurface Scattering
• Wrap Lighting 계산 내용을 미리 Texture로 저장하
여 사용함
WarpTex
Lambert

Half Lambert

Warping Function

Squared Half Lambert (Not used)

illuminance( P, n, PI)
{
Ln = normalize(L);
halflambert += .5*(Ln.nf)+.5;
float chl = clamp(halflambert,0.01,1);
accumulateMapColor = texture(warp,chl,0)*2;
hlsw_clrlght += Cl*accumulateMapColor;
}
diffusecolor = albedocolor * (Ka + hlsw_clrlght);

Light Color

Ambient

Albedo

Ka : ambient
Cl : LightColor

http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html
Specular Fresnel

Mixed Specular

Primary Specularity

Rim Fresnel

Upward Ambient Rim
Final Mix

http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html

Rim Specular
Code
Specular Fresnel
vector i= normalize(-I);
float fres=spline((nf.i),1,1,1,.95,.6,.6);
Primary Specularity
illuminance( P, n, PI/2)
{
Ln = normalize(L);
vector R = reflect(-Ln,nf);
ridot += clamp(max(0,(R.i)),.01,.99);
phngspec += (1-fres)*pow(ridot,specE);
}

Mixed Specular
illuminance( P, n, PI/2)
{
Ln = normalize(L);
vector R = reflect(-Ln,nf);
vector R2 = reflect(Ln,nf);
ridot += clamp(max(0,(R.i)),.01,.99);
ridot2 += clamp(max(0,(R2.i)),.01,.99);
phngspec += (1-fres)*pow(ridot,specE);
phngrim += rimfres*pow(ridot2,Krim);
phngmix += Cl*Ks*(max(phngrim,phngspec)*2);
}
speccolor = phngmix;

Rim Fresnel
vector i= normalize(-I);
float rimfres=pow((1-(nf.i)),2);
vector i= normalize(-I);

Upward Ambient Rim
float upward = clamp((nf.vector(0,1,0)),0,1);
float uprim= upward*rimfres*Kr*(Ka*5);

Rim Specular
illuminance( P, n, PI/2)
{
Ln = normalize(L);
vector R2 = reflect(Ln,nf);
ridot2 += clamp(max(0,(R2.i)),.01,.99);
phngrim += rimfres*pow(ridot2,Krim);
}

Final Mix
Ci = Oi*(diffusecolor+speccolor+uprim);
Q&A
참고자료
• Wrap Shading :
http://www.iro.umontreal.ca/~derek/publication8.html
• Energy-Conserving Wrapped Diffuse
• Wrapped Diffuse와 팀포트리스 셰이딩 :
http://cagetu.egloos.com/5621806
• 팀포트리스 셰이딩 따라해보기 :
http://cagetu.egloos.com/4212681
• Energy Conservation in Games :
http://www.rorydriscoll.com/2009/01/25/energyconservation-in-games/
• http://www.gamedevforever.com/150
• http://cagetu.egloos.com/5621806

More Related Content

What's hot

2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성Gunho Shin
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14AMD Developer Central
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1MoonLightMS
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizationspjcozzi
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsColin Barré-Brisebois
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Lukas Lang
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해tartist
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더동석 김
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3Electronic Arts / DICE
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 

What's hot (20)

Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성2009-2016 기본기(손맵)의 중요성
2009-2016 기본기(손맵)의 중요성
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizations
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 

Viewers also liked

International education program_guide_201164284 (3)
International education program_guide_201164284 (3)International education program_guide_201164284 (3)
International education program_guide_201164284 (3)Future Link Consultants
 
Reviscopa núm.26 Escola Jaume Balmes
Reviscopa núm.26  Escola Jaume BalmesReviscopa núm.26  Escola Jaume Balmes
Reviscopa núm.26 Escola Jaume Balmesjbalmesprat
 
параллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияпараллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияAlexey Vidanov
 
NTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalNTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalHan-Wei Liao
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislationTgarmon34
 
Human Computer Interaction Presentation
Human Computer Interaction PresentationHuman Computer Interaction Presentation
Human Computer Interaction PresentationIheanyi Ekechukwu
 
Reviscopa Núm.13
Reviscopa Núm.13Reviscopa Núm.13
Reviscopa Núm.13jbalmesprat
 
Linkedin Company Page Guide
Linkedin Company Page GuideLinkedin Company Page Guide
Linkedin Company Page GuideAchmedTarrass
 
Reviscopa núm.21 Escola Jaume Balmes
Reviscopa núm.21  Escola Jaume BalmesReviscopa núm.21  Escola Jaume Balmes
Reviscopa núm.21 Escola Jaume Balmesjbalmesprat
 
NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3Han-Wei Liao
 
Advert Pitch
Advert PitchAdvert Pitch
Advert Pitchjbier
 
A오즈 트위터 캐릭터소개 0701
A오즈 트위터 캐릭터소개 0701A오즈 트위터 캐릭터소개 0701
A오즈 트위터 캐릭터소개 0701애니파크
 
Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?SwordSharp Studios
 
Deloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationDeloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationMargaret Hartwell
 
Value proposition for social media marketing
Value proposition for social media marketingValue proposition for social media marketing
Value proposition for social media marketingPavan Krishnaa Mulpur
 
Spiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSpiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSwordSharp Studios
 

Viewers also liked (20)

International education program_guide_201164284 (3)
International education program_guide_201164284 (3)International education program_guide_201164284 (3)
International education program_guide_201164284 (3)
 
Reviscopa núm.26 Escola Jaume Balmes
Reviscopa núm.26  Escola Jaume BalmesReviscopa núm.26  Escola Jaume Balmes
Reviscopa núm.26 Escola Jaume Balmes
 
параллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияпараллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерывания
 
NTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalNTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal Final
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislation
 
Human Computer Interaction Presentation
Human Computer Interaction PresentationHuman Computer Interaction Presentation
Human Computer Interaction Presentation
 
Reviscopa Núm.13
Reviscopa Núm.13Reviscopa Núm.13
Reviscopa Núm.13
 
Linkedin Company Page Guide
Linkedin Company Page GuideLinkedin Company Page Guide
Linkedin Company Page Guide
 
Reviscopa núm.21 Escola Jaume Balmes
Reviscopa núm.21  Escola Jaume BalmesReviscopa núm.21  Escola Jaume Balmes
Reviscopa núm.21 Escola Jaume Balmes
 
Info 1 teorica color
Info 1   teorica colorInfo 1   teorica color
Info 1 teorica color
 
NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3
 
Advert Pitch
Advert PitchAdvert Pitch
Advert Pitch
 
A오즈 트위터 캐릭터소개 0701
A오즈 트위터 캐릭터소개 0701A오즈 트위터 캐릭터소개 0701
A오즈 트위터 캐릭터소개 0701
 
Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?
 
Deloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationDeloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes Presentation
 
Value proposition for social media marketing
Value proposition for social media marketingValue proposition for social media marketing
Value proposition for social media marketing
 
Can You Lose Your Salvation?
Can You Lose Your Salvation?Can You Lose Your Salvation?
Can You Lose Your Salvation?
 
Spiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSpiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfare
 
#magneticarchetypes
#magneticarchetypes#magneticarchetypes
#magneticarchetypes
 
Pull Test Presentation
Pull Test PresentationPull Test Presentation
Pull Test Presentation
 

More from 민웅 이

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...민웅 이
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation 민웅 이
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
자동 동적 3차원 입체시각
자동 동적 3차원 입체시각자동 동적 3차원 입체시각
자동 동적 3차원 입체시각민웅 이
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color민웅 이
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리민웅 이
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting민웅 이
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf민웅 이
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌민웅 이
 
3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR민웅 이
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)민웅 이
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space민웅 이
 
Cheap realisticskinshading kor
Cheap realisticskinshading korCheap realisticskinshading kor
Cheap realisticskinshading kor민웅 이
 
Deferred decal
Deferred decalDeferred decal
Deferred decal민웅 이
 

More from 민웅 이 (18)

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
자동 동적 3차원 입체시각
자동 동적 3차원 입체시각자동 동적 3차원 입체시각
자동 동적 3차원 입체시각
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
 
3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
Cheap realisticskinshading kor
Cheap realisticskinshading korCheap realisticskinshading kor
Cheap realisticskinshading kor
 
Ceh
CehCeh
Ceh
 
Deferred decal
Deferred decalDeferred decal
Deferred decal
 

Wrapped diffuse

  • 2. Wrapped Diffuse • 팀 포트리스 2에서 사용 • subsurface scattering, area light source, 더 부드러운 reflectance 를 표현하기 위해 서 Hemisphere(반구)를 감싸는 셰이딩 모 델 Lambert Wrapped Diffuse
  • 3. Wrapped Diffuse • HarfLambert 공식과 비슷함 – W=1이면, Half Lambert 공식 • Half Lambert와 유사하게 투과되는 느낌을 표현하는데 많이 사용 – 피부, 나뭇잎, 파티클 라이팅에 주로 사용 기본 Lambert Diffuse 공식 float diffuse = max(0, dot(normal, lightdirection)); 기본 HalfLambert Diffuse 공식 float halflambert_term = dot(normal, lightdirection) * 0.5f + 0.5f Wrapped Diffuse 공식 float diffuse = saturate((dot(normal, lightdirection) + OFFSET) / (1.0+OFFSET ));
  • 4. Wrapped Diffuse Wrapped SH 자세한 내용 http://blog.selfshadow.com/2011/12/31/righting-wrap-part-1/ http://blog.selfshadow.com/2012/01/07/righting-wrap-part-2/ Wrap Shading www.iro.umontreal.ca/~derek/files/jgt_wrap.pdf
  • 5. Wrapped Diffuse • 팀 포트리스 방식 – Wrapped Function은 Half Lambert를 이용해서, 1D Wrapped Diffuse Texture에서 값을 얻어오 는것 – GPU Gems 16. Real-Time Approximation to Subsurface Scattering • Wrap Lighting 계산 내용을 미리 Texture로 저장하 여 사용함
  • 6. WarpTex Lambert Half Lambert Warping Function Squared Half Lambert (Not used) illuminance( P, n, PI) { Ln = normalize(L); halflambert += .5*(Ln.nf)+.5; float chl = clamp(halflambert,0.01,1); accumulateMapColor = texture(warp,chl,0)*2; hlsw_clrlght += Cl*accumulateMapColor; } diffusecolor = albedocolor * (Ka + hlsw_clrlght); Light Color Ambient Albedo Ka : ambient Cl : LightColor http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html
  • 7. Specular Fresnel Mixed Specular Primary Specularity Rim Fresnel Upward Ambient Rim Final Mix http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html Rim Specular
  • 8. Code Specular Fresnel vector i= normalize(-I); float fres=spline((nf.i),1,1,1,.95,.6,.6); Primary Specularity illuminance( P, n, PI/2) { Ln = normalize(L); vector R = reflect(-Ln,nf); ridot += clamp(max(0,(R.i)),.01,.99); phngspec += (1-fres)*pow(ridot,specE); } Mixed Specular illuminance( P, n, PI/2) { Ln = normalize(L); vector R = reflect(-Ln,nf); vector R2 = reflect(Ln,nf); ridot += clamp(max(0,(R.i)),.01,.99); ridot2 += clamp(max(0,(R2.i)),.01,.99); phngspec += (1-fres)*pow(ridot,specE); phngrim += rimfres*pow(ridot2,Krim); phngmix += Cl*Ks*(max(phngrim,phngspec)*2); } speccolor = phngmix; Rim Fresnel vector i= normalize(-I); float rimfres=pow((1-(nf.i)),2); vector i= normalize(-I); Upward Ambient Rim float upward = clamp((nf.vector(0,1,0)),0,1); float uprim= upward*rimfres*Kr*(Ka*5); Rim Specular illuminance( P, n, PI/2) { Ln = normalize(L); vector R2 = reflect(Ln,nf); ridot2 += clamp(max(0,(R2.i)),.01,.99); phngrim += rimfres*pow(ridot2,Krim); } Final Mix Ci = Oi*(diffusecolor+speccolor+uprim);
  • 9. Q&A
  • 10. 참고자료 • Wrap Shading : http://www.iro.umontreal.ca/~derek/publication8.html • Energy-Conserving Wrapped Diffuse • Wrapped Diffuse와 팀포트리스 셰이딩 : http://cagetu.egloos.com/5621806 • 팀포트리스 셰이딩 따라해보기 : http://cagetu.egloos.com/4212681 • Energy Conservation in Games : http://www.rorydriscoll.com/2009/01/25/energyconservation-in-games/ • http://www.gamedevforever.com/150 • http://cagetu.egloos.com/5621806