Model or dataset
AcademySoftwareFoundation/OpenPBR avatar
AcademySoftwareFoundation/OpenPBR

OpenPBR Surface is a shared material description for VFX pipelines

Specification and reference implementation for the OpenPBR Surface shading model

812 stars47 forksCSSApache-2.0

At a glance

What is it?
OpenPBR Surface is a specification, not a renderer: the Academy Software Foundation hosts it as a MaterialX subproject, with a white paper, a parameter reference and a MaterialX reference implementation that any renderer can target so a material travels between tools unchanged.
Who is it for?
OpenPBR Surface suits a studio that moves assets between tools and keeps losing material fidelity at each hand-off, since a shared parameterisation is the only thing that fixes that class of problem.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly CSS, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

It is a specification, and that distinction decides everything

OpenPBR Surface is described as a specification of a surface shading model intended as a standard for computer graphics, and the goal is stated precisely: to provide a material representation capable of accurately modeling the vast majority of CG materials used in practical visual effects and feature animation productions. That word, majority, is doing real work. The standard is not trying to describe every material that exists. It is trying to describe the ones that a lighting artist actually types into a shader editor, which is a smaller and more tractable set. The consequence for an adopter is that OpenPBR is not something you install and configure. There is no renderer, no engine plugin and no runtime in this repository, because the repository is the definition, and the definition is a document plus a reference implementation. The audience is a pipeline engineer and a shading artist at a studio where the same material has to look the same in several applications.

MaterialX is the carrier, and that is why it looks like a document

The repository is organised as a subproject of MaterialX, an open standard for material and shading networks, and the reference implementation is written in MaterialX at reference/open_pbr_surface.mtlx. That choice explains the shape of the whole repository. The top level holds a CHANGELOG.md, a GOVERNANCE.md, a LICENSE, a README, an examples/ directory, an images/ directory, an index.html, an openpbr.bib file, a parametrization.md.html document, a reference/ directory and a style/ directory. There is no src/ directory, because there is no source code in the usual sense. The deliverable is a parameterisation, expressed in a portable network format, with a reference implementation showing what the parameters mean in practice. A studio adopting this is adopting a vocabulary, and the vocabulary has to be able to travel between applications, which is exactly what a text based material network format is for.

The example materials are the argument for the standard

The examples/ directory is where the case is made, because a shading model is easier to judge from named materials than from equations. The list includes open_pbr_default.mtlx, and then one file per substance: aluminum brushed, beryllium, blackboard, blood, brass, brick, carpaint, cesium, charcoal, chocolate, chromium, cobalt, coffee, concrete, cooking oil, copper, diamond, egg shell, eye cornea, eye lens, eye sclera, gasoline, germanium and glass, with the list running past the point the excerpt reaches. That set is chosen deliberately. Metals with different finishes, dielectrics like blood and egg shell, a gemstone, a fluid, a granular material like coffee grounds, and a layered surface like carpaint cover the branches of the model rather than a single category. It also tells you what the standard is for, since these are the substances a look development artist needs to match. The artwork in the README shows the same idea, a demonstration scene rendered in Arnold for Maya using OpenPBR Surface, with the Shader Playground.

Adoption depends on other people implementing the same parameters

The resources listed in the README are the honest measure of how far the standard has travelled. There is the MaterialX Web Viewer, a WebGL rasterization renderer, pointed at the OpenPBR default material so you can see the reference implementation rendered. There is OpenPBR-viewer, a self-contained example implementation in a WebGL path tracer, hosted so it can be run in a browser. There is the Adobe OpenPBR BSDF, described as Adobe's open source BSDF implementation of OpenPBR, which is a significant data point, since a major application vendor shipping an implementation means the standard is not purely academic. And there is a public Slack channel hosted by ASWF for discussion. Read together, these say that the standard exists and that several parties have implemented it, but a studio still has to check whether the renderer they use has an OpenPBR path, because a material description is only as portable as the implementations of it. The alternative to a standard is not doing nothing, it is every vendor shipping a slightly different parameter set and every artist maintaining per application versions of the same shader.

