Skip to content

Releases: joaovbs96/MaterialXPlayground

v2026.9.4

Choose a tag to compare

@joaovbs96 joaovbs96 released this 15 Sep 16:27
043346e

Minor release. Includes only adjustments to warnings displayed during USD Scene Loading.

v2026.9.3

Choose a tag to compare

@joaovbs96 joaovbs96 released this 15 Sep 12:45
7d390a9

Try it live

Scene Viewer (experimental)

A new tool for loading OpenUSD stages whose materials are MaterialX, rendered through the MaterialX shader generator in the browser.

  • Open a stage by dropping a folder or zip, with a choice of root layer and per phase load progress.
  • MaterialX materials bound to prims, including UDIM textures and EXR, HDR, TIFF and KTX2 images.
  • USD over opinions on referenced MaterialX nodes are applied to the material before generation.
  • UsdLux distant, sphere, disk, rect and cylinder lights, with shadows.
  • Authored cameras: open on or switch to any camera in the stage.
  • Meshes with a subdivision scheme are subdivided at a selectable level, within a triangle budget.
  • PointInstancer geometry.
  • Transparency with refraction through thick glass and colored light transmission.
  • Ambient occlusion, sky visibility, HDR presentation with highlight glow, display transforms (Neutral, ACES, sRGB) and camera exposure in EV.
  • Double click an object to open its material in a floating preview and node graph panel.
  • Screenshots and GIF recording.
  • An Experimental badge next to the title lists the current known issues.

Rendering, in every tool

  • KTX2 compressed textures, plus a script that converts a folder of textures to KTX2 siblings.
  • Specular environment lighting now uses a GGX prefiltered environment, as the MaterialX viewer does, so smooth surfaces no longer sparkle under high contrast HDRIs.
  • Shadows from directional, point and spot lights authored in the document.
  • Materials with many textures no longer fail to compile on shader ball previews.
  • UDIM materials show their first tile on shader ball previews.

Node Graph Editor

  • Saving keeps the loaded file's formatting: node order, XML comments (including those before and after the materialx root), indentation and wrapped attributes are preserved, and only edited elements change.
  • Load and save round trips are stable, byte for byte.
  • The attribution comment in exported documents is now optional, with a remembered checkbox in the Export dialog.

Embeds

  • Embeds load in Safari again.

VS Code extension

  • Fixed the Node Graph Editor failing to open with "Failed to load script: embed/mtlx-viewer.js".
  • The packaged extension is now tested on every change in a simulated VS Code webview.

Site

  • The roadmap is updated with everything that shipped.

v2026.9.2

Choose a tag to compare

@joaovbs96 joaovbs96 released this 14 Sep 00:40
8b9cfc6
  • Render gallery tiles once per release as an artifact, capture them by page clip and fill in the desktop package metadata
  • Let a manual release run pick the gallery, package and desktop jobs and fall back to the live site's tiles without the gallery job
  • Give the gallery capture a screenshot budget that covers the heaviest shader compiles on a GPU-less runner

Update: This version of the .vsix package is broken and has been removed, please download v2026.9.3 instead.

v2026.9.1

Choose a tag to compare

@joaovbs96 joaovbs96 released this 13 Sep 21:02
170c614

Try it live

Desktop app (new, experimental)

  • MaterialX Playground now also ships as a desktop app for Windows, macOS and Linux, built from every release.
  • Native File menu with Open, Save, Save As and recent files; documents you open from the file system stay linked to their file and reload when it changes on disk.
  • Drop a .mtlx file onto the window to open it. Windows users also get "Open with MaterialX Playground" and a taskbar jump list with recent documents.
  • Works fully offline: the standard MaterialX libraries, the shader ball and all default assets ship with the app.
  • Themed title bar and menus that follow macOS and Windows conventions, remembered window size and position, an About dialog, and a settings dialog for desktop preferences.
  • Crash recovery dialogs and a software-rendering safe mode for machines without a working GPU.

