Multithreading for 3D Graphics
Posted by Kaya Kupferschmidt • Thursday, June 23. 2005 • Category: OpenGL
A very hot and interesting topic in 3d graphics is multithreading. I am thinking for a long time about seperating rendering and simulation by using two threads - the advantage would be that the simulation could take place while the graphics card is busy. Plus the system would take advantage of modern computers that offer Hyperthreading, dual core CPUs or simply two or more CPUs.
On the other hand a lot of problems concerning integrity and synchronisation arise in multithreaded systems which rise the complexity of the overall design by a magnidude. That's just the reason why I did not implement this feature yet, but currently I am thinking about preparing some core components of the 3d graphics and scenegraph module of Magnum for multithreaded usage.
Of course there are already 3d libraries which offer such features, one of the very advanced renderers is OpenSG which in turn is the API I am currently working with at my current client. A very nice feature of OpenSG is the ability of clustering, that is you can render the same scene on more than one computer in a rather transparent way. This feature is extremly useful for driving powerwalls or caves. Multithreading might be a first step in this direction, I'd really love to see Magnum supporting clustering. That would be something very outstanding and special, although only useful in some special scenarios.
Don't expect results within the next days, but stay tuned anyway. I will work on that idea in my spare time.
On the other hand a lot of problems concerning integrity and synchronisation arise in multithreaded systems which rise the complexity of the overall design by a magnidude. That's just the reason why I did not implement this feature yet, but currently I am thinking about preparing some core components of the 3d graphics and scenegraph module of Magnum for multithreaded usage.
Of course there are already 3d libraries which offer such features, one of the very advanced renderers is OpenSG which in turn is the API I am currently working with at my current client. A very nice feature of OpenSG is the ability of clustering, that is you can render the same scene on more than one computer in a rather transparent way. This feature is extremly useful for driving powerwalls or caves. Multithreading might be a first step in this direction, I'd really love to see Magnum supporting clustering. That would be something very outstanding and special, although only useful in some special scenarios.
Don't expect results within the next days, but stay tuned anyway. I will work on that idea in my spare time.


