godot-3d-materials
Expert patterns for Godot 3D PBR materials using StandardMaterial3D including albedo, metallic/roughness workflows, normal maps, ORM texture packing…
Skill by bgrenat
Chalk Labs
Need help deploying godot-3d-materials?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bgrenat-godot-3d-materials
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/godot-3d-materials
What's inside
- Skill name
godot-3d-materials- Description
- Expert patterns for Godot 3D PBR materials using StandardMaterial3D including albedo, metallic/roughness workflows, normal maps, ORM texture packing, transparency modes, and shader conversion. Use when creating realistic 3D surfaces, PBR workflows, or material optimization. Trigger keywords: StandardMaterial3D, BaseMaterial3D, albedo_texture, metallic, metallic_texture, roughness, roughness_texture, normal_texture, normal_enabled, orm_texture, transparency, alpha_scissor, alpha_hash, cull_mode, ShaderMaterial, shader parameters.
- License
- LGPL-3.0
- Instructions
- 517 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: 517 lines (spec recommends under 500)
Files (16)
- SKILL.md
- decal_placer_expert.gd · scripts/
- depth_precision_fix.gd · scripts/
- instance_uniform_batching.gdshader · scripts/
- material_batcher.gd · scripts/
- material_fx.gd · scripts/
- organic_material.gd · scripts/
- pbr_material_builder.gd · scripts/
- pbr_orm_packer.gd · scripts/
- shader_state_manager.gd · scripts/
- subsurface_scattering_setup.gd · scripts/
- transparency_sorting_fix.gd · scripts/
- triplanar_world.gdshader · scripts/
- triplanar_world_projection.gdshader · scripts/
- vertex_wind_sway.gdshader · scripts/
- triplanar_smooth.gdshader · shaders/
SKILL.md (first lines)
# 3D Materials
Expert guidance for PBR materials and StandardMaterial3D in Godot.
## NEVER Do
- **NEVER use separate metallic/roughness/AO textures** — Use ORM packing (1 RGB texture with Occlusion/Roughness/Metallic channels) to save texture slots and memory.
- **NEVER forget to enable normal_enabled** — Normal maps don't work unless you set `normal_enabled = true`. Silent failure is common.
- **NEVER use TRANSPARENCY_ALPHA for cutout materials** — Use TRANSPARENCY_ALPHA_SCISSOR or TRANSPARENCY_ALPHA_HASH instead. Full alpha blending is expensive and causes sorting issues.
- **NEVER set metallic = 0.5** — Materials are either metallic (1.0) or dielectric (0.0). Values between are physically incorrect except for rust/dirt transitions.
- **NEVER use emission without HDR** — Emission values > 1.0 only work with HDR rendering enabled in Project Settings.
- **NEVER use transparent materials for large environmental surfaces** — Transparent objects cannot rely on the Z-buffer for early fragment rejection, resulting in massive overdraw. If only a tiny part of a mesh is transparent, split the mesh into two surfaces: one opaque, one transparent.
- **NEVER create hundreds of slightly varied StandardMaterial3D resources if performance is dropping** — Godot minimizes GPU state changes by automatically reusing the underlying shader for materials that share the exact same configuration flags (checkboxes). Try to group your material configurations.
- **NEVER attempt to fix Z-fighting strictly by moving objects further apart** — Floating-point precision degrades over distance. To fix flickering textures, increase your Camera3D's `Near` plane property and decrease the `Far` property to compress the precision range.
- **NEVER use unique Material resources per MeshInstance3D** — This breaks draw call batching. Use 'Instance Uniforms' to vary parameters while keeping a single shared material.
- **NEVER use Decals on dynamic moving actors without a Cull Mask** — Bullet holes should not stick to the player's face as they walk over them. Mask out character layers.
---
## Godot 4.7: Materials
- **AreaLight3D** pairs with emissive materials for physically correct rectangular emitters.
- `Texture2D.get_format()` unified on base class for portable compressed textures.
## Available Scripts
> **MANDATORY**: Read the appropriate script before implementing the corresponding pattern.
### [material_fx.gd](scripts/material_fx.gd)
Runtime material property animation for damage effects, dissolve, and texture swapping. Use for dynamic material state changes.
### [pbr_material_builder.gd](scripts/pbr_material_builder.gd)
Runtime PBR material creation with ORM textures and triplanar mapping.
### [organic_material.gd](scripts/organic_material.gd)
Subsurface scattering and rim lighting setup for organic surfaces (skin, leaves). Use for realistic character or vegetation materials.
### [triplanar_world.gdshader](scripts/triplanar_world.gdshader)
Triplanar projection shader for terrain without UV mapping. Blends textures based on surface normals. Use for cliffs, caves, or procedural terrain.
### [pbr_orm_packer.gd](scripts/pbr_orm_packer.gd)
Expert PBR resource utility. Packs Ambient Occlusion, Roughness, and Metallic into a single ORM texture to optimize VRAM and draw calls.
### [vertex_wind_sway.gdshader](scripts/vertex_wind_sway.gdshader)
High-performance GPU-driven foliage animation. Uses vertex world coordinates and vertex color weight painting to simulate wind without skeletons.
### [triplanar_world_projection.gdshader](scripts/triplanar_world_projection.gdshader)
UV-less environment mapping. Projects textures along X/Y/Z axes for organic blending over complex rocks and terrain.
### [subsurface_scattering_setup.gd](scripts/subsurface_scattering_setup.gd)
Configuring realistic organic materials. Covers Skin Mode, Transmittance, and depth scattering settings for Forward+ rendering.
### [instance_uniform_batching.gdshader](scripts/instance_uniform_batching.gdshader)
Architecture pattern for high-speed batching. Allows 10,000 meshes to share one material while maintaining unique colors or health states via instance uniforms.
### [decal_placer_expert.gd](scripts/decal_placer_expert.gd)
Dynamic 3D decal system with cull masking and life-cycle management for impact effects.
### [transparency_sorting_fix.gd](scripts/transparency_sorting_fix.gd)
Solving visual artifacts using Alpha Hash and Depth Prepass strategies.
### [shader_state_manager.gd](scripts/shader_state_manager.gd)
Clean pattern for toggling shader-based visual states (Frozen, Burned) on multiple entities.
### [depth_precision_fix.gd](scripts/depth_precision_fix.gd)
Camera-side fix for Z-fighting and texture flickering in large-scale worlds.
### [material_batcher.gd](scripts/material_batcher.gd)
Global override system to ensure environmental meshes draw in optimized, state-locked batches.
---
## StandardMaterial3D Basics
### PBR Texture Setup
```gdscript
# Create physically-based material
var mat := StandardMaterial3D.new()
# Albedo (base color)
mat.albedo_texture = load("res://textures/wood_albedo.png")
mat.albedo_color = Color.WHITE # Tint multiplier
# Normal map (surface detail)
mat.normal_enabled = true # CRITICAL: Must enable first
mat.normal_texture = load("res://textures/wood_normal.png")
mat.normal_scale = 1.0 # Bump strength
# ORM Texture (R=Occlusion, G=Roughness, B=Metallic)
mat.orm_texture = load("res://textures/wood_orm.png")
# Alternative: Separate textures (less efficient)
# mat.roughness_texture = load("res://textures/wood_roughness.png")
# mat.metallic_texture = load("res://textures/wood_metallic.png")
# mat.ao_texture = load("res://textures/wood_ao.png")
# Apply to mesh
$MeshInstance3D.material_override = mat
```
---
## Metallic vs Roughness
### Metal Workflow
```gdscript
# Pure metal (steel, gold, copper)
mat.metallic = 1.0
mat.roughness = 0.2 # Polished metal
mat.albedo_color = Color(0.8, 0.8, 0.8) # Metal tint
# Rough metal (iron, aluminum)
mat.metallic = 1.0
mat.roughness = 0.7
```
### Dielectric WorkflowFrom bgrenat/godot-game-dev-studio, LGPL-3.0.
More from bgrenat/godot-game-dev-studio
- 0.652score
gamedev-level-design
bgrenat
Imported awesome-gamedev-agent-skills guidance for level-design workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-input-systems
bgrenat
Imported awesome-gamedev-agent-skills guidance for input-systems workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-audio-design
bgrenat
Imported awesome-gamedev-agent-skills guidance for audio-design workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-itch-publish
bgrenat
Imported awesome-gamedev-agent-skills guidance for itch-publish workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-card-game
bgrenat
Imported awesome-gamedev-agent-skills guidance for card-game workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-dialogue-systems
bgrenat
Imported awesome-gamedev-agent-skills guidance for dialogue-systems workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-fps-shooter
bgrenat
Imported awesome-gamedev-agent-skills guidance for fps-shooter workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-game-ai
bgrenat
Imported awesome-gamedev-agent-skills guidance for game-ai workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-game-feel
bgrenat
Imported awesome-gamedev-agent-skills guidance for game-feel workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-camera-systems
bgrenat
Imported awesome-gamedev-agent-skills guidance for camera-systems workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-game-ui-ux
bgrenat
Imported awesome-gamedev-agent-skills guidance for game-ui-ux workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-performance-optimization
bgrenat
Imported awesome-gamedev-agent-skills guidance for performance-optimization workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9
Signals
- Stars
- 24
- Forks
- 3
- Open issues
- 0
- Last commit (this folder)
- Oct 12, 2026 (18 days ago)
- Last release
- Oct 12, 2026 (18 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- LGPL-3.0
- Repository
- github.com/bgrenat/godot-game-dev-studio
- Website
- powehi.eu
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from bgrenat
- 0.652score
gamedev-fps-shooter
bgrenat
Imported awesome-gamedev-agent-skills guidance for fps-shooter workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-dialogue-systems
bgrenat
Imported awesome-gamedev-agent-skills guidance for dialogue-systems workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-audio-design
bgrenat
Imported awesome-gamedev-agent-skills guidance for audio-design workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-camera-systems
bgrenat
Imported awesome-gamedev-agent-skills guidance for camera-systems workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-card-game
bgrenat
Imported awesome-gamedev-agent-skills guidance for card-game workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9 - 0.652score
gamedev-game-ai
bgrenat
Imported awesome-gamedev-agent-skills guidance for game-ai workflows in game development projects.
SkillAFreshness: A★ 24Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get godot-3d-materials running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
godot-3d-materials skill. Agent Mart. https://agentmart.dev/skills/bgrenat-godot-3d-materials (last updated 2026-10-24)