Material gallery (new)

  • A Gallery page that browses the MaterialX example materials and our showcase materials with search, family and tag filters and pagination.
  • Click a card for a live preview with a graph view, a permalink and a link to the source repository; textured materials download as a zip with their textures.
  • A unified preset picker in the Viewer, Compare and Graph Editor, backed by the same gallery.

Graph editor

  • Node definitions: node definitions and their implementation graphs now show up as cards, can be opened and previewed, and can be edited in a new Definition panel (name, inputs, outputs, defaults, UI metadata, enums). Create a definition from scratch or convert an existing nodegraph into one.
  • Explore library nodes: right-click or double-click a node such as standard_surface to view its implementation graph read-only, with the values of the node you came from.
  • A node list sidebar on the left with search, type filter and sorting, grouped into inputs, nodes and outputs inside a nodegraph.
  • Reorder inputs and outputs with arrows or by dragging, in definitions and on nodegraph interfaces.
  • Previews for BSDF, EDF and VDF nodes inside nodegraphs now work, and large closure networks preview many times faster.
  • Experimental "Compound compile" setting in the preview settings: compiles big root-level material networks several times faster, with parameter edits staying live.
  • Autosave with crash recovery and a session browser that shows a graph and render preview of each saved session.
  • Interface inputs can carry UI metadata (name, folder, ranges, advanced) and colorspace, kept through grouping and ungrouping.
  • Screenshot files are named after the rendered geometry; various fixes to typing in numeric fields, node signature tables and dialog stacking.

Rendering and files

  • A View Transform control (sRGB default, matching MaterialXView) beside exposure in the Viewer, Compare and previews.
  • Draco-compressed and KTX2-textured glTF models load correctly.
  • TIFF textures are decoded, and zip exports can convert every texture to PNG, JPEG or EXR.
  • Force Transparency mode has been improved: single-sided refraction tint and Fresnel falloff on glass.

CI

  • Gate pushes, pull requests and releases on npm audit for both lockfiles.

v2026.8.11

Choose a tag to compare

@joaovbs96 joaovbs96 released this 24 Aug 09:03
7653e53

Try it live

Custom geometry, animated materials, a studio backdrop, and a new introduction page.

New: Custom Geometry

  • Preview materials on your own models: import .obj, .glb, or .gltf with sibling .bin buffers (multi-select them together). Texture references are ignored by design; Draco and KTX2 assets are rejected with instructive errors.
  • Import once, use everywhere: the model is shared by the Viewer, Compare, Node Specs and Graph Editor for the rest of the session.
  • The geometry selection itself is now global: pick a geometry in any tool and every tool follows, with the choice persisting across reloads. The docs and graph "Auto (by node type)" modes stay per-tool.
  • New Custom Model tile in the Viewer and Compare scene cards, and an integrated picker inside the geometry dropdowns (filename, replace, clear).
  • Embeds take a geometryUrl parameter (and geometryurl element attribute), fetched by the iframe under the same rules as the document; a .gltf resolves its .bin relative to the model URL.

New: Animated Materials

  • MaterialX time and frame nodes now animate, driven by a shared engine clock with MaterialXView semantics, in the viewer, compare, graph and docs previews, embeds and the home hero.
  • New curated "Animated noise" example in every tool's preset list and the home hero rotation.
  • Compare keeps its GPU diff and statistics live while either pane is animated, rendering both panes from the same clock tick.

New: What is MaterialX? page

  • An introduction page at #!what-is-materialx: what the standard is, why it exists, a history timeline, with library counts derived from the build itself.
  • Includes an interactive read-only node graph preview with drill-in navigation, a type legend and an optional render panel.
  • The home page leads its Learn cards with the new page and cycles a featured band with an auto-advance countdown.

Material Viewer & Compare

  • Procedural studio backdrop with a soft contact shadow behind every free-floating geometry, with light direction derived from the environment and a Studio (Dark) variant; the old background toggle became a four-way backdrop picker across all viewers.
  • Viewer and Compare chrome converged: the viewer gains Scene and Environment sidebar cards with geometry tiles, environment import and EV exposure controls.
  • New Compare example pair: the carpaint Standard Surface material next to the same values run through the official OpenPBR translation graph, loadable in one click; each compare slot also gets its own curated preset picker.
  • Compare statistics are now an always-visible panel with a help popover.
  • The image node honors its default color instead of showing a UV checker, matching MaterialXView.

