D3D9Client R15 Released
All right, here's D3D9Client R15 for Orbiter2010-P1 and there are many new things in it. The R15 is now available from the CodePlex site.
- The 2D surface interface is redesigned. This was not exactly planned nor scheduled for R15. But we created a new cleanded up interface for the Orbiter Beta and it was tested and approved there. After that it was brought back to P1 to replace it's messy interface. After being put in a serious stress tests on P1 some very fundamental flaws was discovered. So, we had to redesign it and it should be now better then we have had before. It appears that lockable-render targets do not work very well with the GDI, in-fact none of a video memory surfaces works. Would it be possible that PCI-express bus is designed for a mass transfer of data not to execute random read-modify-write operations in a video memory ?
- There is also DX9ExtMFD plugin in the distribution package that should work much better with some hardware. It is also compatible with the inline engine and should not be needed on Orbiter Beta after the base class of ExtMFD is fixed. Source code is in the first post.
- R15 includes an experimental mesh group instancing implementation. It should allow more efficiently to transfer vertex data for a graphics hardware for rendering. Rendering of shadows should be able to take the best advantage of it. Instancing will make some changes in the rendering order of mesh groups but it should be able maintain the initial order when it counts.
- Proof-of-concept implementation of graphics client interface is also included in R15. This is something that should be discussed about, how to proceed with the interface or if to proceed at all. So, what are the pros, cons ? The idea is to provide some additional features for add-on developers so that Martin wouldn't need to implement every feature. One problem is that interface like this could make add-on features more depend on clients. But if the inline engine isn't going to be upgraded to use a new DX then I don't know...
- Currently the client interface includes a custom camera interface that can be used to create a docking and payload bay cameras, etc... Pre-build binary and a sample code included in the first post.
- The client interface also includes some Sketchpad goodies. Well, there are a few problems: In DX10 and DX11 there exists no blitter capable of scaling, color-keying nor alpha blending. All these actions must be executed with the primary GPU. Therefore, it would be practical to have these features included in the Sketchpad since it's using the GPU anyway. So, it could be possible to turn the Sketchpad into a future all-in-one 2D drawing interface for the Orbiter. Of course, it would be possible to have at-least scaling and color-keying included in the GDI version of the Sketchpad as well.
Now that the R15 is out, I should have more time to look into the Orbiter Beta Client.