You can do fun things with the hsv color model, like adjust saturation. I found some tight glsl hsv<->rgb converters…
vec3 rgb2hsv(vec3 c)
{
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
vec3 hsv2rgb(vec3 c)
{
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
Using this I adapted my contour line to be a ‘stripe’ on/off per meter and then desaturate the ‘on’ zone by 50%. It gives a cool topographical effect and breaks up the gridiness of the splat map.
That was wasn’t mixing in diagonal neighbor. Now it does. And with more transparent random color and more clamped random texture transparency, combine with the desaturation elevation strips. This is starting to have a more natural look. So then there can be fire that moves (like Life game?) or burned desatured areas, or toxic spills, or whatever and it should be able to be seen in the splatmap really nicely allowing for a dynamic and diverse world. Now when combined with my flowing water layer from my earlier prototype also using glsl… this is gonna be really cool.
Even though my goal is a city builder, it does look cool from the ground. The various things going on, how the vertex and splat grids don’t quite align visually (but do) and the elevation stripes create a visual complexity that hides how little data there really is.