![]() | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
Advanced VSD
VSD means Visible Surface Determination the main goal is to detect visible part of a scene in order to avoid drawing unecessary (invisible) parts of the scene. Commonly used VSD system often use space partionning algorithm, such as BSP, Octree. Two majors drawbacks: My aim was to implement a solution that does not includes thoses drawbacks.Something fully dynamic, which allows you to move, add and delete 3d datas on the fly. After some research on the web, I found the Timo Aila thesis (Surrender umbra : A visibility determination framework for dynamic environments) in which he explains how he made the synthesis of existing algorithms to create his own. I used his thesis as a guideline when developping my own algorithm, and I have to say that I am pretty pleased with the results. The current implantation achieves high level of performance without any kind of pre-processing step. Example 1
Results: Machine tests was an AMD Duron 1.3Ghz, geforce 2MX400 64Mb. Resolutions was set to 800x300x32 With a simple culling algorithm rejecting object outside the frustrum, the demo run at 60fps with 45 meshs drawn, (37k triangles) With the new algorithm the demo run at 80fps with 12 meshs draw, (7k triangles). If the visibility computation is hand-computed, the demo then run at 85fps with 12meshs drawn. Example 2
Results: On the same test machine *Simple culling algorithm : 60fps, 120 meshs drawn *New Algorithm : 90fps, 17meshs drawn
Nithril
| ||||||||
home about engine contact link |