//Constructors// public RendererNormal() { BumpHeight = 1.0; IsWrapEnabled = false; DestImage = null; SourceNoiseMap = null; }
//Constructors// public RendererImage() { IsLightEnabled = false; IsWrapEnabled = false; LightAzimuth = 45.0; LightBrightness = 1.0; LightColor = Color.white; LightContrast = 1.0; LightElev = 45.0; LightIntensity = 1.0; BackgroundImage = null; DestImage = null; SourceNoiseMap = null; calcLightValues = true; //BuildGrayscaleGradient(); BuildTerrainGradient(); }
//Methods// public void Render() { int width = SourceNoiseMap.Width; int height = SourceNoiseMap.Height; DestImage = new ImageMap(width, height); for (int y=0; y < height; y++) { for (int x=0; x < width; x++) { int xRightOffset, yUpOffset; if (IsWrapEnabled) { if (x == (int)width - 1) { xRightOffset = -((int)width - 1); } else { xRightOffset = 1; } if ( y == (int)height - 1) { yUpOffset = -((int)height - 1); } else { yUpOffset = 1; } } else { if (x == (int)width - 1) { xRightOffset = 0; } else { xRightOffset = 1; } if ( y == (int)height - 1) { yUpOffset = 0; } else { yUpOffset = 1; } } double nc = (double)SourceNoiseMap.GetValue(x, y); double nr = (double)SourceNoiseMap.GetValue(x + xRightOffset, y); double nu = (double)SourceNoiseMap.GetValue(x, y + yUpOffset); DestImage.SetValue(x, y, CalcNormalColor(nc, nr, nu, BumpHeight)); } } }
//Methods// public void Render() { int width = SourceNoiseMap.Width; int height = SourceNoiseMap.Height; DestImage = new ImageMap(width, height); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int xRightOffset, yUpOffset; if (IsWrapEnabled) { if (x == (int)width - 1) { xRightOffset = -((int)width - 1); } else { xRightOffset = 1; } if (y == (int)height - 1) { yUpOffset = -((int)height - 1); } else { yUpOffset = 1; } } else { if (x == (int)width - 1) { xRightOffset = 0; } else { xRightOffset = 1; } if (y == (int)height - 1) { yUpOffset = 0; } else { yUpOffset = 1; } } double nc = (double)SourceNoiseMap.GetValue(x, y); double nr = (double)SourceNoiseMap.GetValue(x + xRightOffset, y); double nu = (double)SourceNoiseMap.GetValue(x, y + yUpOffset); DestImage.SetValue(x, y, CalcNormalColor(nc, nr, nu, BumpHeight)); } } }
//Methods// public void Render() { int width = SourceNoiseMap.Width; int height = SourceNoiseMap.Height; DestImage = new ImageMap(width, height); for (int y=0; y < height; y++) { for (int x=0; x < width; x++) { Color destColor = gradient.GetColor(SourceNoiseMap.GetValue(x, y)); double lightIntensity; if (IsLightEnabled) { int xLeftOffset, xRightOffset; int yUpOffset, yDownOffset; if (IsWrapEnabled) { if (x == 0) { xLeftOffset = (int)width - 1; xRightOffset = 1; } else if (x == (int)width - 1) { xLeftOffset = -1; xRightOffset = -((int)width - 1); } else { xLeftOffset = -1; xRightOffset = 1; } if (y == 0) { yDownOffset = (int)height - 1; yUpOffset = 1; } else if (y == (int)height - 1) { yDownOffset = -1; yUpOffset = -((int)height - 1); } else { yDownOffset = -1; yUpOffset = 1; } } else { if (x == 0) { xLeftOffset = 0; xRightOffset = 1; } else if (x == (int)width - 1) { xLeftOffset = -1; xRightOffset = 0; } else { xLeftOffset = -1; xRightOffset = 1; } if (y == 0) { yDownOffset = 0; yUpOffset = 1; } else if (y == (int)height - 1) { yDownOffset = -1; yUpOffset = 0; } else { yDownOffset = -1; yUpOffset = 1; } } double nc = (double)SourceNoiseMap.GetValue(x, y); double nl = (double)SourceNoiseMap.GetValue(x + xLeftOffset, y); double nr = (double)SourceNoiseMap.GetValue(x + xRightOffset, y); double nd = (double)SourceNoiseMap.GetValue(x, y + yDownOffset); double nu = (double)SourceNoiseMap.GetValue(x, y + yUpOffset); lightIntensity = CalcLightIntensity(nc, nl, nr, nd, nu); lightIntensity *= LightBrightness; } else { lightIntensity = 1.0; } Color backgroundColor = Color.white; if (BackgroundImage != null) { backgroundColor = BackgroundImage.GetValue(x, y); } DestImage.SetValue(x, y, CalcDestColor(destColor, backgroundColor, lightIntensity)); } } }