Governance and versioning are what make it a standard rather than a proposal

The repository carries a GOVERNANCE.md alongside a CHANGELOG.md, and it is hosted by the Academy Software Foundation with the specification organised as a MaterialX subproject. The release history is short and the versions mean something. Version 1.0 was released on 2024-06-04, version 1.1 on 2024-06-28, and version 1.1.1 on 2026-04-17, so the model reached its first stable point in June 2024 and has had one minor revision since, plus a patch. The last push was on 2026-10-13, so the working tree is moving faster than the tagged versions, which is normal for a document that is being revised continuously and released when the text is settled. Two details in the README are worth a second look for anyone building on this. The licence badge in the README is labelled Creative Commons in its alt text while linking to the LICENSE file, and the project metadata records the licence as Apache-2.0, so the LICENSE file at the repository root is what governs. And the repository ships a BibTeX citation file, openpbr.bib, which is a small signal of intent: a standard wants to be cited.

What a standard does not do for you

The limitation is that a specification removes disagreement, it does not remove work. Somebody in the pipeline still has to author that surface in the new parameterisation, and somebody has to verify that the look survives the translation into each renderer, since a standard guarantees that the parameters mean the same thing and does not guarantee that two different renderers produce identical pixels from them. There is also a scope boundary that the wording is careful about. The standard aims at the vast majority of materials used in practical visual effects and feature animation productions, which means the substance you actually need, the one with the odd anisotropic coating or the layered iridescence, may sit outside it, and then you are back to a custom node graph that does not travel. The other practical cost is the wait. Adopting a standard means agreeing to be limited by what the standard covers, and a team that needs a particular effect tomorrow cannot solve that with a specification. The right question to ask before committing is not whether OpenPBR is good, but how much of your material library is inside the majority it covers.

Editorial conclusion

OpenPBR Surface suits a studio that moves assets between tools and keeps losing material fidelity at each hand-off, since a shared parameterisation is the only thing that fixes that class of problem. It is the wrong tool for a team that renders in a single DCC with a single renderer and has no hand-off problem to solve, and it is the wrong tool for someone who wants a shading model they can implement in an afternoon, because the point of the standard is that everyone agrees on the parameters rather than on one implementation. Before adopting it, read the white paper and the parameter reference, look at the MaterialX reference implementation as the definition of intent, and confirm that the renderer you use already has an OpenPBR BSDF implementation, since the Adobe one and the OpenPBR-viewer are separate projects. The last push was on 2026-10-13 and the current release is v1.1.1 from 2026-04-17.

Frequently asked questions

What is the OpenPBR Surface specification?

OpenPBR Surface is a specification of a surface shading model intended as a standard for computer graphics, aiming to provide a material representation capable of accurately modeling the vast majority of CG materials used in practical visual effects and feature animation productions.

How is OpenPBR related to MaterialX?

OpenPBR is organized as a subproject of MaterialX, and its reference implementation is written in MaterialX at reference/open_pbr_surface.mtlx. The repository ships a parameter reference, a white paper, a parametrization document and example MaterialX files for named materials.

Which implementations of OpenPBR exist?

The README lists the MaterialX Web Viewer for WebGL rasterization, OpenPBR-viewer, a self-contained example implementation in a WebGL path tracer, and the Adobe OpenPBR BSDF, described as Adobe's open source BSDF implementation of OpenPBR.

What licence does OpenPBR use and what is its release history?

The project metadata records the licence as Apache-2.0 with the terms in the LICENSE file at the repository root. The releases are Version 1.1.1 from 2026-04-17, Version 1.1 from 2024-06-28 and Version 1.0 from 2024-06-04.

Official sources

  1. AcademySoftwareFoundation/OpenPBR on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/academysoftwarefoundation-openpbr.svg)](https://hysenlabs.com/projects/academysoftwarefoundation-openpbr)

Was this useful?