โ† All examples

procedural textures

Pebbled and suede leather

Generate tileable PBR maps of leather: rounded pebble grain with a crease network, fine creases, pores, fold wrinkles, burnished wear, a cracked old finish or a brushed suede nap. Use for car seats, sofas, bags, saddles, jackets, book covers and armchairs.

Recorded render of Pebbled and suede leather

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • blender_material.py
  • component.json
  • leather_grain.py
  • material.tres
  • 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
grain_cells, grain_depth, fine_grain, pores, wrinkles, wear, cracking, nap and 4 more
Presets
default, saddle_brown, pebbled_navy, aged_oxblood, suede_tan
Tileable
yes
Command line
python leather_grain.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

The grain is a warped cellular pattern with noise creases, a stylized stand-in for real hide structure; species-specific grains (ostrich, crocodile, snake) are out of scope. Wrinkles are noise crests, not simulated folds, and the suede nap is a fibre-noise and brushing-patch approximation without directional sheen. Wear and cracks are noise-driven and spread evenly rather than following seams or edges. Details finer than two pixels are dropped at small sizes. Occlusion is a blurred-height estimate, not ray traced. Colours are artistic, not measured.