← ClaudeAtlas

procedural-materials-and-shaderslisted

Build materials and shader graphs from Python by enabling nodes, instantiating shader nodes, setting socket default values, and wiring links. Targets Blender 5.2 LTS EEVEE Next and Cycles. Avoids the (deferred to 2027) Layered Textures roadmap.
TMHSDigital/Blender-Developer-Tools · ★ 13 · AI & Automation · score 66
Install: claude install-skill TMHSDigital/Blender-Developer-Tools
# Procedural Materials and Shaders ## Trigger Use this skill when the user: - Wants to create or edit materials from Python rather than the shader editor - Mentions `bpy.data.materials`, `node_tree`, `ShaderNodeBsdfPrincipled`, `inputs[...].default_value` - Needs to generate many materials parametrically (asset libraries, batch import, color variations) - Asks about EEVEE Next vs Cycles material differences - Asks about "Layered Textures" or "the new shader system" (see version-correctness section) ## Required inputs - **What kind of material**: opaque PBR, transparent, emissive, glass, hair, volumetric - **What controls you want exposed**: base color, metallic, roughness, IOR, normal map, etc. - **Render engine target**: Cycles, EEVEE Next, or both. Most Principled BSDF setups port between the two without changes. ## The minimum viable material Every Python-built material follows the same four steps: 1. Create the material datablock with `bpy.data.materials.new(name=...)`. 2. Enable nodes with `mat.use_nodes = True`. This populates `mat.node_tree` with a default Principled BSDF and Material Output. You can keep them or wipe them. 3. Add nodes to `mat.node_tree.nodes` and configure their `inputs[...].default_value`. 4. Wire `mat.node_tree.links` between sockets. ```python import bpy def make_principled_material(name, base_color=(0.8, 0.8, 0.8, 1.0), metallic=0.0, roughness=0.5): """Create a material with a single Principled BSDF wired to Material Output."""