├── GOVERNANCE.md ├── LICENSE ├── README.md ├── examples ├── open_pbr_aluminum_brushed.mtlx ├── open_pbr_carpaint.mtlx ├── open_pbr_default.mtlx ├── open_pbr_glass.mtlx ├── open_pbr_honey.mtlx ├── open_pbr_ketchup.mtlx ├── open_pbr_lightbulb.mtlx ├── open_pbr_pearl.mtlx ├── open_pbr_soapbubble.mtlx └── open_pbr_velvet.mtlx ├── images ├── IOR_configs.svg ├── OpenPBR_title.jpg ├── ShaderPlayground_OpenPBR_meetMAT.jpg ├── ShaderPlayground_OpenPBR_scissorsMug.jpg ├── ShaderPlayground_OpenPBR_topDown.jpg ├── anisotropy.png ├── aswf-logo-black.svg ├── coat_0.png ├── coat_1.png ├── coat_darkening_grid.png ├── coat_view_dependent_absorption_color.png ├── dielectric_tir_issue.svg ├── diffuse_rough.png ├── diffuse_smooth.png ├── dispersion_0percent.png ├── dispersion_100percent.png ├── dispersion_25percent.png ├── dispersion_50percent.png ├── dispersion_75percent.png ├── emission_under_coat.png ├── emitting_lava.png ├── fuzz1.jpg ├── fuzz2.jpg ├── fuzz3.jpg ├── github-mark.png ├── glossy_diffuse_diffuseonly.png ├── glossy_diffuse_speconly.png ├── glossy_diffuse_sum.png ├── layer_graph.png ├── layer_graph.svg ├── leaf-rendered-driving-the-opacity-using-a-mask.jpg ├── leaf_alpha.png ├── leaf_texture.jpg ├── metal_with_correct_edge_tint.png ├── metal_with_default_edge_tint.png ├── metals.jpg ├── model_schematic.svg ├── spec_ior1.png ├── spec_ior2.png ├── spec_ior3.png ├── subsurface1.jpg ├── subsurface2.jpg ├── subsurface3.jpg ├── thin_film_0nm.png ├── thin_film_300nm.png ├── thin_film_600nm.png ├── thin_walled1.jpg ├── thin_walled2.jpg ├── transmission1.jpg ├── transmission2.jpg └── transmission3.jpg ├── index.html ├── openpbr.bib ├── parametrization.md.html ├── reference └── open_pbr_surface.mtlx └── style ├── markdeep-1.04.min.js └── style.css /GOVERNANCE.md: -------------------------------------------------------------------------------- 1 | # OpenPBR Project Governance 2 | 3 | OpenPBR is a subproject of 4 | [MaterialX](https://github.com/AcademySoftwareFoundation/MaterialX) and 5 | inherits its broader governance and contribution policies. MaterialX is a 6 | project of the [Academy Software Foundation](https://www.aswf.io/) and relies 7 | on the ASWF governance policies, supported by the Linux Foundation. 8 | 9 | The OpenPBR subproject maintains its own Technical Steering Committee 10 | (TSC), which has final authority over the subproject. As defined in the 11 | broader project charter, TSC responsibilities include, but are not limited to: 12 | 13 | - Discussions, seeking consensus, and where necessary, voting on technical 14 | matters relating to OpenPBR that affect multiple projects. 15 | - Maintainance and administration of the OpenPBR GitHub repository. 16 | - Coordinating technical direction of the project. 17 | - Coordinating marketing, events, and communications regarding OpenPBR. 18 | 19 | Within the TSC there are two key subgroups: **Voting Members**, who take on 20 | formal responsibiities for maintaining the OpenPBR project and vote when 21 | decisions are required; and **Stakeholders**, who represent specific teams and 22 | companies in the industry and speak on their behalf in OpenPBR discussions. 23 | 24 | ### Voting Members 25 | 26 | These committee members are responsible for contributing actively to the 27 | OpenPBR project, whether it's in the form of developing code, improving the 28 | specification and documentation, reviewing pull requests on GitHub, or 29 | assisting teams with their OpenPBR integrations. Although we expect most 30 | decisions to be unanimous across the OpenPBR TSC, for decisions where a 31 | formal vote is required, a majority of voting members is required to move 32 | forward with a change. 33 | 34 | The current Voting Members of the OpenPBR TSC are: 35 | 36 | - Adrien Herubel - Autodesk 37 | - Andréa Machizaud - Adobe 38 | - Jonathan Stone - Lucasfilm ADG 39 | 40 | ### Stakeholders 41 | 42 | These committee members represent teams or companies that are closely aligned 43 | with the OpenPBR project, and have a strong interest in how it evolves going 44 | forward. Stakeholders speak on behalf of their team or company in OpenPBR 45 | discussions, providing the breadth of perspectives that is required to guide 46 | the project. Most new committee members start in this category, and it 47 | doesn't require a commitment on their part to contribute to or maintain the 48 | OpenPBR project, though they are encouraged to do so. 49 | 50 | The current Stakeholders of the OpenPBR TSC are: 51 | 52 | - Frederic Servant - Autodesk 53 | - Guido Quaroni - Adobe 54 | 55 | ### TSC Nomination and Succession 56 | 57 | Any proposal for additional members of the TSC may be submitted by reaching 58 | out to a current TSC member on Slack or raising the issue at a TSC meeting. 59 | New TSC members are accepted or rejected by majority vote of the TSC. 60 | 61 | If a TSC member is for an extended period not regularly participating or 62 | performing the responsibilities expected of TSC members, the TSC may by 63 | majority vote request an alternate TSC member be submitted by that 64 | organization, or remove the inactive member from the TSC. 65 | 66 | A member of the TSC may nominate a successor in the event that such member 67 | decides to leave the TSC, and the TSC shall confirm or reject such nomination 68 | by a vote. In the event that the departing member's nomination for successor 69 | is rejected by vote of the TSC, the departing member shall be entitled to 70 | continue nominating successors until one such successor is confirmed by vote 71 | of the TSC. If the departing member fails or is unable to nominate a 72 | successor, the TSC may nominate one on the departing member's behalf. 73 | 74 | Voting TSC membership is presumed to be retained by the individual even if 75 | they change employers. The TSC may take action to ensure that organizational 76 | stakeholder representation not become severely disproportionate, for example by 77 | urging an organization that loses its sole TSC representative to nominate a 78 | new member, or to limit the total number of members from any one organization 79 | if too many members all move to the same organization. 80 | 81 | ### TSC Meetings 82 | 83 | OpenPBR discussions and votes are included in the agenda for meetings of the 84 | MaterialX TSC, and members of the OpenPBR TSC should attend these meetings 85 | when relevant topics are planned. Scheduling and connection details may be 86 | found in the public 87 | [ASWF Meeting Calendar](https://www.aswf.io/meeting-calendar/). 88 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenPBR Surface 2 | 3 |

