I’ve been spending my time refactoring and just cleaning up the code in Gorgon. I made the mistake of getting Resharper and it put me on this crusade of cleaning up the code because apparently I’m just awful. Also, I’ve been finishing up the primary graphics API (not the 2D stuff) by adding a bunch of new things to it like geometry shaders, compute shaders, and hull/domain shaders for tesselation (this one is cool, if not a little baffling). I also made the API a little closer to Direct 3D 11 by adding views to resource object types.
Well, it’s been a while. I’ve been busy. You’ve been busy.
Anyway, I actually took some time to test out a piece of functionality for the new version of Gorgon. This new version of Gorgon will have a graphics API separate from the 2D renderer (the 2D renderer uses the graphics API however). This is unlike the previous version where the renderer was pretty much all you had access to. I had a user ask me a long time ago if it were possible to access the underlying renderer to render 3D along with the 2D. At first, it did not, but I did hack in a way to access SlimDX directly through a plug-in and it was awful.
So, in this version I decided to give the developer access to the full graphics API under the renderer. This allows the user to switch between 2D graphics and whatever they want. And here’s the results of my intense labour pain:
Yep, it’s a clone of the old Amiga demo “Boing”. As you can see, there are 2D elements (the text and the logo) along with the 3D elements (which were all done manually I might add, Gorgon does NOT have a 3D renderer so don’t get too excited). I’ve decided to include the code as an example program for the new Gorgon.
So, I’ve been quite busy lately with a new job and such. And as a consequence I haven’t had any time for Gorgon recently. But I finally sat down this evening and did a little work (not much mind you, and certainly nothing of note) on Gorgon 2.x.
I’ve uploaded the Ball Demo to the site so people can have a look at it. I’d appreciate any feedback (please post the feedback to the forums, thank you).
Please note the following before running it:
It’ll probably crash. It’s in development after all.
You NEED Windows Vista Service Pack 2, or Windows 7 (Windows 8 -might- work, but don’t count on it).
It will run on Direct 3D 9 capable video devices. However, it requires Direct X 11 be installed on the system (hence the OS requirements).
To run it, just run the BallDemo.exe and pray (oh, and ensure that the zip file isn’t ‘blocked’ by Windows, .NET assemblies hate that shit). It defaults to windowed mode with a resolution of 1280×800 although you can modify the BallDemo.config file to change to a resolution you like.
So I got custom shaders up and running in Gorgon 2.0. The new version has always had shader ability because it’s using Direct3D 11, so it’s required to use them. However, up until now the shader code has been hardcoded to use 3 default shaders. But after today, there’s an ability to use customized shaders:
In this little sample, there’s a new system at work. It’s basically a mini effects framework that can do multi-pass rendering and in this video there’s a wave shader and an embossing shader at work on the sprite. If you want to learn more, click the stupid link below
So, I bet you’ve been wondering what I’ve been up to lately… You haven’t? You selfish bastard.
Anyhow, I’ve gotten around to playing with this library I wrote for a bit. I do so little programming on my own time these days and honestly, I never much cared for Gorgon (I felt it could have been better), that I haven’t bothered to try and write anything with it. That my users actually say it’s useful and well written comes as a complete shock to me. Anyway, this last week I mustered up some spare time and I created this abomination:
It’s not much, but it’s just a little thing I threw together to see if I could get a “bloom” type effect with a star. I did. And there it is. Note how the surface of the star moves around and all that. Neat hey? No? Shut up.
I’ve limited it to 60 FPS on purpose, but it is fairly swift. I think at one point I was getting > 1000 FPS. However, my vidja card is quite beefy, so take that with a grain of salt. So… yeah…. that’s all I have to say.
Made some small fixes to handle a change to the FillTexture callback and to work around a bug in Texture.FromStream.
Updated the ShadersInSpaaace to draw the film grain crap properly.
Updated bump in the night sample to include specular mapping and included the specular map (yes it’s supposed to look that grainy). Updated normal map for more accurate lighting. Crazy bump is the shiznit.
Fixed bugs in the file system editor that caused the whole file system to be exported to explorer even if only a single file was selected. Fixed bug in file system editor where if root wasn’t selected the export file system button would break. Changed export button to be more clear about its function.
So I kind of broke my promise to not add anything new, and added a new example. This one deals with per-pixel bump mapping. It will be included in the next round of bug fixes for Gorgon (of which there are many). I’ve put up a screen shot of it in action, although it really needs to be seen in its fully animated glory to get the full effect.
As I said there are many bug fixes that have been implemented in Gorgon and I’ll package and distribute another release by the end of the month (I want to be sure to catch as many as possible). None of them are show stoppers, just annoyances. You can easily keep up to date by grabbing the code from the sub version repository on the google code page. I’m aiming for the end of the month for a release unless I find a really major bug, so it’s entirely possible that it could come sooner. But the way things are looking, it looks like I’ll stay on schedule.
As always, I’ll keep all two of us posted.
Edit: I just encountered a bug with the 18.104.22.168 installer. If you attempt to install the source code it’ll complain about installing x64 components if you’re using an x86 version of Windows. Just deselect “Install Source” before installing. If you need the source, you can get it from the subversion repository. Sorry about that, I’ll get that straightened out with the next release.