blockbench-pbr-materials
Create and manage PBR (Physically Based Rendering) materials in Blockbench using MCP tools. Use when working with texture_set.json files, creating normal/height/MER maps, configuring material properties for Minecraft Bedrock RTX, or setting up multi-channel texture workflows.
Install
npx skills add https://github.com/jasonjgardner/blockbench-mcp-project --skill blockbench-pbr-materialsSKILL.md
Blockbench PBR Materials
Create and manage PBR materials for Minecraft Bedrock RTX and other PBR workflows.
Available Tools
| Tool | Purpose |
|---|---|
create_pbr_material |
Create new PBR material with texture channels |
configure_material |
Configure material properties |
list_materials |
List all PBR materials |
get_material_info |
Get detailed material info |
import_texture_set |
Import texture_set.json file |
assign_texture_channel |
Assign texture to PBR channel |
save_material_config |
Export texture_set.json |
PBR Channels
| Channel | Description | Format |
|---|---|---|
color |
Base color/albedo | RGB texture |
normal |
Normal map for surface detail | RGB (tangent space) |
height |
Heightmap for parallax/displacement | Grayscale |
mer |
Metalness/Emissive/Roughness packed | R=Metal, G=Emissive, B=Roughness |
Quick Start
Create Basic PBR Material
create_pbr_material: name="stone_pbr", textures={
color: "stone_color",
normal: "stone_normal"
}
Create Full Material
create_pbr_material: name="gold_block", textures={
color: "gold_color",
normal: "gold_normal",
height: "gold_height",
mer: "gold_mer"
}
Material Configuration
Set Material Properties
configure_material: material_id="stone_pbr", config={
metalness_emissive_roughness: {
metalness: 0.0,
emissive: 0.0,
roughness: 0.8
}
}
Metallic Material
configure_material: material_id="gold_block", config={
metalness_emissive_roughness: {
metalness: 1.0,
emissive: 0.0,
roughness: 0.3
}
}
Emissive Material (Glowing)
configure_material: material_id="glowstone", config={
metalness_emissive_roughness: {
metalness: 0.0,
emissive: 1.0,
roughness: 0.9
}
}
Texture Assignment
Assign Individual Channel
assign_texture_channel: material_id="stone_pbr", channel="height",
texture_id="stone_heightmap"
Replace Channel
assign_texture_channel: material_id="stone_pbr", channel="normal",
texture_id="stone_normal_v2"
Import/Export
Import texture_set.json
import_texture_set: file_path="C:/packs/stone_texture_set.json"
Export texture_set.json
save_material_config: material_id="stone_pbr",
output_path="C:/packs/textures/stone_texture_set.json"
Querying Materials
List All Materials
list_materials
# Returns: [{uuid, name, textureCount, hasColor, hasNormal, hasHeight, hasMER}]
Get Material Details
get_material_info: material_id="stone_pbr"
# Returns full channel assignments and config
MER Texture Format
The MER channel packs three properties into RGB:
- R (Red): Metalness (0=dielectric, 1=metal)
- G (Green): Emissive intensity (0=none, 1=full glow)
- B (Blue): Roughness (0=smooth/shiny, 1=rough/matte)
Creating MER Texture
# Create blank MER texture
create_texture: name="block_mer", width=16, height=16,
fill_color=[0, 0, 204, 255] # Non-metal, no glow, 80% rough
# Paint metallic areas (R channel)
paint_with_brush: texture_id="block_mer", coordinates=[{x: 8, y: 8}],
brush_settings={color: "#FF0000", size: 4} # Metallic spot
# Paint glowing areas (G channel)
paint_with_brush: texture_id="block_mer", coordinates=[{x: 4, y: 4}],
brush_settings={color: "#00FF00", size: 2, blend_mode: "add"}
Common Material Types
Stone/Rock
create_pbr_material: name="stone", textures={color: "stone_color", normal: "stone_normal"}
configure_material: material_id="stone", config={
metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.9}
}
Metal (Gold, Iron)
create_pbr_material: name="gold", textures={color: "gold_color", normal: "gold_normal", mer: "gold_mer"}
configure_material: material_id="gold", config={
metalness_emissive_roughness: {metalness: 1.0, emissive: 0, roughness: 0.25}
}
Glass/Crystal
create_pbr_material: name="glass", textures={color: "glass_color"}
configure_material: material_id="glass", config={
metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.05}
}
Glowing Block
create_pbr_material: name="lamp", textures={color: "lamp_color", mer: "lamp_mer"}
configure_material: material_id="lamp", config={
metalness_emissive_roughness: {metalness: 0, emissive: 1.0, roughness: 0.8}
}
Subsurface Scattering (Bedrock 1.21.30+)
configure_material: material_id="leaves", config={
subsurface_scattering: {
red: 0.3,
green: 0.8,
blue: 0.2
}
}
Workflow Example
Complete Block Material
# 1. Create base textures
create_texture: name="brick_color", width=16, height=16
create_texture: name="brick_normal", width=16, height=16, fill_color="#8080FF"
create_texture: name="brick_mer", width=16, height=16, fill_color=[0, 0, 200, 255]
# 2. Paint textures (color, normal, mer)
paint_with_brush: texture_id="brick_color", ...
paint_with_brush: texture_id="brick_normal", ...
# 3. Create material
create_pbr_material: name="brick", textures={
color: "brick_color",
normal: "brick_normal",
mer: "brick_mer"
}
# 4. Configure
configure_material: material_id="brick", config={
metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.85}
}
# 5. Export
save_material_config: material_id="brick", output_path="./textures/brick_texture_set.json"
Tips
- Normal maps use tangent space (blue-ish color, RGB where B is up)
- Height maps are grayscale (white=high, black=low)
- MER channels can be painted separately or as a combined texture
- Use
list_materialsto see what's available - Always test in-game with RTX enabled for accurate preview
- Roughness 0 = mirror-like, Roughness 1 = completely diffuse
Related skills
godot-gdscript-patternswshobson16KMaster Godot 4 GDScript patterns including signals, scenes, state machines, and optimization. Use when building Godot games, implementing game systems, or learning GDScript best practices.game-enginegithub13KExpert skill for building web-based game engines and games using HTML5, Canvas, WebGL, and JavaScript. Use when asked to create games, build game engines, implement game physics, handle collision detection, set up game loops, manage sprites, add game controls, or work with 2D/3D rendering. Covers techniques for platformers, breakout-style games, maze games, tilemaps, audio, multiplayer via WebRTC, and publishing games.unity-ecs-patternswshobson11KMaster Unity ECS (Entity Component System) with DOTS, Jobs, and Burst for high-performance game development. Use when building data-oriented games, optimizing performance, or working with large entity counts.msw-defaultplayermsw-git7.9KMSW DefaultPlayer (character) management. Use the msw-general ModelBuilder to inspect/patch DefaultPlayer.model and Player.model, add/remove components, configure movement speed / jump force / HP / camera, and per-map-mode movement components. Use for DefaultPlayer model, player components, movement speed, jump force, HP, camera, physics. Keywords: player, DefaultPlayer, speed, jump, HP, camera, gravity, revive, respawn, character.