4 | 5 | Shader Playground, rendered in Arnold for Maya, using OpenPBR Surface. Artwork by Nikie Monteleone. 6 |

7 |
8 | 9 | 10 | OpenPBR Surface is a specification of a surface shading model intended as a standard for computer graphics. It aims to provide a material representation capable of accurately modeling the vast majority of CG materials used in practical visual effects and feature animation productions. 11 | 12 | OpenPBR Surface is an open standard hosted by the [Academy Software Foundation](https://www.aswf.io/) (ASWF), and is organized as a subproject of [MaterialX](https://materialx.org/). 13 | 14 | ### Specification 15 | 16 | * **[White paper](https://academysoftwarefoundation.github.io/OpenPBR/)** 17 | * **[Parameter reference](https://academysoftwarefoundation.github.io/OpenPBR/#parameterreference)** 18 | * **[Reference implementation](reference/open_pbr_surface.mtlx)** – written in [MaterialX](https://materialx.org/) 19 | * **[BibTeX citation](openpbr.bib)** 20 | 21 | ### Resources 22 | 23 | * [MaterialX Web Viewer](https://academysoftwarefoundation.github.io/MaterialX/?file=Materials/Examples/OpenPbr/open_pbr_default.mtlx) - WebGL rasterization renderer using MaterialX [implementation](reference/open_pbr_surface.mtlx) of OpenPBR 24 | * [OpenPBR-viewer](https://github.com/portsmouth/OpenPBR-viewer) - self-contained example implementation in a WebGL pathtracer (run [here](https://portsmouth.github.io/OpenPBR-viewer)) 25 | * [#openpbr](https://academysoftwarefdn.slack.com/channels/openpbr) - public Slack channel for discussions, hosted by ASWF 26 | 27 |
28 | 29 | [![License: CC BY-SA 4.0](https://img.shields.io/badge/License-Apache%202.0-informational.svg)](LICENSE) 30 | -------------------------------------------------------------------------------- /examples/open_pbr_aluminum_brushed.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/open_pbr_carpaint.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/open_pbr_default.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /examples/open_pbr_glass.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/open_pbr_honey.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/open_pbr_ketchup.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/open_pbr_lightbulb.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/open_pbr_pearl.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /examples/open_pbr_soapbubble.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/open_pbr_velvet.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /images/IOR_configs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 44 | 55 | 66 | 77 | 88 | 99 | 110 | 121 | 132 | 143 | 154 | 165 | 176 | 187 | 188 | 193 | 200 | 207 | 216 | 225 | 234 | 243 | 250 | 257 | 264 | 271 | 277 | 283 | 289 | 295 | 301 | 307 | 313 | 319 | 325 | Metal 336 | Coat 347 | thin-film 358 | thin-film 369 | Dielectric 380 | 385 | ambient_ior 396 | coat_ior 407 | thin_film_ior 418 | specular_ior 429 | (F82 model) 440 | 441 | 442 | -------------------------------------------------------------------------------- /images/OpenPBR_title.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/OpenPBR_title.jpg -------------------------------------------------------------------------------- /images/ShaderPlayground_OpenPBR_meetMAT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/ShaderPlayground_OpenPBR_meetMAT.jpg -------------------------------------------------------------------------------- /images/ShaderPlayground_OpenPBR_scissorsMug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/ShaderPlayground_OpenPBR_scissorsMug.jpg -------------------------------------------------------------------------------- /images/ShaderPlayground_OpenPBR_topDown.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/ShaderPlayground_OpenPBR_topDown.jpg -------------------------------------------------------------------------------- /images/anisotropy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/anisotropy.png -------------------------------------------------------------------------------- /images/aswf-logo-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 30 | 32 | 33 | 36 | 38 | 40 | 41 | 44 | 46 | 48 | 50 | 52 | 55 | 57 | 59 | 61 | 63 | 64 | 65 | 68 | 70 | 71 | -------------------------------------------------------------------------------- /images/coat_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/coat_0.png -------------------------------------------------------------------------------- /images/coat_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/coat_1.png -------------------------------------------------------------------------------- /images/coat_darkening_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/coat_darkening_grid.png -------------------------------------------------------------------------------- /images/coat_view_dependent_absorption_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/coat_view_dependent_absorption_color.png -------------------------------------------------------------------------------- /images/dielectric_tir_issue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | coatambientbase dielectric 399 | -------------------------------------------------------------------------------- /images/diffuse_rough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/diffuse_rough.png -------------------------------------------------------------------------------- /images/diffuse_smooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/diffuse_smooth.png -------------------------------------------------------------------------------- /images/dispersion_0percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/dispersion_0percent.png -------------------------------------------------------------------------------- /images/dispersion_100percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/dispersion_100percent.png -------------------------------------------------------------------------------- /images/dispersion_25percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/dispersion_25percent.png -------------------------------------------------------------------------------- /images/dispersion_50percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/dispersion_50percent.png -------------------------------------------------------------------------------- /images/dispersion_75percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/dispersion_75percent.png -------------------------------------------------------------------------------- /images/emission_under_coat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/emission_under_coat.png -------------------------------------------------------------------------------- /images/emitting_lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/emitting_lava.png -------------------------------------------------------------------------------- /images/fuzz1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/fuzz1.jpg -------------------------------------------------------------------------------- /images/fuzz2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/fuzz2.jpg -------------------------------------------------------------------------------- /images/fuzz3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/fuzz3.jpg -------------------------------------------------------------------------------- /images/github-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/github-mark.png -------------------------------------------------------------------------------- /images/glossy_diffuse_diffuseonly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/glossy_diffuse_diffuseonly.png -------------------------------------------------------------------------------- /images/glossy_diffuse_speconly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/glossy_diffuse_speconly.png -------------------------------------------------------------------------------- /images/glossy_diffuse_sum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/glossy_diffuse_sum.png -------------------------------------------------------------------------------- /images/layer_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/layer_graph.png -------------------------------------------------------------------------------- /images/leaf-rendered-driving-the-opacity-using-a-mask.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/leaf-rendered-driving-the-opacity-using-a-mask.jpg -------------------------------------------------------------------------------- /images/leaf_alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/leaf_alpha.png -------------------------------------------------------------------------------- /images/leaf_texture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/leaf_texture.jpg -------------------------------------------------------------------------------- /images/metal_with_correct_edge_tint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/metal_with_correct_edge_tint.png -------------------------------------------------------------------------------- /images/metal_with_default_edge_tint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/metal_with_default_edge_tint.png -------------------------------------------------------------------------------- /images/metals.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/metals.jpg -------------------------------------------------------------------------------- /images/model_schematic.svg: -------------------------------------------------------------------------------- 1 | basetranslucentbasesubsurfacedielectric baseopaque basefuzzcoatmetalmetallic baseglossy-diffuse -------------------------------------------------------------------------------- /images/spec_ior1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/spec_ior1.png -------------------------------------------------------------------------------- /images/spec_ior2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/spec_ior2.png -------------------------------------------------------------------------------- /images/spec_ior3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/spec_ior3.png -------------------------------------------------------------------------------- /images/subsurface1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/subsurface1.jpg -------------------------------------------------------------------------------- /images/subsurface2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/subsurface2.jpg -------------------------------------------------------------------------------- /images/subsurface3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/subsurface3.jpg -------------------------------------------------------------------------------- /images/thin_film_0nm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/thin_film_0nm.png -------------------------------------------------------------------------------- /images/thin_film_300nm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/thin_film_300nm.png -------------------------------------------------------------------------------- /images/thin_film_600nm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/thin_film_600nm.png -------------------------------------------------------------------------------- /images/thin_walled1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/thin_walled1.jpg -------------------------------------------------------------------------------- /images/thin_walled2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/thin_walled2.jpg -------------------------------------------------------------------------------- /images/transmission1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/transmission1.jpg -------------------------------------------------------------------------------- /images/transmission2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/transmission2.jpg -------------------------------------------------------------------------------- /images/transmission3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/OpenPBR/b212785f1e35462853c7d455ae5a41f8ce71bf98/images/transmission3.jpg -------------------------------------------------------------------------------- /openpbr.bib: -------------------------------------------------------------------------------- 1 | @techreport{OpenPBR, 2 | author = {Zap Andersson and Paul Edmondson and Julien Guertault and Adrien Herubel and Alan King and Peter Kutz and Andréa Machizaud and Jamie Portsmouth and Frédéric Servant and Jonathan Stone}, 3 | title = {{O}pen{PBR} {S}urface Specification}, 4 | institution = {Academy Software Foundation ({ASWF})}, 5 | year = {2024}, 6 | url = {https://academysoftwarefoundation.github.io/OpenPBR/} 7 | } -------------------------------------------------------------------------------- /parametrization.md.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Parameter reference 7 | ============================================ 8 | 9 | To guarantee a non-ambiguous way to transport and present the model across different tools, for each parameter we specify in the following table: 10 | - **Identifier**: its unique identifier string (used in the formal description of the material, and in code). 11 | - **Label**: a suggested, non-unique UI name, where parameter grouping for UI purposes can be inferred based on the common identifier prefix. 12 | - **Type**: one of `float`, `boolean`, `color3`, `vector3`. A `color3` value is associated with a color space ([ACEScg](https://docs.acescentral.com/specifications/acescg/) by default), while a `vector3` value is a raw 3-component vector. 13 | - **Range**: the allowed value range for scalar parameters (per-channel for color and vector parameters). 14 | - Square brackets $[]$ indicate a range the value must be within. 15 | - Parenthesis $()$ indicate bounds are excluded from that range. 16 | - Curly brackets `{}` indicate a discrete set of possible values. 17 | - **Norm**: when the range of possible values differs from the range of typically useful values, the latter is indicated in this column. For example, a **`specular_ior`** can take arbitrarily high values, but a refractive index of 3 is considered a very high value already, above that of diamond. 18 | - **Default**: the suggested default value. 19 | - **Unit**: where relevant, otherwise assumed to be dimensionless. Note that lengths (other than `thin_film_thickness`) can be assumed to be in the world space units of the scene. 20 | 21 | 22 | | Identifier | Label | Type | Range | Norm | Default | Unit | 23 | |---------------------------------------|---------------------|-----------|:-----------------:|:-------------:|:--------------------:|------------------| 24 | | **Base** | 25 | | `base_weight` | Weight | `float` | $ [0, 1] $ | | $ 1 $ | | 26 | | `base_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (0.8, 0.8, 0.8) $ | | 27 | | `base_metalness` | Metalness | `float` | $ [0, 1] $ | | $ 0 $ | | 28 | | `base_diffuse_roughness` | Diffuse Roughness | `float` | $ [0, 1] $ | | $ 0 $ | | 29 | | **Specular** | 30 | | `specular_weight` | Weight | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 1 $ | | 31 | | `specular_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | | 32 | | `specular_roughness` | Roughness | `float` | $ [0, 1] $ | | $ 0.3 $ | | 33 | | `specular_roughness_anisotropy` | Anisotropy | `float` | $ [0, 1] $ | | $ 0 $ | | 34 | | `specular_ior` | IOR | `float` | $ (0, \infty) $ | $ [1, 3] $ | $ 1.5 $ | | 35 | | **Transmission** | 36 | | `transmission_weight` | Weight | `float` | $ [0, 1] $ | | $ 0 $ | | 37 | | `transmission_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | | 38 | | `transmission_depth` | Depth | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 0 $ | length | 39 | | `transmission_scatter` | Scatter | `color3` | $ [0, 1]^3 $ | | $ (0, 0, 0) $ | | 40 | | `transmission_scatter_anisotropy` | Anisotropy | `float` | $ [-1, 1] $ | | $ 0 $ | | 41 | | `transmission_dispersion_scale` | Dispersion scale | `float` | $ [0, 1] $ | | $ 0 $ | | 42 | | `transmission_dispersion_abbe_number` | Abbe number | `float` | $ (0, \infty) $ | $ [9, 91] $ | $ 20 $ | | 43 | | **Subsurface** | 44 | | `subsurface_weight` | Weight | `float` | $ [0, 1] $ | | $ 0 $ | | 45 | | `subsurface_color` | Color | `color3` | $ [0, 1] $ | | $ (0.8, 0.8, 0.8) $ | | 46 | | `subsurface_radius` | Radius | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 1 $ | length | 47 | | `subsurface_radius_scale` | Radius scale | `color3` | $ [0, 1]^3 $ | | $ (1.0, 0.5, 0.25) $ | | 48 | | `subsurface_scatter_anisotropy` | Anisotropy | `float` | $ [-1, 1] $ | | $ 0 $ | | 49 | | **Coat** | 50 | | `coat_weight` | Weight | `float` | $ [0, 1] $ | | $ 0 $ | | 51 | | `coat_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | | 52 | | `coat_roughness` | Roughness | `float` | $ [0, 1] $ | | $ 0 $ | | 53 | | `coat_roughness_anisotropy` | Anisotropy | `float` | $ [0, 1] $ | | $ 0 $ | | 54 | | `coat_ior` | IOR | `float` | $ (0, \infty) $ | $ [1, 3] $ | $ 1.6 $ | | 55 | | `coat_darkening` | Darkening | `float` | $ [0, 1] $ | | $ 1 $ | | 56 | | **Fuzz** | 57 | | `fuzz_weight` | Weight | `float` | $ [0, 1] $ | | $ 0 $ | | 58 | | `fuzz_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | | 59 | | `fuzz_roughness` | Roughness | `float` | $ [0, 1] $ | | $ 0.5 $ | | 60 | | **Emission** | 61 | | `emission_luminance` | Luminance | `float` | $ [0, \infty) $ | $ [0, 1000] $ | $ 0 $ | nits | 62 | | `emission_color` | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | | 63 | | **Thin-film** | 64 | | `thin_film_weight` | Weight | `float` | $ [0, 1] $ | | $ 0 $ | | 65 | | `thin_film_thickness` | Thickness | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 0.5 $ | $\mathrm{\mu m}$ | 66 | | `thin_film_ior` | IOR | `float` | $ (0, \infty) $ | $ [1, 3] $ | $ 1.4 $ | | 67 | | **Geometry** | 68 | | `geometry_opacity` | Opacity | `float` | $ [0, 1] $ | | $ 1 $ | | 69 | | `geometry_thin_walled` | Thin walled | `boolean` | {false, true} | | false | | 70 | | `geometry_normal` | Normal | `vector3` | N/A | | unperturbed normal | | 71 | | `geometry_tangent` | Tangent | `vector3` | N/A | | unperturbed tangent | | 72 | | `geometry_coat_normal` | Coat Normal | `vector3` | N/A | | unperturbed normal | | 73 | | `geometry_coat_tangent` | Coat Tangent | `vector3` | N/A | | unperturbed tangent | | 74 | 75 | 76 | 79 | 80 | 83 | 84 | 87 | -------------------------------------------------------------------------------- /reference/open_pbr_surface.mtlx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32 | 34 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 52 | 54 | 56 | 58 | 60 | 62 | 64 | 66 | 68 | 70 | 72 | 74 | 76 | 78 | 80 | 82 | 84 | 86 | 88 | 90 | 91 | 92 | 93 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 628 | 630 | 631 | 632 | 633 | 634 | 635 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | -------------------------------------------------------------------------------- /style/style.css: -------------------------------------------------------------------------------- 1 | /******************************************************************************/ 2 | /* Document body 3 | /******************************************************************************/ 4 | 5 | body 6 | { 7 | max-width: 880px; 8 | font-family: 'Georgia', serif; 9 | padding: 70px 10px 0px 10px; 10 | min-width: 260px; 11 | font-size: 16px; 12 | line-height: 21px; 13 | color: black; 14 | } 15 | 16 | @media print 17 | { 18 | body 19 | { 20 | max-width: 100%; 21 | padding: 0 5%; 22 | } 23 | } 24 | 25 | /******************************************************************************/ 26 | /* Table of contents 27 | /******************************************************************************/ 28 | 29 | @media screen 30 | { 31 | .md .longTOC, .md .mediumTOC, .md .shortTOC 32 | { 33 | display: block; 34 | margin: -30px 0 20px 30px; 35 | padding: 0; 36 | padding-top: 13px; 37 | float: initial; 38 | font-size: 98%; 39 | line-height: 120%; 40 | border: 0; 41 | font-family: 'Verdana', sans-serif; 42 | border-top: 1px solid rgba(0,0,0,.1); 43 | border-bottom: 1px solid rgba(0,0,0,.1); 44 | } 45 | 46 | .md .longTOC a, .md .mediumTOC a, .md .shortTOC a 47 | { 48 | font-family: 'Verdana', sans-serif; 49 | } 50 | } 51 | 52 | /* For print, hide */ 53 | @media print 54 | { 55 | .md .longTOC, .md .mediumTOC, .md .shortTOC 56 | { 57 | display: none; 58 | } 59 | } 60 | 61 | .md div.title 62 | { 63 | font-family: 'Verdana', sans-serif; 64 | font-weight: 700; 65 | border: 0; 66 | } 67 | 68 | contents, .md .tocHeader, 69 | .md h1, .md h2, .md h3, .md h4, .md h5, .md h6, 70 | .md .nonumberh1, .md .nonumberh2, .md .nonumberh3, .md .nonumberh4, .md .nonumberh5, .md .nonumberh6 71 | { 72 | font-family: 'Verdana', sans-serif; 73 | font-weight: 500; 74 | } 75 | 76 | .md .tocHeader 77 | { 78 | color: rgba(0, 0, 0, 0.95); 79 | margin: 0; 80 | padding: 0; 81 | border: none; 82 | font-weight: 800; 83 | font-size: 120%; 84 | margin-bottom: -10px 85 | } 86 | 87 | .md .longTOC p, .md .mediumTOC p, .md .shortTOC p 88 | { 89 | overflow: hidden; 90 | text-overflow: ellipsis; 91 | } 92 | 93 | .md .longTOC center, .md .mediumTOC center, .md .shortTOC center, .md .tocHeader 94 | { 95 | text-align: left; 96 | } 97 | 98 | .md .longTOC b, .md .mediumTOC b, .md .shortTOC b 99 | { 100 | font-weight: 500; 101 | font-size: 120%; 102 | } 103 | 104 | .md .longTOC a.level1, .md .mediumTOC a.level1, .md .shortTOC a.level1 105 | { 106 | display: inline-block; 107 | font-weight: 500; 108 | margin-top: 7px; 109 | margin-bottom: 4px; 110 | } 111 | 112 | .md .longTOC a.level2, .md .mediumTOC a.level2, .md .shortTOC a.level2 113 | { 114 | color: rgba(0, 0, 0, 0.9); 115 | font-weight: 400; 116 | line-height: 150%; 117 | } 118 | 119 | 120 | .md .longTOC a.level3, .md .mediumTOC a.level3, .md .shortTOC a.level3 121 | { 122 | color: rgba(0, 0, 0, 0.9); 123 | font-weight: 300; 124 | line-height: 150%; 125 | } 126 | 127 | /******************************************************************************/ 128 | /* Titles and headings 129 | /******************************************************************************/ 130 | 131 | /* Title style */ 132 | .md div.title 133 | { 134 | color: rgba(0,0,0,.7); 135 | margin: 0.4em 0 -50px 0; 136 | padding: 0; 137 | font-size: 230%; 138 | font-weight: 700; 139 | text-align: center; 140 | } 141 | 142 | /* Subtitle style */ 143 | .md div.subtitle 144 | { 145 | text-align: center; 146 | font-size: 95%; 147 | } 148 | 149 | /* Blue sections */ 150 | .md h1, .md .nonumberh1 151 | { 152 | font-size: 150%; 153 | color: #029be5; 154 | } 155 | 156 | /* Grey sub-sections */ 157 | .md h2, .md .nonumberh2, .md h3, .md .nonumberh3 158 | { 159 | font-size: 130%; 160 | color: rgba(0,0,0,.7); 161 | } 162 | 163 | .md h3, .md .nonumberh3 164 | { 165 | font-size: 115%; 166 | margin-bottom: 0; 167 | color: rgba(0,0,0,.75); 168 | } 169 | 170 | /******************************************************************************/ 171 | /* Tables 172 | /******************************************************************************/ 173 | 174 | .md table.table 175 | { 176 | font-size: 90%; 177 | width: 100%; 178 | border: 1px solid rgba(0, 0, 0, 0.1); 179 | } 180 | 181 | .md table.table td 182 | { 183 | border: 0.5px solid rgba(0, 0, 0, 0.1); 184 | padding: 10px 3px 3px 7px; 185 | } 186 | 187 | /* Header row */ 188 | .md table.table th 189 | { 190 | border: 0px; 191 | background-color: rgba(0, 0, 0, 0.5); 192 | color: white; 193 | font-size: 110%; 194 | font-weight: 700; 195 | font-family: 'Verdana', sans-serif; 196 | padding: 7px 7px 10px 7px; 197 | } 198 | 199 | /* Even table rows: 1, 3, ... */ 200 | .md table.table tr:nth-child(odd) 201 | { 202 | background-color: rgb(255,255,255); 203 | } 204 | 205 | /* Odd table rows: 2, 4, ... */ 206 | .md table.table tr:nth-child(even) 207 | { 208 | background-color: rgb(255, 255, 255); 209 | } 210 | 211 | .md table.table tr:hover 212 | { 213 | background-color: #f9f5d7; 214 | } 215 | 216 | 217 | /******************************************************************************/ 218 | /* Links 219 | /******************************************************************************/ 220 | 221 | .md a 222 | { 223 | font-family: 'Georgia'; 224 | } 225 | 226 | .md a:link 227 | { 228 | color: #849ad5; 229 | } 230 | 231 | /* For print, make links black */ 232 | @media print 233 | { 234 | .md a:link, .md a:visited 235 | { 236 | color: black; 237 | } 238 | } 239 | 240 | /******************************************************************************/ 241 | /* Misc 242 | /******************************************************************************/ 243 | 244 | /* Code */ 245 | .md code 246 | { 247 | padding: 0; 248 | border: none; 249 | font-family: 'Lucida', monospace; 250 | font-size: 92%; 251 | } 252 | .md pre.listing 253 | { 254 | background-color: transparent; 255 | font-size: 93%; 256 | background-color: rgb(250,250,250); 257 | border: 1px solid rgba(0,0,0,.05); 258 | padding: 6px 10px; 259 | text-align: left; 260 | } 261 | 262 | /* Bibliography */ 263 | .md .bib 264 | { 265 | font-size: 90%; 266 | padding-left: 20px; 267 | text-indent: -20px; 268 | } 269 | .md .bib b 270 | { 271 | font-weight: inherit; 272 | font-style: italic; 273 | } 274 | 275 | hr.pagebreak 276 | { 277 | visibility: hidden; 278 | } 279 | 280 | .afterTitles 281 | { 282 | height: 50px !important; 283 | } 284 | 285 | /* Center short image captions */ 286 | .md div.table 287 | { 288 | margin: 0 0 30px 0; 289 | } 290 | 291 | .md div.tablecaption 292 | { 293 | text-align: justify; 294 | } 295 | 296 | /* Center short image captions */ 297 | .md div.imagecaption 298 | { 299 | display: inline-block; 300 | margin: 7px 0 30 0; 301 | } 302 | 303 | .md img.markdeep 304 | { 305 | margin-top: 0px; 306 | } 307 | 308 | .md .subtitle img.markdeep 309 | { 310 | margin-top: 7px; 311 | } 312 | 313 | .md .imagecaption b 314 | { 315 | font-weight: 700; 316 | font-size: 90%; 317 | color: rgba(0,0,0,.85); 318 | } 319 | 320 | /* Hack to place a caption below a table of images */ 321 | .shifted-caption 322 | { 323 | margin-top: 0px; 324 | text-align: center; 325 | } 326 | .shifted-caption .image 327 | { 328 | float: initial !important; 329 | margin: 0 !important; 330 | } 331 | .shifted-caption img 332 | { 333 | display: none; 334 | } 335 | 336 | .close-shifted-caption 337 | { 338 | margin-top: -15px; 339 | text-align: center; 340 | } 341 | .close-shifted-caption .image 342 | { 343 | float: initial !important; 344 | margin: 0 !important; 345 | } 346 | .close-shifted-caption img 347 | { 348 | display: none; 349 | } 350 | 351 | .markdeepFooter 352 | { 353 | opacity: 0.4; 354 | } 355 | 356 | .md code .long 357 | { 358 | font-size: 88%; 359 | } 360 | 361 | /* For print, hide Markdeep footer */ 362 | @media print 363 | { 364 | .markdeepFooter 365 | { 366 | display: none; 367 | } 368 | } --------------------------------------------------------------------------------