I’ve actually been working on Gorgon off and on (mostly off) throughout the last 2 weeks and I’ve sent a few new changes to the svn repository:
- Modified the bump in the night sample (-again-) to allow better results when rendering specular maps and also to update a stupid mistake that I made. That is, I added unicode symbols directly into the source code instead of using their respective codes. While this hasn’t given me trouble yet, there’s always that possibility.
- Modified the TextSprite object to fix an issue where the MeasureText function was not calculating the correct height for a block of text. Also fixed an issue where the alignment settings would sometimes place the text in between pixels and cause the text to look jagged and unreadable.
- Removed Mount()/Unmount() from the public interface of the FileSystem object. These functions didn’t really serve any purpose and just made more work for the user. Internally Mount() is still available as a protected method for plug-ins so that the file system index can be built after a root is assigned. Sorry if this breaks anything.
- Added support for MRT (multiple render targets)! Finally! This allows a pixel shader to output to multiple targets at the same time and should help out in performance situations where multiple passes are being used to achieve the same thing. To manipulate the additional render targets you can call Gorgon.SetAdditionalRenderTarget to add/update/remove a render target or Gorgon.GetAdditonalRenderTarget to return one. The previous property: CurrentRenderTarget is still in place and uses the SetAdditionalRenderTarget internally and is available for use if you’re only looking to switch the primary target.
- Font objects can now load external TTF files. While you could always do this by hand by using PrivateFontCollection and then creating a Gorgon Font object from the resulting GDI+ font, it was a pain the ass. This new functionality will allow the reading of TTF fonts from various sources such as: A TTF file on the disk, an embedded resource, from a stream, or from a Gorgon file system. To load a font you just call: Font.From* (were * = Resource, File, FileSystem, or Stream) and it’ll import the font. For luddites: You can still create fonts directly from GDI+ font objects if you wish.
- And finally, the one that caused the most cursing: GorgonZipFileSystem.dll. What’s that? It’s a file system that allows you to manipulate zip files (you know, the files that Winzip generates). Now using this plug-in the file system editor can open/create/update your zip files. Or you can forego the file system editor completely and just use winzip. There are some caveats however: You cannot use a password, you cannot use encryption and the file format must be the legacy zip file format (Zip 2.0). But yeah, awesome.
So there you have it. Hopefully the zip file support will be a plus. I have no idea when a packaged release will be available, but when it is I’ll make sure to announce it.