Contents of This Document


Release History


  • Rewrote the error value calculation to be much more accurate, smoothly sloping terrain now gets less detail, as it should be.
  • The new error uses less memory, 1/4th of what I was storing previously.
  • The improved error means we need fewer triangles to get a good image, I have reduced the default LOD to 10,000 triangles and this gives good results, frame rate is close to 150FPS with 120FPS moving forward and around 100FPS when making a 180degree turn.


  • Enabled inlining to work properly, should experiment with fast call next.
  • Implemented support for the S3TC extention to handle compressed textures.
  • Moving forward maintains 110FPS, turning head drops it to around 80FPS. Rendering is 133FPS.
  • There is a bizarre compiler optimization bug in release mode that I have finally worked around.


  • Rewrote the rendering and especially the texturing for the terrain to use a texture cache. There is one cache for each texture LOD, nearby terrain is rendered with the highest res texture 1Kx1K, intermediate range is rendered with textures whose max size is 256x256 and distant terrain is with textures of max size 64x64.
  • Implemented support for the S3TC extention to handle compressed textures.
  • Rendering is now up to 2 1/4 million triangle per second for pure terrain, with a single texture pass (which looks ok with the high res textures.) This is from a debug build.
  • Updated the screen shot page. There is a bug when rendering with the optimized build which I have not yet tracked down.


  • Optimizing rendering and moving all the extention stuff into the oglxt class.


  • I spent some time along with help from Stephan Heigl getting DDG to compile again under Linux. At least there are make files now and all the parts of DDG did compile. However I never had time to run it. If someone wants to complete the port let me know and I can try to put more effort into it.


  • Fixed starfield rendering.


  • Fixed bug in setHeight().
  • Fixed bug in loading terragen files, terrain was showing up as rice paddies because of a float/int issue.
  • Fixed bug where I was not rendering the terrain at full resolution.
  • Fixed a really nasty clipping bug.
  • Collision detection is perfect now and trees no longer float in the air!


  • Fixed fullrender version of terrain. Can show wireframe overlay onto terrain.
  • Fixed tree rendering.


  • Fixed some packaging errors w.r.t. missing files, bad project settings.
  • Demo would not work on non GeForce cards, fixed the Extention detection code.
  • Also made toolkit more lenient w.r.t. opengl errors, some cards do not support the blending mode that ddgSky uses, instead of exiting in this case, I report the error to the console and continue.
  • Upgraded to run with GLuT 3.7.3.


  • Converted over to using the DDGDIR environment variable everywhere, this variable should be set in your autoexec.bat to the ddg directory. This will make compiling easier from now on.
  • Created a project that automatically creates the zip files for me to allow me to make uploads more easily.
  • I also added the missing .h files and .lib files to make it easier to compile DDG without having to search the internet for these files.
  • I saw a problem on a TNT2 machine where the terrain did not show. If this is happening, try recompiling with ddgNVFence disabled in ddgterrainrender.cpp.


  • Optimized vertex data generation, we now send less vertices than triangles.
  • Fixed cam.pth to work with the new scaled terrains. Now I can run perf tests again. Need a new path for testing a larger terrain than 256x256 though.
  • NVidia fence extension is now dynamically enabled if the extension is supported. Note however if you enable the clip planeit slows down rendering a lot.
  • Created a new release. This release includes source code to render the terrain. It also includes source code of the initial DirectX8 port (only viewport works).
  • Ragnar Scheuermann has written an explanation on compiling DDG, that might help some other people. I will try to convert the VS project to use an environment variable soon.
  • Note that the DDG data formats have changed, you will have to delete any existing files in the 'output' directory and regenerate them.


  • Pulled rendering of terrain out of the terrain lib. ddgTerrain view now accepts a memory block for a VertexBuffer and IndexBuffer, these blocks are then filled in with triangle data. This data can be rendered in one blow or block by block.
  • Added code to generate lowres global texture.
  • Implemented use of lowres texture for far away blocks, this means that much fewer high res textures need to be loaded at any given moment. Also makes rendering the far away data much more efficient since it can all render from the same global texture, it can all be merged into one render call instead of one per block.
  • Cut per block memory consumption by 30%. Each block now takes only 10534 bytes.


  • Force terrain in immediate vicinity to highest detail resolution. This confirms that getHeight was correct. Can also use this to maintain a list of triangles onto which we want to render with additional detail.


  • Added support for dynamic terrain, ddgITerrain::setHeight() method on the terrain now almost works.
  • ddgITerrain::getHeight() is working now.
  • Fixed a bug in terrain variance calculation, terrain is more stable now, the areas which need more resolution, like cliffs get it now.
  • Base geometry is no longer based on a right angle triangle but on a square. So blocks are really blocks now, this eliminated a bunch of unneeded memory/computation and especially code complexity from the terrain. It also saves on disk access time since there are no longer twice as many block files as texture files.


  • Texture generation can now write out a 24 bit color map as well as an eco map, this color map can be edited with a paint program to modify the generated ecosystems, then you can rerun the texture generation and it will can generate texture based on the colormap, this allows you to generate the general terrain and then add in textures for roads, lakes, rivers etc.


  • Release V6.
  • Eliminated DDGSTREAM symbol, I am assuming streams are available, maintaining the ability to compile without streams was a mess.
  • Blank viewport for DX8 shows up.
  • Fixed some bugs w.r.t. text rendering and a memory corruption problem for non square terrains.
  • Fixed location of sky/clouds etc.
  • Fixed some data propagation errors w.r.t. invalid heightmap values which could cause an entire block to have an error value of zero when it should have been more.
  • Discovered and fixed an error in which block zero remains at the lowest level of detail.