Node Specs

  • Restyled onto the site's new design language: soft cards, legend-colored port types, and parameter editing on par with the node graph.
  • Signature dropdowns are readable for heavily overloaded nodes: sorted by output type then input types, without the arbitrary numbering, in the same order as the Graph Editor's signature picker.

Node Graph Editor

  • File menu split into Open and Import, with the preview retargeting on document switches.
  • Editor polish: uiname support, a leave-nodegraph pill, shared pickers and a single geometry control in the preview strip.

Embedding & Builder

  • New embed parameters: backdrop (with background kept as an alias), forcetransparency and geometryUrl, all documented in EMBEDDING.md.
  • The builder's Scene card gains a custom model URL field; geometry tiles clear it in one click, and every URL field has a clear button.

UI & Design Language

  • Shared pill tokens, type palette and file-picker fields extracted into the shared modules and applied across pages.
  • Long geometry tile labels break onto two lines instead of wrapping arbitrarily.

Reliability

  • Views recover from browser WebGL context loss by rebuilding when the context is restored, and hidden tools defer their rebuilds until revisited, reducing context pressure in long sessions.
  • Release version and extension download link are baked into deploys.
  • Assorted fixes: a phantom horizontal scrollbar on the home hero, the studio black-material state, evicted home hero embeds reviving on return, and graph preview id collisions.

v2026.8.10

Choose a tag to compare

@joaovbs96 joaovbs96 released this 21 Aug 13:49
1147c77

Try it live

A large interface pass across every tool, as a follow up from #21, #20 and #19.

Embed Builder

  • Starter templates
  • A live preview that stays put while you scroll the settings
  • Shareable config links
  • Exposure in EV stops
  • A Reload preview button
  • Clearer warnings when conflicting settings are chosen

Graph Editor

  • A proper menu bar with File and Edit menus
  • A docked resizable side panel
  • Right-click context menus on nodes, selections and the canvas
  • Rename a node in place on the card by right-clicking or double-clicking its name
  • The preview now offers every geometry, orbits, and has reset camera and fullscreen on the render

Viewer & Compare

  • Docked sidebars
  • Settings grouped into cards
  • A tidier viewport HUD
  • MaterialX version picker in the viewer

Node Specs

  • Documentation links now work for translation nodes
  • Node Doc popups in the Node Graph editor now open on the same signature and version you were looking at

General UI Changes

  • (Nearly) every dropdown on the site is now the same component, with keyboard navigation and proper placement, support for an icon for the dropdown itself as well as per-entry

Fixes

  • The home page preview no longer flashes white when you navigate
  • The header now shows the current release instead of a stale one
  • The Embed Builder no longer flickers at some window sizes
  • Exported .mtlx files carry a Playground attribution
  • Send to Viewer keeps the geometry you were using.

v2026.8.9

Choose a tag to compare

@joaovbs96 joaovbs96 released this 18 Aug 23:13
b2d4154

Try it live

The VS Code extension gets its own page on the site.

VS Code extension page

  • New page at #!vscode, linked from the home card and the Integrate menu.
  • One-click download of the latest .vsix, with install, update and uninstall steps, features, settings and known limitations. A Marketplace button is there too, grayed out until we are listed.

Extension docs

  • The extension README now matches the current behavior: graph edits sync into the .mtlx buffer as you make them (Ctrl+S saves the file) and Ctrl+Z / Ctrl+Y use VS Code's own document undo.

v2026.8.8

Choose a tag to compare

@joaovbs96 joaovbs96 released this 18 Aug 19:55
3f97db9

Try it live

A redesigned landing page and a header that has room to grow.

