March 26, 2008
This archive contains changes I've made that fix some bugs and add speed and memory enhancements to ColladaFX. These are meant to be applied against the Collada 3.05B source base.
Bugs:
-Boolean parameters defined in shaders now have their defaults read and initialized in the user interface
-Cubemapped textures are now suppored for file formats other than DDS
Enhancements:
-Passes nodes that have only one shader (a very common case) are batched. So bind() and unbind() are only called once for all geometry processed by the node.
-A check is made before a shader program is loaded to see if it is already loaded. If so, the load is skipped.
-Users can now specify that texture compression and downsampling can be used. Attributes have been added that can be accessed under the Attribute panel's Extra section to allow these settings to be adjusted.
-A textuer manager has been added to coordinate and stream texture alloction and deallocation
--Textures are stored in a reference counted hash table to ensure that they are not loaded twice.
--MD5 hashes are used to identify textures. This means that a user modifying and the reloading a texture will correctly allocate a new texture object. Similarly, the same texture given two unique filename will none-the-less be identified as the same texture and the object reused.
--Reference counting ensures that a texture is freed when there are no longer any references to it.
These have led to some big performance improvements on my dev machine in terms of both speed and memory. I hope you find them useful.
I tried to create similar managers for effects and shader programs, but they didn't provide much benefit. If you'd like me to send their source along, I can do that.
Files:
diffs.txt - Contains the diffs for modifying several files in the ColladaMaya directory.
AssetManager.h/cpp - Base class for managers. Add to the ColloadaMaya project.
TextureManager.h/cpp - The texture manager. Add to the ColloadaMaya project.
Mark McKay
Archive of changes