/
Wrapped Diffuse Wrapped Diffuse

Wrapped Diffuse - PowerPoint Presentation

tatiana-dople
tatiana-dople . @tatiana-dople
Follow
438 views
Uploaded On 2016-08-13

Wrapped Diffuse - PPT Presentation

이민웅 Shader Study Wrapped Diffuse 팀 포트리스 2 에서 사용 subsurface scattering area light source 더 부드러운 reflectance 를 표현하기 위해서 Hemisphere ID: 445489

wrapped diffuse vector http diffuse wrapped http vector float normalize lambert www wrap clamp max rim specular pow fresnel upward rimfres ridot2

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Wrapped Diffuse" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Wrapped Diffuse

이민웅

Shader

StudySlide2

Wrapped Diffuse

팀 포트리스

2

에서 사용subsurface scattering, area light source, 더 부드러운 reflectance 를 표현하기 위해서 Hemisphere(반구)를 감싸는 셰이딩 모델

Lambert

Wrapped DiffuseSlide3

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 ));Slide4

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.pdfSlide5

Wrapped Diffuse

팀 포트리스 방식

Wrapped Function

은 Half Lambert를 이용해서, 1D Wrapped Diffuse Texture에서 값을 얻어오는 것GPU Gems 16. Real-Time Approximation to Subsurface ScatteringWrap Lighting 계산 내용을 미리

Texture로 저장하여 사용함Slide6

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

Lambert

Half Lambert

Squared Half Lambert (Not used)

Warping Function

Light Color

Ambient

Albedo

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);

WarpTex

Ka : ambient

Cl

:

LightColorSlide7

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

Specular

Fresnel

Primary

Specularity

Rim Fresnel

Rim

Specular

Mixed

Specular

Upward Ambient Rim

Final MixSlide8

Code

vector

i

= normalize(-I); float fres=spline((nf.i),1,1,1,.95,.6,.6);

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

);

}

vector

i

= normalize(-I);

float

rimfres

=

pow

((1-(

nf.i

)),2);

vector

i= normalize(-I);

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); }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

;

float upward = clamp((

nf.vector

(0,1,0)),0,1);

float

uprim

= upward*

rimfres

*Kr*(Ka*5);

Ci

=

Oi

*(

diffusecolor+speccolor+uprim

);

Specular Fresnel

Primary Specularity

Rim Fresnel

Rim Specular

Mixed Specular

Upward Ambient Rim

Final MixSlide9

Q&ASlide10

참고자료

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/energy-conservation-in-games/http://www.gamedevforever.com/150 http://cagetu.egloos.com/5621806