# Scaled Bitmap Buffer

This topic is 5415 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Ok how to explain this... What I am trying to do is apply a heightmap that is scaled 1:256...(1 pixel = 256 units) and applying it to a mesh for terrain rendering. I already use perlin noise to give me a bit of variance. but sadly it isnt enough. The scaled heightmap will obviously produce mesas 256x256 units in my terrain even when I apply the perlin noise to the returned color variables of my heightmap. The abrupt edge between 2 colors needs to be smoothed somehow this much I know. Now how would I go about smoothing the pixel color variations? If I have pixel one as 255 and pixel 2 as 0 what about pixel 1.5? Obviosly 128 right...Now the problem I am having is coming up with a fast way of producing this. I could use a ton of assignments and if statements but that slows the render down to a crawl... So basically what I want to do is a sort of nearest neighbor color calculation with a resolution of 256 units between each pixel. So far I have this basic code that half-asses the process.
double Terrain::landHeight(double x, double y, SCALE_P s) {
int red,green,blue;
int where;
double image_color;
//double perlin = (PerlinNoise2D(x*s.s1,y*s.s2,s.s3,s.s4,1)+1)/2;
int X = abs((int)x/256);
int Y = abs((int)y/256);

double iX = (absd(x)/256) - X;
double iY = (absd(y)/256) - Y;

//print(iX);

if(X > 1024) X = 1024;
if(Y > 512) Y = 512;
if(X < 0) X = 0;
if(Y < 0) Y = 0;

where = (((int)X+0)*3) * (((int)Y+0)+1024); // center point

red = planet_texRGB[planet[nearest_obj].landTexID].imageData[where];
green = planet_texRGB[planet[nearest_obj].landTexID].imageData[where+1];
blue = planet_texRGB[planet[nearest_obj].landTexID].imageData[where+2];
image_color = ((double)(red + green + blue) * 0.3333) * iX;
//if(where+2 > 1572864) where = 1572864-where;
return image_color/256;
}


To turn this: ___ | | -- -- into this: /--/ \-- Any suggestions? Thanks! [Edited by - keyofrassilon on September 20, 2004 8:27:54 PM]

• 17
• 10
• 21
• 16
• 9