diff --git a/colormap_generator.lua b/colormap_generator.lua new file mode 100644 index 000000000..cc6c6a31e --- /dev/null +++ b/colormap_generator.lua @@ -0,0 +1,32 @@ +dofile("init.lua") + +-- This generates images necessary to colorize 16 Minetest nodes in 4096 colors. +-- It serves as a demonstration of what you can achieve using colormapped nodes. +-- It is be useful for grass or beam or glass nodes that need to blend smoothly. + +-- Sample depth rescaling is done according to the algorithm presented in: +-- +local max_sample_in = math.pow(2, 4) - 1 +local max_sample_out = math.pow(2, 8) - 1 + +for r = 0,15 do + local pixels = {} + for g = 0,15 do + if nil == pixels[g + 1] then + pixels[g + 1] = {} + end + for b = 0,15 do + local color = { + math.floor((r * max_sample_out / max_sample_in) + 0.5), + math.floor((g * max_sample_out / max_sample_in) + 0.5), + math.floor((b * max_sample_out / max_sample_in) + 0.5), + } + pixels[g + 1][b + 1] = color + end + end + local filename = "colormap_" .. tostring(r) .. ".tga" + tga_encoder.image(pixels):save( + filename, + { color_format="A1R5G5B5" } -- waste less bits + ) +end