123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- -- Node texture tests
- local S = minetest.get_translator("testnodes")
- minetest.register_node("testnodes:6sides", {
- description = S("Six Textures Test Node"),
- tiles = {
- "testnodes_normal1.png",
- "testnodes_normal2.png",
- "testnodes_normal3.png",
- "testnodes_normal4.png",
- "testnodes_normal5.png",
- "testnodes_normal6.png",
- },
- groups = { dig_immediate = 2 },
- })
- minetest.register_node("testnodes:anim", {
- description = S("Animated Test Node"),
- tiles = {
- { name = "testnodes_anim.png",
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 4.0,
- }, },
- },
- groups = { dig_immediate = 2 },
- })
- -- Node texture transparency test
- local alphas = { 64, 128, 191 }
- for a=1,#alphas do
- local alpha = alphas[a]
- -- Transparency taken from texture
- minetest.register_node("testnodes:alpha_texture_"..alpha, {
- description = S("Texture Alpha Test Node (@1)", alpha),
- drawtype = "glasslike",
- paramtype = "light",
- tiles = {
- "testnodes_alpha"..alpha..".png",
- },
- use_texture_alpha = "blend",
- groups = { dig_immediate = 3 },
- })
- -- Transparency set via texture modifier
- minetest.register_node("testnodes:alpha_"..alpha, {
- description = S("Alpha Test Node (@1)", alpha),
- drawtype = "glasslike",
- paramtype = "light",
- tiles = {
- "testnodes_alpha.png^[opacity:" .. alpha,
- },
- use_texture_alpha = "blend",
- groups = { dig_immediate = 3 },
- })
- end
- -- Generate PNG textures
- local function mandelbrot(w, h, iterations)
- local r = {}
- for y=0, h-1 do
- for x=0, w-1 do
- local re = (x - w/2) * 4/w
- local im = (y - h/2) * 4/h
- -- zoom in on a nice view
- re = re / 128 - 0.23
- im = im / 128 - 0.82
- local px, py = 0, 0
- local i = 0
- while px*px + py*py <= 4 and i < iterations do
- px, py = px*px - py*py + re, 2 * px * py + im
- i = i + 1
- end
- r[w*y+x+1] = i / iterations
- end
- end
- return r
- end
- local function gen_checkers(w, h, tile)
- local r = {}
- for y=0, h-1 do
- for x=0, w-1 do
- local hori = math.floor(x / tile) % 2 == 0
- local vert = math.floor(y / tile) % 2 == 0
- r[w*y+x+1] = hori ~= vert and 1 or 0
- end
- end
- return r
- end
- local fractal = mandelbrot(512, 512, 128)
- local checker = gen_checkers(512, 512, 32)
- local floor = math.floor
- local abs = math.abs
- local data_mb = {}
- local data_ck = {}
- for i=1, #fractal do
- data_mb[i] = {
- r = floor(fractal[i] * 255),
- g = floor(abs(fractal[i] * 2 - 1) * 255),
- b = floor(abs(1 - fractal[i]) * 255),
- a = 255,
- }
- data_ck[i] = checker[i] > 0 and "#F80" or "#000"
- end
- local textures_path = minetest.get_modpath( minetest.get_current_modname() ) .. "/textures/"
- minetest.safe_file_write(
- textures_path .. "testnodes_generated_mb.png",
- minetest.encode_png(512,512,data_mb)
- )
- minetest.safe_file_write(
- textures_path .. "testnodes_generated_ck.png",
- minetest.encode_png(512,512,data_ck)
- )
- minetest.register_node("testnodes:generated_png_mb", {
- description = S("Generated Mandelbrot PNG Test Node"),
- tiles = { "testnodes_generated_mb.png" },
- groups = { dig_immediate = 2 },
- })
- minetest.register_node("testnodes:generated_png_ck", {
- description = S("Generated Checker PNG Test Node"),
- tiles = { "testnodes_generated_ck.png" },
- groups = { dig_immediate = 2 },
- })
|