More Related Content Similar to [Ndc11 박민근] deferred shading Similar to [Ndc11 박민근] deferred shading (20) More from MinGeun Park (20) [Ndc11 박민근] deferred shading1. 새로운 동적 라이팅의 세계!Deferred Shading (지연 세이딩) 박민근 (알콜코더) 네오위즈게임즈 NDC 2011 2. 강연자 소개 박민근(@agebreak) 네오위즈게임즈(프로젝트 S개발중) NTL-inc - 드래곤볼 온라인 개발 엔씨소프트– PlayNC빌링 서버 개발 ‘신입 게임 개발자의 서울 상경기’ (http://agebreak.blog.me) ‘초중급 게임 개발자 스터디(데브루키)’ (cafe.naver.com/devrookie) VisualStudio 2010 공식 팀 블로그 (http://vsts2010.net/) 게임 클라이언트 프로그래머 30대… 솔로 인생… 그리고 오타쿠 프로그래머... 언젠가는 우즈벡에.. 일류젼우즈벡 지사를 설립할 예정 31. Deferred Shading for each objectdo G-buffer= lighting properties of object; for each light do framebuffer+= light_model(G-buffer,light); 89. Diffuse 값과, Specular 값은 별도로 저장한다.For each light: diffuse += diffuse(G-buff.N, L)) specular += G-buff.spec* specular(G-buff.N, G-buff.P, L) 91. Per-Pixel Lighting float4 PointLightingPS(VS_OUTPUT1 In) : COLOR { half4 diffuseTex = tex2D(MRT0Sampler, In.TexCoord); half4 normalTex = tex2D(MRT1Sampler, In.TexCoord); half z = tex2D(MRT2Sampler, In.TexCoord); //unpack half3 albedo = diffuseTex.xyz; … //reconstruct original view-space position … //normalize … //diffuse lighting half NdotL = dot(normal, lightVec); half selfShadow = (NdotL > 0) ? 1 : 0; half3 diffuse = albedo * NdotL * selfShadow * LightColor; 92. Per-Pixel Lighting float4 PointLightingPS(VS_OUTPUT1 In) : COLOR { (앞페이지…) //compute half angle half3 halfAngle = normalize(lightVec + eyeVec); half3 specular = max(pow(dot(halfAngle, normal), SpecularExponent), 0) * selfShadow; … (후략) }