Posts tagged ‘perlin’

Real-time thermal erosion much faster now!

Intoduction

“A picture is worth a thousand words” so I suppose a video should be much better ;-)

The real-time erosion has gained a lot from the latest optimization work, the number of FPS is passed from 1.8 to 71.4 for my first thermal erosion and from 3.1 to 71.4 for my second thermal erosion, that means that the first erosion is about 40 times faster and the second one is about 23 times faster, a huge improvement for a real-time program!

Even if the second algorithm is faster than the first one, using a small heightmap (256×256) gives the same execution time for both.

First thermal erosion

This video shows a terrain generated by the sum of 6 octaves of Perlin Noise and eroded by 100 iterations (double the number of the previous video) of my first thermal erosion algorithm.

The video is available on:

this erosion algorithm allows an average frame rate (computation + visualization) of 71.4 FPS using a 256×256 16-bits floating-point texture as heightmap.

Second thermal erosion

This video shows the same terrain generated by the sum of 6 octaves of Perlin Noise and eroded by 100 (double the number of the previous video) iterations of my second thermal erosion algorithm.

The video is available on:

this erosion algorithm allows an average frame rate (computation + visualization) of 71.4 FPS using a 256×256 16-bits floating-point texture as heightmap.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Benchmarks: Generation algorithms

Introduction

I’ve done new benchmarks to test how the latest optimizations have improved the performance of the generation shaders.

All the benchmarks are made using a 1024×1024 16-bits floating points texture.

I’ve run the benchmarks on my graphic card, a GeForce 7600 GT, and on the graphic card of my friend Encelo, a GeForce 8600 GT.

The following data are the execution times needed to complete a different number of iterations of the generation phase, for each group of iterations you can see the slowest, the average and the fastest time on 10 tests.

Fault formation

These are the results for the 7600 GT:

iterations = 250 -> min = 271 ms. - avg = 273 ms. - max = 276 ms.

iterations = 500 -> min = 543 ms. - avg = 545 ms. - max = 548 ms.

iterations = 1000 -> min = 1089 ms. - avg = 1090 ms. - max = 1093 ms.

iterations = 2000 -> min = 2179 ms. - avg = 2180 ms. - max = 2183 ms.

The optimized shader is about 12% faster than the previous version.

These are the results for the 8600 GT:

iterations = 250 -> min = 235 ms. - avg = 237 ms. - max = 239 ms.

iterations = 500 -> min = 471 ms. - avg = 473 ms. - max = 477 ms.

iterations = 1000 -> min = 942 ms. - avg = 945 ms. - max = 951 ms.

iterations = 2000 -> min = 1883 ms. - avg = 1885 ms. - max = 1889 ms.

The shader is about 14% faster on this graphic card.

Circles

These are the results for the 7600 GT:

iterations = 250 -> min = 338 ms. - avg = 340 ms. - max = 243 ms.

iterations = 500 -> min = 676 ms. - avg = 678 ms. - max = 682 ms.

iterations = 1000 -> min = 1355 ms. - avg = 1356 ms. - max = 1359 ms.

iterations = 2000 -> min = 2710 ms. - avg = 2712 ms. - max = 2715 ms.

The optimized shader is about 1% faster than the previous version.

These are the results for the 8600 GT:

iterations = 250 -> min = 238 ms. - avg = 239 ms. - max = 242 ms.

iterations = 500 -> min = 475 ms. - avg = 477 ms. - max = 481 ms.

iterations = 1000 -> min = 951 ms. - avg = 952 ms. - max = 955 ms.

iterations = 2000 -> min = 1900 ms. - avg = 1902 ms. - max = 1906 ms.

The shader is about 30% faster on this graphic card.

Perlin Noise

These are the results for the 7600 GT:

octaves = 2 -> min = 31 ms. - avg = 32 ms. - max = 32 ms.

octaves = 4 -> min = 61 ms. - avg = 62 ms. - max = 63 ms.

octaves = 6 -> min = 92 ms. - avg = 92 ms. - max = 93 ms.

