โ† All examples

procedural textures

Pixel-art roof tiles in overlapping courses

Generate a tileable pixel-art roof at a chosen art resolution: courses laid from the eaves up with square, round fish-scale or pointed tile ends, cast shadows on the course below, lit and shaded edges, tints, wood grain and moss, with per-pixel normal, height, roughness and occlusion maps. Use for 2D houses.

Recorded render of Pixel-art roof tiles in overlapping courses

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • blender_material.py
  • component.json
  • material.tres
  • pixel_roof_tiles.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, course_pairs, tiles_per_course, end_shape, overlap, grain, moss, relief and 3 more
Presets
default, blue_slate, verdigris_scales, wooden_shingles
Tileable
yes
Command line
python pixel_roof_tiles.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 with the light from the top left baked into the tile edges and shadows; it shows a flat roof plane, with no ridges, valleys, hips or eaves. Every other course shifts by half a tile, so the course count is even. Tile ends are three fixed shapes, and wooden shingles vary only in width. Roughness and height are values per drawn class, and 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.