I've been a bit quiet lately in pretty much all aspects - coding, forum posts, journal entries, writing etc... so I thought I'd lump together a quick update on whats going on in JackWorld(TM)
For most of December I was working silly hours trying to break the back of a project at work. When you've spent 10-12hrs furiously coding C# or T-SQL during the day you'll probably find the allure of 'personal' coding projects fades. It got so bad my dreams could probably be expressed in T-SQL (select count(*) from [animals] where [name]='Sheep'; ??)...
However I managed to get a whole two weeks off work over christmas - the first with family and the second freezing my privates off here in London catching up with some much needed theraputic/recreational programming. Although the fact I live in an ancient Kensington flat that retains NO heat makes it hard - my room is only a few degrees above ambient temperature outside (~8 degrees) and my fingers keep going numb which makes typing quite hard. Long live electric heaters and global warming.
New Book Published Exclusively to GDWiki! on the homepage and Jason's developer journal mention the e-book publication of our book:
Should anyone be interested... a brief history of the project:
October 2005 - the Microsoft MVP summit where Dustin Franklin mentioned he and Wolfgang Engel had thought about co-authoring a D3D10 book. It was a few months prior to this that the MVP's had gotten specifications and an early refrast for D3D10 to start hacking away with so we'd started to get familiar with the new technology.
Early 2006 - the project was discussed on the MVP private newsgroups with a particular interest in getting more authors involved. I think the thoughts were that it was too big a project for 1 or 2 authors but not suitable for a mass author ShaderX- or GPG-style collection. Wolfgang and others had seen the work in my journal on lighting models (for my final year university project, submitted May 2006) and suggested I extend/continue that work for the book.
Mid 2006 - sometime around Beta 2 or RC1 of Windows Vista they made changes that killed support for my computer of the time. Some motherboard incompatability that was flagged "will not fix". I forked out a GBP1000 to buy a new Vista-compatible desktop to continue work on the book.
Late 2006 - I started my graduate job with Fujitsu Services but thanks to living in a dead town (Reading, Berkshire) I worked my mandatory 7.5hrs, came home and worked another 4-5hrs on the book each evening. Progress was quite quick despite still having to work with the reference rasterizer. I developed a recording system to prototype my algorithms and render them to a video whilst I was at work.
Early 2007 - I finished the first draft of my section and tidied up the source code for the publicly released SDK's and recently available GeForce 8800 hardware.
I forget the exact dates from there onwards, but the project effectively died around this time. We had a date of April 2007 for final draft with the publisher, but they pulled out citing something to do with our missing deadlines and them having found an alternative author/title to fill the gap.
April 2008 - I contacted Drew (heads up the ERB if you didn't know) about the prospect of publishing as an e-book given that physical print publishing then appeared to be a dead-end ([sad]).
Thankfully GDNet were interested in publishing our work and, slowly (very slowly at times) over the past 8 months to December 2008 we worked on getting our individual draft material onto the GDNet wiki server.
In addition to my co-authors Jason, Nico, Ralf and Wolfgang I'd also like to thank the GDNet staff for their willingness to publish and assistance during the process. In particular thanks to Drew, Olusey and Richard.
Hopefully you'll agree that the effort on everyones part was worth the end result, even if we did release a 10.0 text just as 11.0 is becoming available [lol]
Future of the book
Between the authors and GDNet staff we've discussed having some sort of print-on-demand feature for those who prefer "proper" reading over screen reading. Too early to say any details, but keep your eyes peeled if you're interested.
Otherwise, the content of the book should be iteratively improved and tweaked as the various authors work on new projects or get bits of spare time. I doubt we'll be able to commit to a timeline or regular updates, but I believe the intention is there at least.
Myself, I'd like to include a few future articles (including the one below) in the book as well as merge/replace the DX&XNA forum FAQ with a wiki-ized version.
State of graphics in 2009
A few of my recent (in order if not time!) journal entries have been about the various graphics API's and technologies available after the PDC'08 announcements. This journal entry contains the most recent public example of this diagram.
Since then I've refined the diagram to the point where I'm quite happy it conveys an accurate and readable representation. A basic draft around the diagram has begun and shall be my main task this week, with the aim to have a final draft sent off for review prior to submitting it online for publication. It's proving to be quite interesting to take the '10,000 foot view' on graphics as you start to realise how all the bits and pieces fit together [grin]
Using D3D11 for terrain rendering
If I finish the aforementioned article this week then I'm going to get on with some D3D11 coding. I have a half-finished prototype of multi-threaded procedural terrain rendering with D3D10 that I'll port to D3D11 - the threading story in D3D11 is one of the big highlights so I want to have a play around with that.
I've also been contemplating the use of the new D3D11 shader units to assist with the rendering. In particular I'm thinking that the new Compute Shader (CS) can be used to generate a buffer of height points as a low-resolution heightmap. I suspect the 'island deposition' algorithm will work nicely as will fault-line generation. This low-resolution height-map can then be fed into the Hull Shader (HS) and Domain Shader (DS) for tesselation according to some sort of NURBS implementation which will hopefully scale according to distance for a trivial LOD implementation.
Almost sounds easy, but having read the HS and DS speclets I was left quite confused so it may well prove more challenge than I'd like!