โ† All examples

procedural textures

Pixel-art wooden planks with grain, knots and nails

Generate a tileable pixel-art plank floor or wall at a chosen art resolution: staggered boards with dark gaps, highlight and shadow edges, hand-drawn grain lines, knots and nail heads, with per-pixel normal, height, roughness and occlusion maps. Use for floors, decks, crates and cabin walls in 2D games.

Recorded render of Pixel-art wooden planks with grain, knots and nails

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • blender_material.py
  • component.json
  • material.tres
  • pixel_wood_planks.py
  • pngio.py
  • preview.png
  • test_package.py
  • texkit.py
  • verification/native.json

How it works

Entry point
generate
Maps
albedo, normal, roughness, height, ao
Parameters
art_pixels, planks, boards_per_row, grain, waviness, knots, nails, relief and 3 more
Presets
default, dark_walnut, pale_birch, weathered_grey
Tileable
yes
Command line
python pixel_wood_planks.py --size 1024 --seed 7 --preset NAME --out DIR [--width W --height H] [--set NAME=VALUE] [--directx-normal] [--orm]
Godot material
material.tres
Blender builder
blender_material.build_material(folder)

Recorded checks

godot 4.7.2.stable.official.ed1daf0bf

  • command_line_generates_declared_maps
  • maps_decode
  • maps_have_declared_size_and_channels
  • maps_tile_without_a_seam
  • normal_vectors_unit_length_facing_out
  • maps_carry_detail
  • godot_imports_the_maps
  • godot_material_template_loads_every_map
  • godot_compatibility_render
  • capture_shows_the_textured_surface
  • blender_builds_the_material

Limits to consider

Stylized pixel art, not a physically based wood: grain is a pattern of one-pixel lines rather than growth rings, and the light from the top left is baked into the edge colours. Boards run across the tile only, and plank rows are limited to a quarter of the art size. Nails are single dark pixels with a highlight on tall planks. Roughness and height are values per drawn class; the normal map treats each art pixel as a flat facet. Output sizes that are not a whole multiple of art_pixels give art pixels of unequal widths. Occlusion is a blurred-height estimate posterized to eighths.