My game is a voxel game and I'd like to color the bottom front corner of every voxel the same way.
I'm getting the position of a pixel in world space like this:
vec3 _pixel_world_pos = (CAMERA_MATRIX * vec4(VERTEX, 1.0)).xyz;
I thought I'd start by cutting each voxel into 10 sections and coloring each of them a different color. So I wrote this:
if (mod(_pixel_world_pos.z, 1.0) < .1 && mod(_pixel_world_pos.z, 1.0) > 0.00) {
ALBEDO = vec3(1, 1, 1);
}
if (mod(_pixel_world_pos.z, 1.0) < .2 && mod(_pixel_world_pos.z, 1.0) > 0.10) {
ALBEDO = vec3(.1, .1, .1);
}
if (mod(_pixel_world_pos.z, 1.0) < .3 && mod(_pixel_world_pos.z, 1.0) > 0.20) {
ALBEDO = vec3(.12, .0, .330);
}
if (mod(_pixel_world_pos.z, 1.0) < .4 && mod(_pixel_world_pos.z, 1.0) > 0.30) {
ALBEDO = vec3(.9, .0, .39);
}
if (mod(_pixel_world_pos.z, 1.0) < .5 && mod(_pixel_world_pos.z, 1.0) > 0.40) {
ALBEDO = vec3(.7, .7, .7);
}
if (mod(_pixel_world_pos.z, 1.0) < .6 && mod(_pixel_world_pos.z, 1.0) > 0.50) {
ALBEDO = vec3(.9, .590, .9);
}
if (mod(_pixel_world_pos.z, 1.0) < .7 && mod(_pixel_world_pos.z, 1.0) > 0.60) {
ALBEDO = vec3(.0, .34, .39);
}
if (mod(_pixel_world_pos.z, 1.0) < .8 && mod(_pixel_world_pos.z, 1.0) > 0.70) {
ALBEDO = vec3(.04, .22, .22);
}
if (mod(_pixel_world_pos.z, 1.0) < .9 && mod(_pixel_world_pos.z, 1.0) > 0.8) {
ALBEDO = vec3(.2, .940, .99);
}
if (mod(_pixel_world_pos.z, 1.0) < 1.0 && mod(_pixel_world_pos.z, 1.0) > 0.90) {
ALBEDO = vec3(.5, .940, .34);
}
The result is this:

I was expecting each voxel to be cut into 10 sections, but here you can see that each voxel is cut into 14 sections with the first 4 colors repeating.
My question is why are the first 4 repeating? And how can I cut the voxels into 10 sections with no repeating colors?
Thanks!