octaves = 8 -> min = 121 ms. - avg = 122 ms. - max = 123 ms.

The optimized shader is about 61% faster than the previous version.

These are the results for the 8600 GT:

octaves = 2 -> min = 12 ms. - avg = 13 ms. - max = 13 ms.

octaves = 4 -> min = 23 ms. - avg = 24 ms. - max = 24 ms.

octaves = 6 -> min = 36 ms. - avg = 36 ms. - max = 36 ms.

octaves = 8 -> min = 47 ms. - avg = 48 ms. - max = 49 ms.

The shader is about 60% faster on this graphic card.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Real-time thermal erosion

Introduction

I’ve improved the terrain engine adding my thermal erosion shaders, now it’s possible to see a real-time erosion (from computer graphic point of view, a real erosion would take thousands years :-P) just pressing a key!

The erosion is managed in a different way respect the previous applications I’ve made, now after every iteration, the result is shown by the terrain engine, so it’s possible to see how the ground changes during the whole process.

I’ve made a couple of videos to show this new feature, enjoy.

First thermal erosion

This video shows a terrain generated by the sum of 6 octaves of Perlin Noise and eroded by 50 iterations of my first thermal erosion algorithm.

The video is available on:

this erosion algorithm allows an average frame rate (computation + visualization) of 1.8 FPS using a 256×256 16-bits floating-point texture as heightmap.

Second thermal erosion

This video shows the same terrain generated by the sum of 6 octaves of Perlin Noise and eroded by 50 iterations of my second thermal erosion algorithm.

The video is available on:

this erosion algorithm allows an average frame rate (computation + visualization) of 3.1 FPS using a 256×256 16-bits floating-point texture as heightmap.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

My second thermal erosion - 3D renderings

Introduction

I’ve made several 3D renderings with Blender to show how my new thermal erosion algorithm affects real terrains.

In order to appreciate the effects of the erosion, I suggest to open the images of each group in different tabs and view them in sequence, enjoy!

Fault formation

The following image shows how the original map (top-left square), generated by 1500 iterations of the fault formation algorithm, is modified by 25, 50 and 100 iterations of thermal erosion:

These are the 3D renderings from the SOUTH-EAST view:

          
          

As it’s possible to notice, the erosion algorithm changes the “block of rocks” in a mountain chain.

Circles

The following image shows how the original map (top-left square), generated by 1000 iterations of the circles algorithm, is modified by 25, 50 and 100 iterations of thermal erosion:

These are the 3D renderings from the NORTH-WEST view:

          
          

Terrains generated by the circles algorithm are usually smoother than terrains generated by another algorithm, so the new erosion algorithm modifies less the shapes, anyway 100 iterations give the same a good result.

Perlin Noise

The following image shows how the original map (top-left square), generated by the Perlin Noise algorithm (6 octaves), is modified by 25, 50 and 100 steps of thermal erosion:

These are the 3D renderings from the SOUTH-EAST view:

          
          

As in previous images, more iterations means a lower terrain.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

3D Animations

Introduction

Thanks to my friend Encelo and to some online tutorials, I’ve made my first animations with Blender.

The animations are quite simple, the only object moving around is the camera that rotates around the 3D scene, I’m planning to do some more interesting animations, but these are the first ones and I like them ;-) enjoy!

Fault Formation

The terrain has been generated by 1500 iterations of Fault Formation algorithm and eroded by 100 iterations of my thermal erosion algorithm using the default parameters: T = 0.005, c = 0.5

The video is available on:

Circles

The terrain has been generated by 1000 iterations of Circles Algorithm setting r = 100 and eroded by 100 iterations of my thermal erosion algorithm using the following parameters: T = 0.005, c = 0.25

The video is available on:

Perlin Noise

the terrain has been generated by a Perlin Noise made summing 6 octaves and eroded by 100 iterations of my thermal erosion algorithm using the following parameters: T = 0.0025, c = 0.25

The video is available on:

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]