Home page

  • New split hero with a live 3D preview: a random material from the curated presets renders in a transparent embed, auto-rotating, with hover pills to open that same material in the Material Viewer or the Node Graph Editor.
  • Featured band under the hero to spotlight a new or updated tool (currently the Embed Builder).
  • Tools are grouped into Tools, Learn and Integrate sections with a filter, one-sentence descriptions, and placeholder cards for what is coming next (Tutorials, and the VS Code extension with a link to its early builds on the releases page).
  • Subtle grid background behind the hero that fades into the page as you scroll.

Header

  • Shorter tabs (Node Specs, Viewer, Compare, Graph Editor) plus Learn and Integrate menus; the Home tab is gone (the logo links home). Menus open on hover or click and are fully keyboard accessible.
  • The right-side pills now shrink in two stages before the header collapses to the hamburger, so the full navigation stays visible on more laptop widths.

Embed

  • New wheel=none option for <materialx-viewer> and the iframe embed: disables zooming (wheel, Ctrl+wheel and pinch) while keeping drag-to-orbit; a plain wheel still scrolls the host page.
  • Fixed a browser focus ring that showed as a black border around transparent embeds after clicking them.

v2026.8.7

Choose a tag to compare

@joaovbs96 joaovbs96 released this 18 Aug 10:49
5007d2a

Try it live

Follow-ups to the embeddable viewer released in v2026.8.6.

Embedding

  • Configuration advisories are quieter. Switching an embed to the default shaderball-scene geometry (or loading with controls=all) no longer reports "no effect" errors for the rotate and background controls; they are simply hidden while inapplicable and return when the geometry changes. mtlx-error is now reserved for things that are actually wrong.
  • No more GitHub dependency at boot. The default OpenPBR material now ships with the site (materials/open_pbr_default.mtlx) and is served locally, with the GitHub fetch kept only as a fallback. This removes the "Couldn't reach GitHub for the default material" failure for viewers and embeds opened without a document.
  • README gained an "Embedding (experimental)" overview pointing at the full reference in docs/EMBEDDING.md.

Testing and CI

  • The embed test suite is split into two tiers: a one-boot smoke test that runs in CI (about a minute end to end, inside Playwright's container image so no browser provisioning happens on the runner), and the full behavioural suite (npm run test:embed) for local runs and on-demand workflow_dispatch.
  • CI runs only when embed-relevant files change, once per PR.
  • The full suite's protocol checks share a single booted viewer.

v2026.8.6

Choose a tag to compare

@joaovbs96 joaovbs96 released this 17 Aug 12:49
fccf08e

Try it live

Embed a single MaterialX material in any web page

This feature should be considered experimental and may have some rough edges. Feedback is welcome as always!

Currently the embed is only available for the Material Viewer, but implementation for other tools is being considered.

  • embed/viewer.html: minimal chromeless page, configured by query params: src (document plus its same-origin textures/includes), geometry, material, camera, envmap, env, exposure, controls, wheel, version, background,
    transparent, theming, origin. Bad values fall back safely and report through mtlx-error.
  • <materialx-viewer>: one script tag; attributes mirror the params and live-update or reload as appropriate. Lazy activation with a page-wide cap on how many viewers run at once (the least recently seen one is released first), poster/eager, and methods: promise-returning load() (hand the embed a document as text, for files it can't fetch itself), snapshot(), getCamera()/setCamera().
  • Sane embed defaults: Ctrl/Cmd+wheel zoom (plain scroll reaches the host page), reset returns to the host-provided camera/env values, reduced motion pauses autorotate, snippets ship border:0 so transparent truly works.
  • Embed Builder: live-preview configurator that emits both snippet types, with presets, camera capture, and an in-page rendered copy of docs/EMBEDDING.md, the full reference.
  • Build/CI: precompiled embed bundles and generated help HTML with staleness gates; 16 deterministic Playwright tests (npm run test:embed, ~1.6 min) plus a workflow running them on push/PR; release zip ships the embed, the vsix excludes it.

Main app unaffected: every new viewer prop is optional and defaults to prior behavior. Test with npx serve . (Node 22.7+ for npm run build).