dynamic lighting in gow3
DESCRIPTION
2012-02-08 kasastudy 발표자료.TRANSCRIPT
Dynamic Lighting in GOW3
이창희 ([email protected])
Intro• Siggraph2011 에서 발표한 문서• God Of War 3 에서 사용한 다수의 동적
라이팅 처리에 대한 내용
• 원본은 아래에서 받아보실 수 있습니다 .http://advances.realtimerendering.com/
Intro• 일반적으로 PC 게임 엔진에서는 Dyniamic Light-
ing 에 대한 고민을 Deferred Lighting 을 이용해서 해결하려고 시도 . ( 어쩌면 유행 ?!)
• 하지만 , 시간이 지난 현시점에서 Deferred Light-ing 에 대해서 고민해볼 필요가 생겼음 .– 과연 정말 원했던 대로 많은 수의 라이팅을 퐉퐉 뿌려대고
있느냐 ?
• 이 내용이 어느 정도는 힌트가 될수도…
Intro• PS3 에서는 RSX 가 병목
– (RSX 를 GPU 라고 생각하시면 됩니다 . SPU 는 vertex processing 까지 처리할 수 있는 CPU 라고 생각하시면 될 듯 . RSX 의 픽셀 처리 능력이 그렇게 좋지 않다고… )
• 어떻게 하면 , SPU 를 최대한 활용하여 라이팅 퀄리티를 높이면서 RSX 를 싸게 유지할 수 있을까를 고민하게 됨
• PS3 에서 더 많은 per pixel lighting 을 아티스트들이 요구하기 시작 했다고 함 .
Hybrid Vertex Lights• Omni(point) 와 Directional Light 를 Hybrid Vertex Light
들로 표현하자 !?– Pixel Light 들을 하나의 라이트로 처리하자 .– 다수의 라이트들에 대해서
• Vertex 에 대해서 거리에 따른 감쇠 계산• Vertex 에 대해서 하나의 합쳐진 Light 로 만든다• Pixel 에서는 합쳐진 Light Position 을 보간한다• Pixel Shader 에서는 스펙큘러 계산 등을 하나의 라이트에 대해서 수행한다 .
• 즉 , Vertex 에서 여러 개의 라이트들을 하나의 라이트로 합성하여 , Pixel 에서는 하나의 라이트로 처리 !
최종 공식 !
내용 소개 ( 본문 참조 )
구현 사례 소개• 화면에 보이는 오브젝트 마다 영향을 받는
라이트를 수집한다 .–수집하는 라이트 개수를 제한 !
• 오브젝트가 영향 받는 오브젝트 개수 만큼 vertex shader 에서 합산하여 , pixel shader 에서 적용
• 2 개의 라이트를 적용
결론• 장점
– 충분히 납득할만한 결과를 얻을 수 있다 .– 픽셀 셰이더의 부담이 많이 가지 않기 때문에 , 꽤 보편적으로 사용이 가능할 듯
하다 . – Forward rendering 으로도 충분히 구현이 가능하다 .
• Deferred Lighting 을 사용하지 못하는 PC의 경우에는 대안으로 적용할 수 있을 듯… (Uber Shader 라면… 스위칭도 어렵지 않아요 ~)
• 적절한 라이트 개수는 정해주어야 할 듯
• 참고자료– http://cagetu.egloos.com/5587945
Q/A