2009년 09월 22일
Frogsbite 엔진에서의 병렬 처리
이번 Siggraph 2009에서 배틀필드 시리즈로 유명한 DICE 사의 Johan Andersson님이 발표한 Battlefield Bad company에 사용된 Frostbite 엔진의 병렬 처리에 대한 프리젠테이션입니다.
엔진 전체가 아니라 렌더러 부분만의 병렬 처리에 관한 내용으로 여러 가지 아이디어를 엿볼 수 있어서 매우 흥미롭습니다. Nebula3에서는 아직 Job(혹은 Task) 단위의 병렬 처리 기능[1]이 포함되어 있지 않은데 이 기능이 포함되면 여기 프리젠테이션에 나와 있는 내용들이 많은 도움이 될 것 같습니다.
프리젠테이션은 병렬 처리의 단위로 Job이라는 것을 정의하고 다양한 렌더링 관련 작업들을 이 Job으로 분리하여 병렬 처리함으로써 퍼포먼스를 향상할 수 있는 방법에 대해서 이야기하고 있습니다.
개인적으로 염두에 두고 있었던 것 중 하나인 CPU에서의 Occlusion Culling에 대한 이야기도 보이고, 또 Decal을 별도의 Job으로 분리해 놓은 것은 매우 흥미롭습니다.
아래 Johan씨의 블로그에는 Directx11과 같은 다른 흥미로운 프리젠테이션들도 많으니 렌더링에 관심 있으신 분들은 방문해서 살펴 보는 것도 좋을 듯 합니다.
http://repi.blogspot.com/
[1] 이 기능과 관련한 유용한 글로 Insomniac의 "Gameplay system on the SPU"가 있다, http://www.insomniacgames.com/tech/techpage.php
ps. 게임 플레이 코드를 SPU를 이용해서 병렬처리할 수 있다는 이야기는 온라인 게임의 경우 서버 사이드에서의 응용에 대해서 숙고해 볼만 아이디어가 아닌가 생각됩니다. 물론 CCP의 stackless python의 사용예도 있습니다만 (개인적으로도 상당히 관심을 가지고 있습니다) 여전히 C/C++이 아직은 (그리고 향후 몇 년은 더) 많은(어쩌면 대부분일지도 모를) 게임 개발자의 사랑을 받고 있는지라.
엔진 전체가 아니라 렌더러 부분만의 병렬 처리에 관한 내용으로 여러 가지 아이디어를 엿볼 수 있어서 매우 흥미롭습니다. Nebula3에서는 아직 Job(혹은 Task) 단위의 병렬 처리 기능[1]이 포함되어 있지 않은데 이 기능이 포함되면 여기 프리젠테이션에 나와 있는 내용들이 많은 도움이 될 것 같습니다.
프리젠테이션은 병렬 처리의 단위로 Job이라는 것을 정의하고 다양한 렌더링 관련 작업들을 이 Job으로 분리하여 병렬 처리함으로써 퍼포먼스를 향상할 수 있는 방법에 대해서 이야기하고 있습니다.
개인적으로 염두에 두고 있었던 것 중 하나인 CPU에서의 Occlusion Culling에 대한 이야기도 보이고, 또 Decal을 별도의 Job으로 분리해 놓은 것은 매우 흥미롭습니다.
아래 Johan씨의 블로그에는 Directx11과 같은 다른 흥미로운 프리젠테이션들도 많으니 렌더링에 관심 있으신 분들은 방문해서 살펴 보는 것도 좋을 듯 합니다.
http://repi.blogspot.com/
[1] 이 기능과 관련한 유용한 글로 Insomniac의 "Gameplay system on the SPU"가 있다, http://www.insomniacgames.com/tech/techpage.php
ps. 게임 플레이 코드를 SPU를 이용해서 병렬처리할 수 있다는 이야기는 온라인 게임의 경우 서버 사이드에서의 응용에 대해서 숙고해 볼만 아이디어가 아닌가 생각됩니다. 물론 CCP의 stackless python의 사용예도 있습니다만 (개인적으로도 상당히 관심을 가지고 있습니다) 여전히 C/C++이 아직은 (그리고 향후 몇 년은 더) 많은(어쩌면 대부분일지도 모를) 게임 개발자의 사랑을 받고 있는지라.
# by | 2009/09/22 23:38 | Development | 트랙백 | 핑백(1) | 덧글(0)
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
... 하는 부분에 대해서 설명했는데 이러한 식으로 각 레이어의 병렬 처리 부분에서 새로운 병렬 처리 task로 추가, 확장하는 있는 처리들 중에서 렌더러와 관련된 것들은 이전 포스트에서 이야기했던 내용들이 참고가 될 것 같습니다.또 강연에서 이야기하지 못한 내용 중에서 중요한 것으로는 스케쥴러에 대한 것입니다. 더욱 효율적인 병렬 처리를 ... more