Defold PBR Asset - First Indie Lit Material Keep Hold 2026
![]()
If you searched defold pbr after the Foundation’s quiet August 6 announcement, you do not need another “Defold finally does real 3D” pep talk. You need a keep/hold: can a small team add defold/asset-pbr as a dependency, assign /defold-pbr/pbr.material to one glTF model, place a Light component, prove the surface responds to the LightBuffer, and decide KEEP lab / HOLD ship rewrite before anyone conflates this reusable asset library with the older IBL-heavy Defold PBR extension?
This URL owns that evening. It is not How to Use Defold 1.13.1 Lights (Light components / LightBuffer evening without the asset-pbr material stack). It is not Defold morph targets (blend shapes on stable). It is defold pbr via the official asset-pbr library paired with new Lights — one lit material smoke with a falsifiable receipt.
Why this matters now
On August 6, 2026, Pawel posted Defold PBR Asset on the Defoldmine: a new assets library for physically based rendering, published a bit quietly because it requires 1.13.1 with the new Light components (still in beta at announcement time). The repo is defold/asset-pbr. The Foundation’s own wording is the SERP gap: this asset is a re-usable system for games, and it works with the new Light components — which is deliberately different from the older Defold PBR extension that layers image-based lighting from HDR environment maps on top of related shaders.
Mid-August 2026 still needs the keep/hold because Discord will jump from “Defold has PBR now” to three wrong conclusions in under an hour:
- “Merge 1.13.1-beta into the Steam depot so the metal looks shiny.”
- “asset-pbr means we get Blender-viewport IBL for free.”
- “Rewrite every unlit material this weekend.”
Stock unlit / simple lit paths still ship most Defold games. asset-pbr is for teams that need metallic-roughness response to punctual lights on a spike branch — not ego, not a partner-deck synonym for “AAA lighting.”
Why this URL wins the SERP gap: Forum + GitHub README exist. The catalog already owns a Defold 1.13.1 lights-only evening. SERP still lacks an indie P1–P6 KEEP/HOLD that separates asset-pbr from defold-pbr extension, names LightBuffer honestly, and refuses “looks like Blender” claims without IBL.
Who this is for
| Reader | Outcome tonight |
|---|---|
| Beginners | One model uses /defold-pbr/pbr.material and brightens when a light moves |
| Developers | Dependency install, sampler names, LightBuffer loop, render-script prerequisites, failure modes |
| Creators | Discord paste that kills “shiny like Blender” FOMO |
| Companies | CapEx four-liner — lab PBR material ≠ ship lighting rewrite |
| Search | Primary keyword defold pbr |
Time: 75–120 minutes on a throwaway 1.13.1-beta project (or your existing lights spike).
Prerequisites: Defold 1.13.1 (beta or later when stable lands) with Light components available, a disposable project or spike branch, one glTF/glB or built-in model, and honesty that ship branches stay on your last stable Defold until you re-run P1–P6 after a stable cut.
Facts checked August 17, 2026: Re-read the forum PBR asset thread and
asset-pbrREADME on your machine tonight. Light APIs and beta status move — do not trust an August Discord screenshot of someone else’s Outline.
Plain vocabulary
asset-pbr (this evening)
Official reusable metallic-roughness PBR material and shader stack under /defold-pbr/ after you fetch the library. Provides base color, metallic-roughness, normal/occlusion/emissive support, and punctual lights from Defold’s light component buffer. Image-based lighting is intentionally left out so extensions can inject extra terms.
defold-pbr extension (not the same product)
Older / parallel community–Foundation extension path that adds image-based lighting from HDR environment maps on top of related shaders. Forum staff clarified on August 8: the extension is what makes models look “nice and shiny” like Blender viewports; the asset library alone can look flat if you expected IBL. Do not claim asset-pbr KEEP equals “Blender match.”
LightBuffer / light components
1.13.1 editor Light components (ambient, directional, point, spot) feed built-in lighting.glsl / LightBuffer. asset-pbr shaders include that lighting path — they do not invent a custom light uniform array. Pair with the lights evening if you have never placed Outline lights.
PbrMaterial / sampler names
Model-component constants and glTF sampler names the material expects (PbrMetallicRoughness_baseColorTexture, metallic-roughness, normal, occlusion, emissive). Wrong sampler rename in a custom export pipeline → black or unlit-looking results that look like “PBR is broken.”
KEEP lab / HOLD ship
KEEP means the spike branch may keep experimenting with asset-pbr materials in a lab collection. HOLD means Steam / partner builds do not get a full-game PBR rewrite, beta merge, or “we shipped Defold PBR” deck line until receipts pass and stable engine + re-run land.
What this evening is not
| Need | Use this URL | Use that instead |
|---|---|---|
| Editor lights / LightBuffer first smoke | Pair after P1 | Defold 1.13.1 lights evening |
| Morph targets / blend shapes | No | Defold morph targets spike |
| Steam collection / save-path audit | No | Defold Steam desktop collection audit |
| HDR IBL “Blender shiny” match | Night B only | Extension + asset per forum staff — not Night A receipt |
| Unity custom 2D light shapes | No | Wrong engine |
| Unreal Lumen / MegaLights | No | Wrong engine |
Monday ritual (Discord-ready)
Defold PBR asset keep/hold — Aug 17 2026
1) 1.13.1-beta spike + Fetch Libraries asset-pbr zip
2) Assign /defold-pbr/pbr.material to one model
3) One directional or point Light in Outline
4) Play: move light → material response screenshot
5) Write: asset-pbr ≠ IBL extension (no Blender-match claim)
6) Decision: KEEP lab / HOLD ship PBR rewrite
Receipt: defold_pbr_asset_receipt_v1.json
≠ lights-only evening · ≠ morph · ≠ Steam save audit
Company CapEx four-liner (diligence zip cover)
When finance or a publisher asks “should we merge beta for Defold PBR?”:
- Scope — one-model metallic-roughness smoke on a spike; not whole-catalog material rewrite (forum announcement).
- Cost — beta disruption + TA time to re-author samplers/exports; changelog “PBR asset” is not an SLA (
asset-pbrREADME). - Evidence — Play screenshot + P1–P6; explicit note that IBL shininess requires the extension path when claimed.
- Owner — named spike lead who freezes Steam-branch merges until stable Defold + re-run.
August art-week cadence (after the first evening)
Once P1–P6 pass on one model, do not auto-rewrite every prop because “PBR exists.” Use a light loop:
| Day | Action | Fail closed if… |
|---|---|---|
| Tue | Second material (dielectric vs metal) on lab only | Ship branch touched |
| Wed | Compare unlit vs pbr.material side-by-side screenshot | No receipt update |
| Thu | WebGL2 / HTML5 note if you ship browser builds | Assumed “works” with no build |
| Fri | Re-read forum thread + dependency pin note | Floating master.zip with no date |
Gates P1–P6 (falsifiable)
P1 — Engine + dependency isolation
Pass if: Ship editor stays on stable. Spike uses 1.13.1 (beta or newer) with Light components present. game.project lists the asset-pbr zip dependency. Project > Fetch Libraries succeeds and /defold-pbr/ appears.
Install shape from the README (use the next free dependencies#N index if #0 is taken):
[project]
dependencies#0 = https://github.com/defold/asset-pbr/archive/refs/heads/master.zip
Fail if: You fetch libraries on the Steam ship project, or you “remember” PBR from the old extension and skip Fetch Libraries.
Beginner tip: If /defold-pbr is missing after fetch, you did not fetch, you pointed at the wrong zip, or you are on an editor that cannot resolve the dependency — fix that before blaming the shader.
P2 — Assign the base material
Pass if: At least one Model uses /defold-pbr/pbr.material (or a material that includes the asset’s programs as documented). For imported glTF, sampler names match Defold’s model pipeline names from the README.
Fail if: You only change a color constant on an unlit built-in and call it PBR, or you rename glTF samplers in a custom exporter without updating the material.
Developer note: The shader binds glTF textures by sampler names populated by the model component and uses PbrMaterial / PbrMetallicRoughness uniform blocks. Those are normally filled when import is healthy — broken import = broken look.
P3 — Punctual lights present
Pass if: Outline contains at least one directional, point, or spot Light that should affect the model, plus ambient/light_info expectations documented for your render path. You know which light you will move in P4.
Fail if: Zero lights and you expect magic “PBR glow,” or you only toggled a skybox texture and assumed IBL.
If you have never placed Light components, stop and run the lights first evening gates L1–L4 on the same spike, then return here. This article assumes lights exist; it owns the material keep/hold.
P4 — Play smoke (LightBuffer response)
Pass if: In Play mode, moving or dimming the chosen light visibly changes the lit material (screenshot before/after). You write max_light / light count honesty if you hit engine caps. Render script draws models with camera view/projection and depth as in the README sketch — no custom PBR light constants required by the asset.
Fail if: Screenshot is Outline-only, or the surface never changes because you are still on an unlit material, wrong predicate, or a render script that never enables the light buffer path.
Creator tip: The Discord paste needs the Play frame, not the editor gizmo. Partners cannot diligence Outline icons.
P5 — Name the product (asset vs extension)
Pass if: Receipt explicitly states: Night A used asset-pbr only; IBL / “Blender shiny” is out of scope unless a separate Night B notes the extension. You can quote the forum distinction in one sentence.
Fail if: Deck says “Defold PBR matches Blender” after asset-only smoke, or someone swaps repo names in the receipt.
Staff answer from the thread (paraphrase for diligence): the extension adds HDR environment IBL; the asset is the reusable base that works with new Lights. Flat/dull under white lights with asset-only is a category error, not proof that PBR “doesn’t work.”
P6 — KEEP / HOLD decision + receipt
Pass if: Written decision: KEEP lab (continue material experiments on spike) and/or HOLD ship (no full rewrite, no beta merge, no partner claim). Receipt JSON filled. Steam / release branch frozen.
Fail if: “We’ll decide later” after a shiny screenshot, or KEEP silently becomes a silent merge.
Receipt template (defold_pbr_asset_receipt_v1.json)
{
"schema": "defold_pbr_asset_receipt_v1",
"date": "2026-08-17",
"engine": "Defold 1.13.1-beta (confirm your build)",
"dependency": "https://github.com/defold/asset-pbr/archive/refs/heads/master.zip",
"material_path": "/defold-pbr/pbr.material",
"model_asset": "lab/helmet_or_prop.glb",
"lights_present": ["directional", "point"],
"play_screenshot": "receipts/pbr_play_before_after.png",
"ibl_claimed": false,
"extension_used": false,
"webgl2_note": "hold or n/a — write yours",
"decision": "KEEP_lab_HOLD_ship_rewrite",
"owners": {
"spike": "name",
"ship_freeze": "name"
},
"gates": {
"P1": "pass",
"P2": "pass",
"P3": "pass",
"P4": "pass",
"P5": "pass",
"P6": "pass"
},
"notes": "asset-pbr ≠ defold-pbr extension IBL; ≠ lights-only evening"
}
Paste the path into your spike README. Diligence zips love boring JSON more than vibes.
Beginner first path (45–75 minutes)
- Duplicate a tiny project or create “pbr-lab” on 1.13.1-beta.
- Add the dependency line; Fetch Libraries; confirm
/defold-pbr. - Import or place one simple metallic prop (even a sphere with metallic-roughness textures).
- Assign
/defold-pbr/pbr.material. - Add one directional light aimed at the model; set a readable intensity.
- Play; orbit or move the light; save two screenshots.
- Fill the receipt; write KEEP lab / HOLD ship in Slack.
Common beginner mistakes:
- Fetching libraries once, then deleting the dependency line “to clean the project.”
- Expecting mirror-chrome looks without IBL / HDR.
- Testing on a pitch-black ambient with a nearly black base color and concluding PBR is broken.
- Mixing this lab with Steam save-path or collection packing on the same evening (save audit is a different night).
Working developer path (pipeline depth)
Render script sketch
The README’s typical model draw path is enough — view, projection, depth, cull, draw model predicate with frustum. The asset does not require custom PBR light constants; lights come from Defold’s buffer via /builtins/materials/lighting.glsl inclusion.
If your custom render script never draws models, or draws them with a predicate that skips the PBR material tag, P4 will fail in ways that look like “shader bug.”
Extension points (Night B only)
The fragment path centers on PBRLightData: get params → material info → calculate_pbr_light_data → optional custom specular / add_pbr_light_data → composite_pbr_light_data. Extensions that want IBL include base lighting and inject before composite. That is power-user Night B, not the Monday KEEP receipt.
Sampler and export checklist
| Check | Why |
|---|---|
| glTF metallic-roughness in ORM packing your pipeline expects | Wrong channel → plastic mud |
| Normal map space matches Defold import | Flipped normals kill lighting cues |
| Emissive not accidentally maxed | “Glow” mistaken for IBL |
| Alpha cutoff / unlit flags understood | Unlit flag on = P4 nonsense |
Light count vs MAX_LIGHT_COUNT |
Silent clamp mid-scene |
HTML5 / WebGL2 honesty
If you ship browser builds, write a WebGL2 note on the same receipt even if tonight’s smoke is desktop-only. Lights + custom materials are exactly where “works in editor, black on HTML5” shows up. HOLD browser claims until you build once.
Beta merge policy
Treat asset-pbr on 1.13.1-beta like any other beta lighting stack:
- Spike branch only until stable 1.13.1 (or later) lands.
- Pin a dependency commit or dated zip note when you leave lab — floating
master.zipis a reproducibility footgun. - Re-run P1–P6 after engine upgrade; do not inherit July lights screenshots as August PBR proof.
Failure modes (debug table)
| Symptom | Likely cause | Fix |
|---|---|---|
/defold-pbr missing |
No fetch / wrong dependency index | Fetch Libraries; check game.project |
| Model still unlit | Wrong material assignment | Assign pbr.material |
| Flat / dull vs Blender | Expected IBL from asset-only | Read P5; Night B extension if needed |
| Black model | Broken samplers / missing textures | Verify glTF names + import |
| No change when moving light | No lights / wrong render path | P3 + render script |
| Looks fine in Outline, wrong in Play | Screenshotting gizmos | P4 Play frames only |
| Works on desktop, fails HTML5 | WebGL2 / shader precision | Build once; write hold |
| “We shipped PBR” in deck | No receipt / silent merge | P6 HOLD + CapEx four-liner |
Creator share hooks
Discord one-liner: “Tried Defold asset-pbr with 1.13.1 Lights — one material Play smoke. KEEP lab. HOLD ship rewrite. Not the IBL extension.”
Devlog beat: Before/after light move on the same prop; caption the product name correctly.
Thumbnail / trailer caution: Do not grade the lab against a Blender lookdev still unless Night B IBL is actually in the build.
Trend body — what changed in August 2026
Until Lights landed in 1.13.1-beta, “Defold PBR” in community speech often meant the extension path and custom light feeding. The August 6 asset announcement reframes the stack: a reusable base library meant to sit under games and under extensions, wired to the new Light components. That is platform motion, not a year stamp.
Who it hits:
- Micro-studios on Lua/Defold who postponed 3D lighting until editor lights existed.
- TAs who already authored glTF metallic-roughness and need an engine material that respects it.
- Leads who must stop partner decks from equating “PBR asset posted” with “ship lighting done.”
What to do Monday: run P1–P6 on one prop. Do not rewrite the catalog. Do not claim Blender parity from asset-only. Pair with the lights evening if Outline lights are still unfamiliar.
Honest limits
- Not a full IBL / reflection-probe solution in the base asset.
- Not a promise that every mobile/HTML5 tier hits desktop lookdev.
- Not a reason to abandon unlit stylized art direction.
- Not morph, physics, or Steam packaging.
- Not a substitute for learning Light components first.
- Beta APIs and README paths can move — re-verify against live GitHub before teaching juniors from a screenshot.
Worked example — “helmet lab” evening
Imagine a one-person studio with a glTF scout helmet already exported for a vertical slice. Monday plan:
- Spike branch
feat/pbr-asset-labfrom last stable ship tag. - Side-by-side 1.13.1-beta editor; add asset-pbr dependency; fetch.
- Duplicate the helmet collection into
collections/lab_pbr.collection. - Assign
pbr.material; keep ship collection on prior material. - Place directional + point; ambient readable.
- Play; move point light across the visor; capture two frames.
- Write receipt with
ibl_claimed: false. - Slack: KEEP lab, HOLD ship rewrite, HOLD beta merge.
- Optional Thursday: HTML5 build note only if browser is in scope.
That is a complete keep/hold. Expanding to every prop is a different project with its own CapEx — not tonight’s P6.
Pairing with sibling formats
| Format | Role |
|---|---|
| This blog | Strategy + gates + KEEP/HOLD for defold pbr asset |
| Lights evening | Light components first |
| Morph targets | Animation/blend — separate night |
| Steam save audit | Packaging — separate night |
| Save root help | Fix symptom — not PBR |
| Lua scripting overview | Language context |
Key takeaways
- defold pbr in August 2026 often means the official
asset-pbrlibrary — reusable metallic-roughness that reads the new LightBuffer. - It was announced to work with 1.13.1 Light components; treat beta as spike-only until you re-run gates on stable.
- Assign
/defold-pbr/pbr.material, place real lights, prove Play response — Outline gizmos are not proof. - asset-pbr ≠ IBL extension; flat/dull under punctual lights is not automatic failure if you expected Blender HDR lookdev.
- Keep sampler names and
PbrMaterialblocks healthy; bad glTF import looks like “PBR broken.” - Render scripts must actually draw models with Defold’s lighting path — no custom light constants required by the base asset.
- Write KEEP lab / HOLD ship rewrite explicitly; screenshots without decisions become silent merges.
- CapEx four-liner: scope one model, cost is beta + TA time, evidence is P1–P6, owner freezes Steam merges.
- Do not cannibalize the lights-only evening — link it when lights are the gap; this URL owns the material library keep/hold.
- Pin dependency honesty; floating
master.zipwithout a date is a reproducibility risk. - HTML5/WebGL2 claims need a build note; desktop Play is not browser proof.
- Night B (extension IBL, custom
PBRLightDatainjection) is optional power — never mix into Night A receipt.
FAQ
What is Defold PBR asset-pbr?
It is the official reusable metallic-roughness material and shader library published for Defold projects, installable as a GitHub zip dependency, living under /defold-pbr after Fetch Libraries. It targets model rendering with punctual lights from the new Light components.
Does asset-pbr replace the older Defold PBR extension?
No. The asset is the reusable base. The extension adds features such as image-based lighting from HDR maps. Forum staff recommend extension + asset when you want the shiny environment look; do not expect that from asset-only.
Do I need Defold 1.13.1?
The August 6 announcement said the asset requires 1.13.1 with new Light components. Confirm against the live forum thread and your editor before teaching the team from memory.
Can I use asset-pbr without any lights?
You will not get a meaningful punctual lighting keep/hold. Ambient-only experiments are not a substitute for P3–P4. Place at least one directional, point, or spot light.
Why does my model look flat compared to Blender?
Blender viewports often show IBL / HDR environment lighting. The base asset intentionally omits IBL. White lights alone will not recreate that look. That is P5 honesty, not a broken install.
Where do I assign the material?
On the Model component, assign /defold-pbr/pbr.material (or a material that correctly uses the asset’s programs). Confirm after Fetch Libraries that the path exists.
What sampler names should glTF use?
Keep Defold’s generated names such as PbrMetallicRoughness_baseColorTexture, metallic-roughness, normal, occlusion, and emissive samplers listed in the README. Custom renames without material updates break binding.
Is this the same as the Defold 1.13.1 lights tutorial?
No. The lights evening teaches Light components and LightBuffer. This article assumes lights and owns the PBR asset material keep/hold and the asset-vs-extension distinction.
Should we merge 1.13.1-beta because PBR looks good in lab?
No. KEEP lab does not authorize HOLD ship to flip. Freeze Steam merges until stable engine + re-run P1–P6 and an explicit release decision.
How long does the keep/hold take?
About 75–120 minutes for a fresh spike with one model. Longer if you must learn Light components first or fix a broken glTF import pipeline.
What goes in the diligence zip?
Receipt JSON, before/after Play screenshots, CapEx four-liner, and a one-liner that IBL was not claimed unless Night B ran.
Can stylized unlit games ignore this?
Yes. Unlit and stylized pipelines remain valid. This keep/hold is for teams that need metallic-roughness response to punctual lights — not a moral obligation to “go PBR.”
Related reading
- How to Use Defold 1.13.1 Lights - First Indie Lit Scene Evening — Light components / LightBuffer first (pair before or with P3)
- How to Try Defold Morph Targets - First Indie Blend Shape Spike — August cousin; blend shapes (not materials)
- Your First Defold Steam Desktop Collection and Save Audit — Packaging night
- Defold Steam Save Root Outside Collection Map - Fix — Help fix, not PBR
- Game Development with Lua Scripting — Lua context
- 12 Free Defold GDevelop Ren'Py Save-Path Audit Templates — Resource cousin
- Official: Defold PBR Asset forum · GitHub defold/asset-pbr · Light component manual · 1.13.1 beta notes