1 / 10

Wrapped Diffuse

Wrapped Diffuse. 이민웅 Shader Study. Wrapped Diffuse. 팀 포트리스 2 에서 사용 subsurface scattering, area light source, 더 부드러운 reflectance 를 표현하기 위해서 Hemisphere( 반구 ) 를 감싸는 셰이딩 모델. Lambert. Wrapped Diffuse. Wrapped Diffuse . HarfLambert 공식과 비슷함 W=1 이면 , Half Lambert 공식

hiero
Download Presentation

Wrapped Diffuse

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wrapped Diffuse 이민웅 Shader Study

  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 Half Lambert Warping Function Lambert 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); Ka : ambient Cl : LightColor Light Color Albedo Ambient http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html

  7. Specular Fresnel Primary Specularity Rim Fresnel Rim Specular Mixed Specular Upward Ambient Rim Final Mix http://www.sfdm.scad.edu/faculty/mkesson/vsfx419/wip/spring11/eric_kurzmack/toon.html

  8. Code Mixed Specular Specular Fresnel 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; 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); } Rim Fresnel Upward Ambient Rim vector i= normalize(-I); float rimfres=pow((1-(nf.i)),2); vector i= normalize(-I); float upward = clamp((nf.vector(0,1,0)),0,1); float uprim= upward*rimfres*Kr*(Ka*5); Rim Specular Final Mix 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); } 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/energy-conservation-in-games/ • http://www.gamedevforever.com/150 • http://cagetu.egloos.com/5621806

More Related