Archive for February, 2009

Progress Update (Feb 2009)

I haven’t been able to update the site for a few weeks, partly because I haven’t got any one feature finished to show you, and partly because I have simply got so much to do. So here is an update on what I am currently working on:

OK, I have been working on several areas of Britonia – and not just the coding.  Because of the size of my todo list I am trying to achieve several things at the same time, but most of them are still related to the planetary terrain system.The features that I am currently working on are as follows:
GPU Heightmaps, Normalmaps and Duffusemaps:

This has been my main focus for the last 2-3 weeks.  I have been trying to generate the height and normals on the GPU using Improved Perlin Noise, and it is kind of working.  I can produce the heightmap information for each terrain patch by passing in the four corners of the patch in world space, but I still have some issues with alligning the patches so there are no seams.  The normal map generation on the GPU should pose no problems (I can already generate a normal map from the given heightmap – but I expect there will be similiar issues with seams).  The diffuse map will be generated from the height and slope information, and will be generated once per patch.
fp64 Geometry:
Based on a post by Flavien Brebion over on the Infinity forums,  I have changed the way in which the geometry is built and renedered.  This involved changing most of the planet geometry code and caused the scattering shaders to stop working (see below).  Now the geometry is built around (0,0,0) and I store the patch centre position in fp64.  At render time, I use fp64CamPos – fp64PatchCentre to create a 32-bit translation matrix, which is just passed to the shader like normal, set camPos to (0,0,0) and render.Atmospheric Scattering:
After changing the way that the geometry is rendered, the scattering no longer worked.   After an hour I managed to changed the atmosphere scattering and get it working again, but for the terrain scattering it is taking awhile longer, and it still isn’t working as of this post.  Before it stopped working I added some code which was posted on the forum by Thexa4 which improved the lighting and stopped terrain turning black when the geometry was ‘higher’ than the camera, so thanks for that!

Low / High end GPUs:
For most of the components I have been doing a Low and Hi effect file, because a lot of effects which I am using require shader model 3.0.  I would like to set the minimum shader model to 2.0, with the option of changing the settings in game, so I have been writing quite a few effects.

Project Spring Clean:
I changed the structure of the solution map a few weeks ago, and seperated most of the components into their own projects.  The  way the solution used to be made it hard to get a good overview.  Now I have split up most of the main components which produce a variety of .dll files, can can be reference and then used by the engine.  For example the scene graph, the planet renderer, the UI etc. are all now within their own projects (and work indepently of each other through).  I am not sure if this is the best way to organise and structure the projects, but I will do for the time being until I learn of something better.

Britonia Logo and Blender3D:
I have also started looking at creating a Britonia Logo using Blender3D ().  Although I haven’t dedicated that much time to it yet.  In the process I have also started half heartedly learning blender.  I say half-heartedly because I don’t particully enjoy modeling, but it is something I will need to do for the future.

Britonia Design Document:
Lastly for the update, I’ve been trying the finish the Britonia Design Document.  I is quite funny when I read through it because it has to be one of the most ambitous design documents ever.  Nevertheless I will try and stick to it in the coming months and indeed years.  I hope to post the design document on the site soon.
Shortly after writing this post – I got the atmospheric scattering for the terrain and the atmosphere working again, so I have posted a screenshot below.  The terrain is just using Vertex normals (no per-pixel lighting) and the heightmap generation is still being generated on the CPU, so the performance is quite bad.  I still cannot get the scattering to produce red sunsets, so I still have some work left to doin this area.  When the terrain patch normals are finished, this should further increase the visual quality of the screen shots.
Until next time,

Leave a comment