The new version stores geometry on the GPU, so framerates are much higher. Also larger scenes can be created now
Mittwoch, 31. Juli 2013
Freitag, 19. Juli 2013
Voxel Editor : New functions
Added a couple of functions & features like additional polygon functions, ssao, smoothing and others.
Donnerstag, 11. Juli 2013
Dienstag, 9. Juli 2013
Voxel Paint Tool
This is a first test of a Voxel Paint program. It supports a simple add/sub brush and also brush size and hardness.
Dienstag, 2. Juli 2013
Better memory compression
Montag, 17. Juni 2013
Titan benchmark
Yesterday I had the chance to run the raycaster on an NVidia TITAN.
The result for the tree-scene was
140 fps, 1920x1080
200-300 fps, 1280x720
The result for the tree-scene was
140 fps, 1920x1080
200-300 fps, 1280x720
Dienstag, 21. Mai 2013
Parallel all permutations - non-recursive - GPU optimal
This post is a general one - not voxel related.
Some time ago I developed a a simple, fast and yet non-recursive method to directly compute the n'th permutation. Thats useful especially when working on the graphics card with CUDA for parallel evaluations. (it might have been published somewhere already - so if you know the reference, you can post it as a comment)
The algorithm is based on the following property. Lets say there are 6 characters in the string to permute. Then the result is 6! = 720 combinations. In the first column of the results, we get 720/6=120 lines of each character. This means if the index counts from 0 to 719, then the first character to be removed is computed as remove_index = index/120.
For the next column, 5 numbers are left. This means, that 120 = 5 * 24 lines of the same character - and so on.
We the following list of removes:
column0: remove_index = (a/120)%5;
column1: remove_index = (a/24)%4;
column2: remove_index = (a/6)%3;
column3: remove_index = (a/2)%2;
column4: remove_index = (a/1)%1;
Code snipplet:
In the code, perm defines the Lehmer code (wiki)
Some time ago I developed a a simple, fast and yet non-recursive method to directly compute the n'th permutation. Thats useful especially when working on the graphics card with CUDA for parallel evaluations. (it might have been published somewhere already - so if you know the reference, you can post it as a comment)
The algorithm is based on the following property. Lets say there are 6 characters in the string to permute. Then the result is 6! = 720 combinations. In the first column of the results, we get 720/6=120 lines of each character. This means if the index counts from 0 to 719, then the first character to be removed is computed as remove_index = index/120.
For the next column, 5 numbers are left. This means, that 120 = 5 * 24 lines of the same character - and so on.
We the following list of removes:
column0: remove_index = (a/120)%5;
column1: remove_index = (a/24)%4;
column2: remove_index = (a/6)%3;
column3: remove_index = (a/2)%2;
column4: remove_index = (a/1)%1;
Code snipplet:
std::string default = "12345";
int perm=1, digits=default.size();
for (int i=1;i<=digits;perm*=i++);
for (int a=0;a<perm;a++)
{
std::string avail=default;
for (int b=digits,div=perm;b>0; b--)
{
div/=b;
int index = (a/div)%b;
printf("%c", avail[index] );
//avail[index]=avail[b-1]; // non-lexigraphic but fast
avail.erase(index,1) ; // lexigraphically correct
}
printf("\n");
}
printf("permutations:%d\n",perm);
In the code, perm defines the Lehmer code (wiki)
Abonnieren
Posts (Atom)