Looking for a way to speed up software based bilinear interpolation. I finally have a very good looking voxel engine in 32-bit color and it runs at an acceptable frame rate - and I haven't even implemeted the MMX instructions yet.
[b]Wider vertical spans[b]
Here is my idea. On the first stage of the renderer each vertical span is actually 2 pixels wide, then successively at set distances the vertical spans become fatter. This causes the distant mountains, hills, valleys and plains to become quite blocky, but it does allow the viewer to see very far into the distance.
Pre-filtered maps - both height, color, and diffuse
Now the height map and color map are pre-bilinear filtered and smoothed in a paint program so I'm not doing any of that on the fly and it looks very good. Now for distances that are extremely close to the viewer, the land still looks a bit blocky and bland. My plan is to create a diffuse texture which will represent which pixels will have their RGB's altered and how. This will create a rougher, but more realistic looking landscape.
Need to bilinear filter the heights on close renders
But I really need to also filter the heights of the mountains when they are close because they can get quite blocky even in 800x600x32 bit. I'm using DirectDraw and trying to do this w/o using Direct3D - Direct3D really won't help much because it is not designed for voxel graphics and it would probably just slow the main render down by calling Direct3D. Speed is very critical in the main loop.
I need to find a very fast way to bilinear filter the height values on close renders. Currently my idea is to use fixed point math and shifts (the same for the diffuse texture u v coords). Anyone have any ideas or super fast source I might be able to look at? Most of the stuff on the web about this is either too slow or only uses 8-bit palettized modes which is so antiquated and ugly.