Progress report 17: Float textures finished, and more!
And so the floating point texture support has been implemented! It’s been quite a journey that deserves some implementation notes of its own when the milestone comes around again but here is a basic rundown of how things have progressed:
I began by compiling the tools provided by ILM, a process that took a while but tought me quite a bit about using libraries. The thing is that though the tools are simple to compile in Windows using Visual C++, I am now using MinGW which wasn’t as simple to get to compile in windows, involving getting POSIX thread support for windows using this library and then compiling it all using MSYS so to be able to use the provided makefiles and autoconfig stuff. It also involved changing some parts of the files (mostly the order of defines and imports).
Pretty much simultaniously I was writing the loader class for Irrlicht. Irrlicht supports adding new image loaders (and writers, though I didn’t add writing support) using a function, so adding new loaders is simple. I also made changes in the engine to further enable floating point textures. At first however the colors came out wrong, appearing purple with little spaces between all pixels. This turned out to be because of a section of the texture class that I had missed.
Finally, I don’t remember if I have mentioned it before but previously I have been unhappy about the final image appearing too dark. This problem has now also been solved purely incidentaly as I was looking for some other errors. It was because of some values used in the luminance calculations that ended up as zero causing abnormaly high or even infinite values or numeric failures. This also solved a known problem with black pixels causing similar infinite or corrupt values.
With this the functunality is pretty much finished. From now on I will be building the scene (which I decided to put less emphasis on, focusing instead on fixing the technical aspects). Finally I will see about creating further effects if I have time before writing the final documentation.