27-12-00 V6 External Release

12-12-00 Internal Release

22-11-00 Website update

22-10-00 Internal Release

15-10-00 Internal Release

25-09-00 Internal Release

17-09-00 V5 External Release

17-08-00 Internal Release

13-08-00 Internal Release

05-08-00 Internal Release

25-07-00 Internal Release

15-07-00 V4.8 Internal Release

15-07-00 V4.7 Internal Release

12-07-00 V4.6 Internal Release

30-06-00 V4.5 Internal Release

10-06-00 V4.4 Internal Release

03-06-00 V4.3

25-05-00 V4.2 Internal release

17-05-00 V4.1

07-05-00 V4.0

01-05-00 V3.6 Internal Release

22-04-00 V3.5 Internal Release

11-04-00 V3.2

06-04-00 V3.1


02-04-00 Internal Release

30-03-00 Internal Release

23-03-00 Internal Release

03-16-00 Internal Release

02-03-00 V3.0

24-02-00 Internal release

07-02-00 Internal release

02-02-00 Internal release

21-01-00 V2.7

11-01-00 V2.6

07-01-00 V2.5

07-01-00 V2.4

07-01-00 no code release

06-01-00 V2.3

04-01-00 source code release V2.2

01-01-00 no release

12-31-99 no release


12-11-99 V2.1

12-04-99 V2.0

11-29-99 V1.9

11-11-99 V1.8

11-11-99 V1.7

10-31-99 V1.7

10-14-99 V1.6

10-10-99 V1.5

09-19-99 V1.4

09-16-99 V1.3

09-09-99 V1.2

08-14-99 V1.1

08-06-99 V1.0


08-04-99 V0.9.9

07-26-99 V0.9.8

07-26-99 V0.9.7B

07-25-99 V0.9.7

07-15-99 V0.9.4B

07-15-99 V0.9.4

07-01-99 V0.9.3

06-22-99 V0.9.2

06-13-99 V0.9.1

06-01-99 V0.9.0

05-19-99 V0.8.4

05-16-99 V0.8.3

05-13-99 V0.8.2

05-06-99 V0.8

04-27-99 V0.7

03-04-99 V0.6.4 Internal release

28-03-99 V0.6.3 Internal release

16-03-99 V0.6.2 Internal release

14-03-99 V0.6.1 Internal release

13-03-99 V0.6

11-03-99 V0.5.2 Internal release

02-03-99 V0.5.1 Minor upgrade

18-02-99 V0.5 Initial Public Release of DDG Toolkit

Current TODO List

Known Bugs