250 likes | 515 Views
SX3-2.15 Reduction of Lighting Calculations Using Spherical Harmonics. 조욱래 mech12@nate.com www.cafe.naver.com/shader. Instroduction. Phong Light Model L = Ambient + Attenuation*(Diffuse +Specular) 모든 환경광에 대해 처리하기에는 무리 . 그래서 여기서는 환경광을 두개의 부류로 분리 High Chromatic Light
E N D
SX3-2.15Reduction of Lighting Calculations Using Spherical Harmonics 조욱래 mech12@nate.com www.cafe.naver.com/shader
Instroduction • Phong Light Model • L = Ambient + Attenuation*(Diffuse +Specular) • 모든 환경광에 대해 처리하기에는 무리. • 그래서 여기서는 환경광을 두개의 부류로 분리 • High Chromatic Light • 가장 영향이 큰 빛에 대해서만 퐁모델 적용. • 평범한 Light • projected onto ENVmap • 각 ENV map texel에 빛의 영향을 반영하는 9개의 SH Coefficient를 저장
Irradiance . • Amount of light incident onto a point • Computed by intergrating the incoming light • E : Irradiance ,Function of surface normal • n : surface normal • w : incoming light direction • L(w) : whole environment map light
SH Functoin • A set of orthonomal basis function over the sphere. • 임의의 구면을 유한의 Taylor 급수형태로 분리하여 근사화 하기 위한 수학적 툴. • 여기서는 E 와 L항을 SH항으로 표현 하면 • l , m : degree of SH
Coefficients Ylm • Polynomial form • X,y,z : cartesian coord of the incident vector
E : expressed function of L • Theta , pi : spherical coord • A : term of dependent on n and w • Alpha : error term • p,q : number of term • [Ramamoorthi01]의하면 coeffi값은 9개정도만 해도 높은 정밀도의 결과를 얻을수 있다.
Coefficents • l = 0,1,2 • m = • 0 • -1, 0, 1 • -2, -1,0,1,2
게임상의 구현 • 1st : encode the lighting ENV in SH term. • Static Light ENV • Calculated offline • distant sun, etc… • Static is not mean cannot be rotated. • SH Property is rotationally invriant. • Dnynamic light source • Need to encoding real time • This mean calculating the Llm terms
게임상의 구현(2) • 2nd : calculating the actual irradiance, E • E depends on theta ,pi (Spherical coord) , and surface normal. • 그래서 물체가 렌더링 되는 시점에서 계산되야함.
Analytical Lights • Spot, point light, etc • 빛이 무한대에 위치한다고 가정. • Lighting ENV map의 일부로 가정. • 각각의 빛은 해당 SH coeffi를 spatail domain 이나 frequency domain에서 쉽게 더함으로 해서 적용될수 있다. • Run time
Surface Lights • Sky ,pre-rendered ENV map, HDR, non-HDR map, bulb , neon light • 전역광에 의한 더 정확한 사실 묘사에 유용. • Ylm : Nine coefficents • L=(0,1,2) and m=(-2,-1,0,1,2) • Llm • Light weight of ENV map • L • 한지점에서의 빛세기.
중요 항 • 해당 물체 표면의 한 점에 대해 다음을 계산. • Intensity of light • Chromacity of light • Distance of light • Chromacity Represents • RGB (100,100,100), (125,125,125) ,and (255,0,0) 에서 마지막 값이 제일 chromaticy량이 높다고 간주한다. • 그 이유는 다음식 때문이다.
Chromacity factor • C1 = 0.7, C2=0.3 • 임의로 정한 경험 값이다. • 최종적으로 모든 빛에 대해 Lf를 구하고 소팅하여 가장 큰 값의 빛에 대해 Full Phong equation을 계산한다( using SH)
Putting It All Together-Code Explanation SH를 이용한 빛 계산은 크게 CPU tiime과 GPU time으로 분리된다. (GPU의 성능에 크게 영향을 받음.)
Surface Lights • Compute SH’s coefficients
Analytical Lights • To turn analytical light into SH
Foreach ( 9 coeffi) //l,m Foreach ( 9 coeffi) //l,m For(every pixel in ENV map) For(pixels in 6 faces of ENV map) Get 2D coeffi Get 2D coeffi 2D 좌표& face ‘n’ -> 3D좌표 극좌표->2D 좌표 극좌표->3D좌표 Ylm계산 Ylm계산 Integra += samplevalue(xp,yp) * Ylm Integra += samplevalue(xp,yp) * Ylm CPU ENV map & Cube map (???) GPU Blend this with other incomming colour & vertex color Color계산 using normal & coeffi.
장단점 • Vertex Program Work • Fast • Poor quality in low tessellated geometry • Fragments Program Work • Looks good ( diffuse light per pixel ) • Slow
Pros and Cons of SH • Pros • 빛의 수가 많아도 성능에 영향이 없다. • 가능한 모든 전역광이 9개의 값으로 표현. • Cons • 모든 빛 효과를 SH로 표현할수 없다. • Shadow, radiance transfer , Phong effect • PRT를 로 해결가능.
최종분석 • ShaderX3-2.15.vsd