diff --git a/extensions/README.md b/extensions/README.md
index ec949a2e82..a7b8334d98 100644
--- a/extensions/README.md
+++ b/extensions/README.md
@@ -55,6 +55,13 @@ begin with vendor extensions (which do not require review), reach out for feedba
consensus forms we may consider the best way to bring a vendor extension into the broader ecosystem: via multi-vendor
extensions, Khronos extensions, or inclusion in a future version of the glTF specification.
+#### PBR material extensions
+
+There are several extensions to the glTF 2.0 metallic-roughness material. The following image shows the complete material including all extensions. The default values for parameters introduced in extensions are chosen in a way that they do not affect the material if an extension is not used.
+
+![](figures/pbrext.png)
+
+
## Extensions for glTF 1.0
#### Khronos extensions
diff --git a/extensions/figures/pbrext.dot b/extensions/figures/pbrext.dot
new file mode 100644
index 0000000000..d6616b1c6c
--- /dev/null
+++ b/extensions/figures/pbrext.dot
@@ -0,0 +1,175 @@
+digraph D {
+ graph [rankdir="LR", fontname="Helvetica"]
+ node [shape=plaintext, fontname="Helvetica"]
+ edge [fontname="Helvetica"]
+
+ subgraph cluster_dielectric {
+ label="Dielectric"
+
+ dielectric_specular_brdf [label=<
+
+ specular_brdf |
+ color = [1, 1, 1] |
+ roughness = <roughness>2 |
+
+ >]
+
+ dielectric_specular_btdf [label=<
+
+ specular_btdf |
+ color = <baseColor> |
+ roughness = <roughness>2 |
+ ior = <ior> |
+
+ >]
+
+ dielectric_diffuse_brdf [label=<
+
+ diffuse_brdf |
+ color = <baseColor> |
+
+ >]
+
+ dielectric_diffuse_btdf [label=<
+
+ diffuse_btdf |
+ color = <baseColor> |
+
+ >]
+
+ dielectric_diffuse_mix [label=<
+
+ mix |
+ bsdf0 |
+ bsdf1 |
+ weight = <translucency> |
+
+ >]
+
+ dielectric_base_mix [label=<
+
+ mix |
+ bsdf0 |
+ bsdf1 |
+ weight = <transmission> |
+
+ >]
+
+ dielectric_fresnel_mix [label=<
+
+ fresnel_mix |
+ layer |
+ base |
+ f0 = toF0(<ior>) * <specularColor> * <specular> |
+ f90 = <specular> |
+
+ >]
+
+ dielectric_diffuse_brdf:out -> dielectric_diffuse_mix:in_bsdf0
+ dielectric_diffuse_btdf:out -> dielectric_diffuse_mix:in_bsdf1
+
+ dielectric_diffuse_mix:out -> dielectric_base_mix:in_bsdf0
+ dielectric_specular_btdf:out -> dielectric_base_mix:in_bsdf1
+
+ dielectric_base_mix:out -> dielectric_fresnel_mix:in_base
+ dielectric_specular_brdf:out -> dielectric_fresnel_mix:in_layer
+ }
+
+ subgraph cluster_metal {
+ label="Metal"
+
+ metal_specular_brdf [label=<
+
+ specular_brdf |
+ color = [1, 1, 1] |
+ roughness = <roughness>2 |
+
+ >]
+
+ metal_conductor_fresnel [label=<
+
+ conductor_fresnel |
+ bsdf |
+ f0 = <baseColor> |
+ f90 = [1, 1, 1] |
+
+ >]
+
+ metal_specular_brdf:out -> metal_conductor_fresnel:in_bsdf
+ }
+
+ subgraph core {
+ core_mix [label=<
+
+ mix |
+ bsdf0 |
+ bsdf1 |
+ weight = <metallic> |
+
+ >]
+
+ dielectric_fresnel_mix:out -> core_mix:in_bsdf0
+ metal_conductor_fresnel:out -> core_mix:in_bsdf1
+ }
+
+ subgraph sheen {
+ sheen_brdf [label=<
+
+ sheen_brdf |
+ color = <sheenColor> |
+ roughness = <sheenRoughness> |
+
+ >]
+
+ sheen_coat [label=<
+
+ >]
+
+ sheen_brdf:out -> sheen_coat:in_layer
+ }
+
+ core_mix:out -> sheen_coat:in_base
+
+ subgraph clearcoat {
+ clearcoat_brdf [label=<
+
+ specular_brdf |
+ color = <clearcoat> |
+ roughness = <clearcoatRoughness>2 |
+
+ >]
+
+ clearcoat_coat [label=<
+
+ >]
+
+ clearcoat_brdf:out -> clearcoat_coat:in_layer
+ }
+
+ sheen_coat:out -> clearcoat_coat:in_base
+
+ subgraph legend {
+ rank="same"
+ legend_node [label=<
+
+ Core |
+ KHR_materials_ior |
+ KHR_materials_specular |
+ KHR_materials_translucency |
+ KHR_materials_transmission |
+ KHR_materials_sheen |
+ KHR_materials_clearcoat |
+
+ >]
+
+ core_mix -> legend_node [style=invis]
+ }
+}
diff --git a/extensions/figures/pbrext.png b/extensions/figures/pbrext.png
new file mode 100644
index 0000000000..e2f88e43f3
Binary files /dev/null and b/extensions/figures/pbrext.png differ