Sunday, June 10, 2007

GPU Geometry Clipmaps 1.1



A small release with few improvements and bug fix :
- A update in the Z compression/ decompression process allow an higher Z Scale.
- Fix a bug in normal mapping by adding an offset of 0.5 / NormalSize.
- Support grids up to N = 1023 using 16 bits index.
- Use triangle lists instead of tristrip for Mx3 and MxM blocks for some FPS.
- Vertex buffer storage takes less than 1/12 of previous version.

23 comments:

Anonymous said...

Do you plan to implement a vehicle to drive on your land?

FilouGK said...

no, i won't change anything until i get a SM4.0 GPU.

It's easy to add something following terrain on CPU side.

if you load your terrain from a file, you will have the elevation data on ram.

if you generate it on the fly on GPU, you can generate the same elevation on CPU.

Anonymous said...

How is your program progressing? Any coming updates? Interested because I would like to write a similar algorithm.

FilouGK said...

Work is currently paused ( Holidays ). I will maybe restart from scratch with DX10/SM4.0 in september/october. Geometry Shader could offload CPU a bit more and some problems may disappear ( like Z-Compression limit ).

Andrew said...

I have a C# / Managed DirectX conversion of this complete, I get some rendering quality issues though, http://www.andrewparry.co.uk/blog/ if you could take a look and let me know what you think that would be great :)

FilouGK said...

i sent you the answer by mail :)

Ian said...

I am trying to build your project (which appears to be quite nice), but I get the following compile errors:

common\dxstdafx.h(99) : fatal error C1083: Cannot open include file: 'DXUTmesh.h': No such file or directory

I have the most recent version of the DirectX SDK, but it doesn't appear to include DXUT, and I can't find an actual download point for it anywhere online. I'm probably missing something obvious, but if you could point me in the right direction, I would really appreciate it. I'm also having trouble understanding why some of the DXUT files are in the project, but others that you use are not.

Thanks in advance,

Ian

FilouGK said...

In common\dxstdafx.h .

Comment:
//#include "DXUTmesh.h"
//#include "DXUTgui.h"
//#include "DXUTsettingsDlg.h"
//#include "DXUTSound.h"

Compile. you may have this error

".\EmptyProject.rc(41) : error RC2135 : file not found: ..\common\directx.ico"

copy "C:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\C++\DXUT\Optional\Directx.ico"
to "GpuGC\Common\"

and in Emptyproject.rc change

IDI_MAIN_ICON ICON "..\\common\\directx.ico"

to

IDI_MAIN_ICON ICON "common\\directx.ico"

chelvis said...

cool! thanks for sharing

Pitereeek said...

Do you know where is possible to get C# version? Because link on your blog to C# source code doesn't work.

FilouGK said...

I will ask the author if i can mirror his project since his site is down. You may check again tomorrow.

Pitereeek said...

I see that it is still no answer:) It will be great to publish it C# for Managed DirectX and XNA users. I'm hope you will manage to get it:)

Cheers Peter

Sorry for my broken English:)

FilouGK said...

Andrew Parry manage to recover his C# project from his old pc. he send me two files, one of them is the good one but with C# 2008 there is exceptions errors for both. I never used C# ...
guess you will have to check them.

http://www.box.net/shared/ypjtjlickg
http://www.box.net/shared/uhsfoyd4wo

Anonymous said...

Hi and thanks for you great sample.

My question is: How can i run sample with my own heightmap; not with generated noise heightmap.

Thanks again.

FilouGK said...

such feature is not present in the dx9 sample.you will have to code it.

the dx10 sample can be used with any heightmap but it's "work in progress". dx10 samples lacks normal maps & Morphing between levels is not finished yet.

Anonymous said...

I dunno how to code in it. every change i do small cracks appear in it.
Can you please send me modified .fx files ?

FilouGK said...

such feature for dx9 requires much more than modified .fx .

i don't plan coding for the dx9 version anymore.

if you need an easy way to make games/etc.. , i suggest using a 3d engine such as ogre.

Anonymous said...

I want to port this code to C#/XNA and XNA does not support Dx10 at the moment. I do not like using game engines, i develop my own engine ;).

I understand you do not want work on Dx9 version anymore, but if you do; you would help many beginners who write codes for XNA/Dx9. Dx10 programmers are professional and (maybe) they do not need samples :P.

Thanks for your great sample.

Sarah said...

Yeah, some sort of XNA example of this would be amazing. Thanks for the sample tho and any further help from anyone.

Marvene said...

This is great info to know.

Murali said...

XNA Sample of this would be great and very helpful for beginners.

Anonymous said...

I read your code. But I don't understand the meaning of the class named RTT. What's the usage of the class?

thanks

FilouGK said...

let me store 2D quads ( 2D pos + UV ) used to update clipmaps & normal maps.