Бранимир Караџић vor 3 Monaten
Ursprung
Commit
620229dcf6

+ 3 - 14
_static/_sphinx_javascript_frameworks_compat.js

@@ -1,20 +1,9 @@
-/*
- * _sphinx_javascript_frameworks_compat.js
- * ~~~~~~~~~~
- *
- * Compatability shim for jQuery and underscores.js.
- *
- * WILL BE REMOVED IN Sphinx 6.0
- * xref RemovedInSphinx60Warning
+/* Compatability shim for jQuery and underscores.js.
  *
+ * Copyright Sphinx contributors
+ * Released under the two clause BSD licence
  */
 
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-
 /**
  * small helper function to urldecode strings
  *

+ 2 - 21
_static/basic.css

@@ -1,12 +1,5 @@
 /*
- * basic.css
- * ~~~~~~~~~
- *
  * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 
 /* -- main layout ----------------------------------------------------------- */
@@ -115,15 +108,11 @@ img {
 /* -- search page ----------------------------------------------------------- */
 
 ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
+    margin-top: 10px;
 }
 
 ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
+    padding: 5px 0;
 }
 
 ul.search li a {
@@ -752,14 +741,6 @@ abbr, acronym {
     cursor: help;
 }
 
-.translated {
-    background-color: rgba(207, 255, 207, 0.2)
-}
-
-.untranslated {
-    background-color: rgba(255, 207, 207, 0.2)
-}
-
 /* -- code displays --------------------------------------------------------- */
 
 pre {

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
_static/css/badge_only.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
_static/css/theme.css


+ 0 - 7
_static/doctools.js

@@ -1,12 +1,5 @@
 /*
- * doctools.js
- * ~~~~~~~~~~~
- *
  * Base JavaScript utilities for all Sphinx HTML documentation.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 "use strict";
 

+ 1 - 1
_static/documentation_options.js

@@ -1,5 +1,5 @@
 const DOCUMENTATION_OPTIONS = {
-    VERSION: '1.127.8709',
+    VERSION: '1.132.8889',
     LANGUAGE: 'en',
     COLLAPSE_INDEX: false,
     BUILDER: 'html',

+ 228 - 0
_static/js/versions.js

@@ -0,0 +1,228 @@
+const themeFlyoutDisplay = "hidden";
+const themeVersionSelector = true;
+const themeLanguageSelector = true;
+
+if (themeFlyoutDisplay === "attached") {
+  function renderLanguages(config) {
+    if (!config.projects.translations.length) {
+      return "";
+    }
+
+    // Insert the current language to the options on the selector
+    let languages = config.projects.translations.concat(config.projects.current);
+    languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name));
+
+    const languagesHTML = `
+      <dl>
+        <dt>Languages</dt>
+        ${languages
+          .map(
+            (translation) => `
+        <dd ${translation.slug == config.projects.current.slug ? 'class="rtd-current-item"' : ""}>
+          <a href="${translation.urls.documentation}">${translation.language.code}</a>
+        </dd>
+        `,
+          )
+          .join("\n")}
+      </dl>
+    `;
+    return languagesHTML;
+  }
+
+  function renderVersions(config) {
+    if (!config.versions.active.length) {
+      return "";
+    }
+    const versionsHTML = `
+      <dl>
+        <dt>Versions</dt>
+        ${config.versions.active
+          .map(
+            (version) => `
+        <dd ${version.slug === config.versions.current.slug ? 'class="rtd-current-item"' : ""}>
+          <a href="${version.urls.documentation}">${version.slug}</a>
+        </dd>
+        `,
+          )
+          .join("\n")}
+      </dl>
+    `;
+    return versionsHTML;
+  }
+
+  function renderDownloads(config) {
+    if (!Object.keys(config.versions.current.downloads).length) {
+      return "";
+    }
+    const downloadsNameDisplay = {
+      pdf: "PDF",
+      epub: "Epub",
+      htmlzip: "HTML",
+    };
+
+    const downloadsHTML = `
+      <dl>
+        <dt>Downloads</dt>
+        ${Object.entries(config.versions.current.downloads)
+          .map(
+            ([name, url]) => `
+          <dd>
+            <a href="${url}">${downloadsNameDisplay[name]}</a>
+          </dd>
+        `,
+          )
+          .join("\n")}
+      </dl>
+    `;
+    return downloadsHTML;
+  }
+
+  document.addEventListener("readthedocs-addons-data-ready", function (event) {
+    const config = event.detail.data();
+
+    const flyout = `
+      <div class="rst-versions" data-toggle="rst-versions" role="note">
+        <span class="rst-current-version" data-toggle="rst-current-version">
+          <span class="fa fa-book"> Read the Docs</span>
+          v: ${config.versions.current.slug}
+          <span class="fa fa-caret-down"></span>
+        </span>
+        <div class="rst-other-versions">
+          <div class="injected">
+            ${renderLanguages(config)}
+            ${renderVersions(config)}
+            ${renderDownloads(config)}
+            <dl>
+              <dt>On Read the Docs</dt>
+              <dd>
+                <a href="${config.projects.current.urls.home}">Project Home</a>
+              </dd>
+              <dd>
+                <a href="${config.projects.current.urls.builds}">Builds</a>
+              </dd>
+              <dd>
+                <a href="${config.projects.current.urls.downloads}">Downloads</a>
+              </dd>
+            </dl>
+            <dl>
+              <dt>Search</dt>
+              <dd>
+                <form id="flyout-search-form">
+                  <input
+                    class="wy-form"
+                    type="text"
+                    name="q"
+                    aria-label="Search docs"
+                    placeholder="Search docs"
+                    />
+                </form>
+              </dd>
+            </dl>
+            <hr />
+            <small>
+              <span>Hosted by <a href="https://about.readthedocs.org/?utm_source=&utm_content=flyout">Read the Docs</a></span>
+            </small>
+          </div>
+        </div>
+    `;
+
+    // Inject the generated flyout into the body HTML element.
+    document.body.insertAdjacentHTML("beforeend", flyout);
+
+    // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout.
+    document
+      .querySelector("#flyout-search-form")
+      .addEventListener("focusin", () => {
+        const event = new CustomEvent("readthedocs-search-show");
+        document.dispatchEvent(event);
+      });
+  })
+}
+
+if (themeLanguageSelector || themeVersionSelector) {
+  function onSelectorSwitch(event) {
+    const option = event.target.selectedIndex;
+    const item = event.target.options[option];
+    window.location.href = item.dataset.url;
+  }
+
+  document.addEventListener("readthedocs-addons-data-ready", function (event) {
+    const config = event.detail.data();
+
+    const versionSwitch = document.querySelector(
+      "div.switch-menus > div.version-switch",
+    );
+    if (themeVersionSelector) {
+      let versions = config.versions.active;
+      if (config.versions.current.hidden || config.versions.current.type === "external") {
+        versions.unshift(config.versions.current);
+      }
+      const versionSelect = `
+    <select>
+      ${versions
+        .map(
+          (version) => `
+        <option
+  value="${version.slug}"
+  ${config.versions.current.slug === version.slug ? 'selected="selected"' : ""}
+              data-url="${version.urls.documentation}">
+              ${version.slug}
+          </option>`,
+        )
+        .join("\n")}
+    </select>
+  `;
+
+      versionSwitch.innerHTML = versionSelect;
+      versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
+    }
+
+    const languageSwitch = document.querySelector(
+      "div.switch-menus > div.language-switch",
+    );
+
+    if (themeLanguageSelector) {
+      if (config.projects.translations.length) {
+        // Add the current language to the options on the selector
+        let languages = config.projects.translations.concat(
+          config.projects.current,
+        );
+        languages = languages.sort((a, b) =>
+          a.language.name.localeCompare(b.language.name),
+        );
+
+        const languageSelect = `
+      <select>
+        ${languages
+          .map(
+            (language) => `
+              <option
+                  value="${language.language.code}"
+                  ${config.projects.current.slug === language.slug ? 'selected="selected"' : ""}
+                  data-url="${language.urls.documentation}">
+                  ${language.language.name}
+              </option>`,
+          )
+          .join("\n")}
+       </select>
+    `;
+
+        languageSwitch.innerHTML = languageSelect;
+        languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
+      }
+      else {
+        languageSwitch.remove();
+      }
+    }
+  });
+}
+
+document.addEventListener("readthedocs-addons-data-ready", function (event) {
+  // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav.
+  document
+    .querySelector("[role='search'] input")
+    .addEventListener("focusin", () => {
+      const event = new CustomEvent("readthedocs-search-show");
+      document.dispatchEvent(event);
+    });
+});

+ 1 - 8
_static/language_data.js

@@ -1,19 +1,12 @@
 /*
- * language_data.js
- * ~~~~~~~~~~~~~~~~
- *
  * This script contains the language-specific data used by searchtools.js,
  * namely the list of stopwords, stemmer, scorer and splitter.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 
 var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
 
 
-/* Non-minified version is copied as a separate JS file, is available */
+/* Non-minified version is copied as a separate JS file, if available */
 
 /**
  * Porter Stemmer

+ 33 - 33
_static/pygments.css

@@ -6,26 +6,26 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
 .highlight .hll { background-color: #ffffcc }
 .highlight { background: #eeffcc; }
 .highlight .c { color: #408090; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .err { border: 1px solid #F00 } /* Error */
 .highlight .k { color: #007020; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
+.highlight .o { color: #666 } /* Operator */
 .highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
 .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
 .highlight .cp { color: #007020 } /* Comment.Preproc */
 .highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
 .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .cs { color: #408090; background-color: #FFF0F0 } /* Comment.Special */
 .highlight .gd { color: #A00000 } /* Generic.Deleted */
 .highlight .ge { font-style: italic } /* Generic.Emph */
 .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gr { color: #F00 } /* Generic.Error */
 .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
 .highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #333333 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .go { color: #333 } /* Generic.Output */
+.highlight .gp { color: #C65D09; font-weight: bold } /* Generic.Prompt */
 .highlight .gs { font-weight: bold } /* Generic.Strong */
 .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .gt { color: #04D } /* Generic.Traceback */
 .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
 .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
 .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
@@ -33,43 +33,43 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
 .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
 .highlight .kt { color: #902000 } /* Keyword.Type */
 .highlight .m { color: #208050 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .s { color: #4070A0 } /* Literal.String */
+.highlight .na { color: #4070A0 } /* Name.Attribute */
 .highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .nc { color: #0E84B5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60ADD5 } /* Name.Constant */
+.highlight .nd { color: #555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #D55537; font-weight: bold } /* Name.Entity */
 .highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nf { color: #06287E } /* Name.Function */
 .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nn { color: #0E84B5; font-weight: bold } /* Name.Namespace */
 .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .nv { color: #BB60D5 } /* Name.Variable */
 .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .w { color: #BBB } /* Text.Whitespace */
 .highlight .mb { color: #208050 } /* Literal.Number.Bin */
 .highlight .mf { color: #208050 } /* Literal.Number.Float */
 .highlight .mh { color: #208050 } /* Literal.Number.Hex */
 .highlight .mi { color: #208050 } /* Literal.Number.Integer */
 .highlight .mo { color: #208050 } /* Literal.Number.Oct */
-.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sa { color: #4070A0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070A0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070A0 } /* Literal.String.Char */
+.highlight .dl { color: #4070A0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070A0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070A0 } /* Literal.String.Double */
+.highlight .se { color: #4070A0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070A0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70A0D0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #C65D09 } /* Literal.String.Other */
 .highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .s1 { color: #4070A0 } /* Literal.String.Single */
 .highlight .ss { color: #517918 } /* Literal.String.Symbol */
 .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #06287e } /* Name.Function.Magic */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .fm { color: #06287E } /* Name.Function.Magic */
+.highlight .vc { color: #BB60D5 } /* Name.Variable.Class */
+.highlight .vg { color: #BB60D5 } /* Name.Variable.Global */
+.highlight .vi { color: #BB60D5 } /* Name.Variable.Instance */
+.highlight .vm { color: #BB60D5 } /* Name.Variable.Magic */
 .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

+ 137 - 76
_static/searchtools.js

@@ -1,12 +1,5 @@
 /*
- * searchtools.js
- * ~~~~~~~~~~~~~~~~
- *
  * Sphinx JavaScript utilities for the full-text search.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 "use strict";
 
@@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") {
     // and returns the new score.
     /*
     score: result => {
-      const [docname, title, anchor, descr, score, filename] = result
+      const [docname, title, anchor, descr, score, filename, kind] = result
       return score
     },
     */
@@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") {
   };
 }
 
+// Global search result kind enum, used by themes to style search results.
+class SearchResultKind {
+    static get index() { return  "index"; }
+    static get object() { return "object"; }
+    static get text() { return "text"; }
+    static get title() { return "title"; }
+}
+
 const _removeChildren = (element) => {
   while (element && element.lastChild) element.removeChild(element.lastChild);
 };
@@ -64,9 +65,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
   const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
   const contentRoot = document.documentElement.dataset.content_root;
 
-  const [docName, title, anchor, descr, score, _filename] = item;
+  const [docName, title, anchor, descr, score, _filename, kind] = item;
 
   let listItem = document.createElement("li");
+  // Add a class representing the item's type:
+  // can be used by a theme's CSS selector for styling
+  // See SearchResultKind for the class names.
+  listItem.classList.add(`kind-${kind}`);
   let requestUrl;
   let linkUrl;
   if (docBuilder === "dirhtml") {
@@ -99,7 +104,7 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
       .then((data) => {
         if (data)
           listItem.appendChild(
-            Search.makeSearchSummary(data, searchTerms)
+            Search.makeSearchSummary(data, searchTerms, anchor)
           );
         // highlight search terms in the summary
         if (SPHINX_HIGHLIGHT_ENABLED)  // set in sphinx_highlight.js
@@ -115,9 +120,11 @@ const _finishSearch = (resultCount) => {
       "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
     );
   else
-    Search.status.innerText = _(
-      `Search finished, found ${resultCount} page(s) matching the search query.`
-    );
+    Search.status.innerText = Documentation.ngettext(
+      "Search finished, found one page matching the search query.",
+      "Search finished, found ${resultCount} pages matching the search query.",
+      resultCount,
+    ).replace('${resultCount}', resultCount);
 };
 const _displayNextItem = (
   results,
@@ -137,6 +144,22 @@ const _displayNextItem = (
   // search finished, update title and status message
   else _finishSearch(resultCount);
 };
+// Helper function used by query() to order search results.
+// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
+// Order the results by score (in opposite order of appearance, since the
+// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
+const _orderResultsByScoreThenName = (a, b) => {
+  const leftScore = a[4];
+  const rightScore = b[4];
+  if (leftScore === rightScore) {
+    // same score: sort alphabetically
+    const leftTitle = a[1].toLowerCase();
+    const rightTitle = b[1].toLowerCase();
+    if (leftTitle === rightTitle) return 0;
+    return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
+  }
+  return leftScore > rightScore ? 1 : -1;
+};
 
 /**
  * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
@@ -160,13 +183,26 @@ const Search = {
   _queued_query: null,
   _pulse_status: -1,
 
-  htmlToText: (htmlString) => {
+  htmlToText: (htmlString, anchor) => {
     const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
-    htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
+    for (const removalQuery of [".headerlink", "script", "style"]) {
+      htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
+    }
+    if (anchor) {
+      const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
+      if (anchorContent) return anchorContent.textContent;
+
+      console.warn(
+        `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
+      );
+    }
+
+    // if anchor not specified or not found, fall back to main content
     const docContent = htmlElement.querySelector('[role="main"]');
-    if (docContent !== undefined) return docContent.textContent;
+    if (docContent) return docContent.textContent;
+
     console.warn(
-      "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
+      "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
     );
     return "";
   },
@@ -219,6 +255,7 @@ const Search = {
     searchSummary.classList.add("search-summary");
     searchSummary.innerText = "";
     const searchList = document.createElement("ul");
+    searchList.setAttribute("role", "list");
     searchList.classList.add("search");
 
     const out = document.getElementById("search-results");
@@ -239,16 +276,7 @@ const Search = {
     else Search.deferQuery(query);
   },
 
-  /**
-   * execute search (requires search index to be loaded)
-   */
-  query: (query) => {
-    const filenames = Search._index.filenames;
-    const docNames = Search._index.docnames;
-    const titles = Search._index.titles;
-    const allTitles = Search._index.alltitles;
-    const indexEntries = Search._index.indexentries;
-
+  _parseQuery: (query) => {
     // stem the search terms and add them to the correct list
     const stemmer = new Stemmer();
     const searchTerms = new Set();
@@ -284,22 +312,40 @@ const Search = {
     // console.info("required: ", [...searchTerms]);
     // console.info("excluded: ", [...excludedTerms]);
 
-    // array of [docname, title, anchor, descr, score, filename]
-    let results = [];
+    return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+    const allTitles = Search._index.alltitles;
+    const indexEntries = Search._index.indexentries;
+
+    // Collect multiple result groups to be sorted separately and then ordered.
+    // Each is an array of [docname, title, anchor, descr, score, filename, kind].
+    const normalResults = [];
+    const nonMainIndexResults = [];
+
     _removeChildren(document.getElementById("search-progress"));
 
-    const queryLower = query.toLowerCase();
+    const queryLower = query.toLowerCase().trim();
     for (const [title, foundTitles] of Object.entries(allTitles)) {
-      if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
+      if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
         for (const [file, id] of foundTitles) {
-          let score = Math.round(100 * queryLower.length / title.length)
-          results.push([
+          const score = Math.round(Scorer.title * queryLower.length / title.length);
+          const boost = titles[file] === title ? 1 : 0;  // add a boost for document titles
+          normalResults.push([
             docNames[file],
             titles[file] !== title ? `${titles[file]} > ${title}` : title,
             id !== null ? "#" + id : "",
             null,
-            score,
+            score + boost,
             filenames[file],
+            SearchResultKind.title,
           ]);
         }
       }
@@ -308,46 +354,48 @@ const Search = {
     // search for explicit entries in index directives
     for (const [entry, foundEntries] of Object.entries(indexEntries)) {
       if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
-        for (const [file, id] of foundEntries) {
-          let score = Math.round(100 * queryLower.length / entry.length)
-          results.push([
+        for (const [file, id, isMain] of foundEntries) {
+          const score = Math.round(100 * queryLower.length / entry.length);
+          const result = [
             docNames[file],
             titles[file],
             id ? "#" + id : "",
             null,
             score,
             filenames[file],
-          ]);
+            SearchResultKind.index,
+          ];
+          if (isMain) {
+            normalResults.push(result);
+          } else {
+            nonMainIndexResults.push(result);
+          }
         }
       }
     }
 
     // lookup as object
     objectTerms.forEach((term) =>
-      results.push(...Search.performObjectSearch(term, objectTerms))
+      normalResults.push(...Search.performObjectSearch(term, objectTerms))
     );
 
     // lookup as search terms in fulltext
-    results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
+    normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
 
     // let the scorer override scores with a custom scoring function
-    if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
-
-    // now sort the results by score (in opposite order of appearance, since the
-    // display function below uses pop() to retrieve items) and then
-    // alphabetically
-    results.sort((a, b) => {
-      const leftScore = a[4];
-      const rightScore = b[4];
-      if (leftScore === rightScore) {
-        // same score: sort alphabetically
-        const leftTitle = a[1].toLowerCase();
-        const rightTitle = b[1].toLowerCase();
-        if (leftTitle === rightTitle) return 0;
-        return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
-      }
-      return leftScore > rightScore ? 1 : -1;
-    });
+    if (Scorer.score) {
+      normalResults.forEach((item) => (item[4] = Scorer.score(item)));
+      nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
+    }
+
+    // Sort each group of results by score and then alphabetically by name.
+    normalResults.sort(_orderResultsByScoreThenName);
+    nonMainIndexResults.sort(_orderResultsByScoreThenName);
+
+    // Combine the result groups in (reverse) order.
+    // Non-main index entries are typically arbitrary cross-references,
+    // so display them after other results.
+    let results = [...nonMainIndexResults, ...normalResults];
 
     // remove duplicate search results
     // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
@@ -361,7 +409,12 @@ const Search = {
       return acc;
     }, []);
 
-    results = results.reverse();
+    return results.reverse();
+  },
+
+  query: (query) => {
+    const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
+    const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
 
     // for debugging
     //Search.lastresults = results.slice();  // a copy
@@ -432,6 +485,7 @@ const Search = {
         descr,
         score,
         filenames[match[0]],
+        SearchResultKind.object,
       ]);
     };
     Object.keys(objects).forEach((prefix) =>
@@ -459,21 +513,27 @@ const Search = {
     // perform the search on the required terms
     searchTerms.forEach((word) => {
       const files = [];
+      // find documents, if any, containing the query word in their text/title term indices
+      // use Object.hasOwnProperty to avoid mismatching against prototype properties
       const arr = [
-        { files: terms[word], score: Scorer.term },
-        { files: titleTerms[word], score: Scorer.title },
+        { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term },
+        { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title },
       ];
       // add support for partial matches
       if (word.length > 2) {
         const escapedWord = _escapeRegExp(word);
-        Object.keys(terms).forEach((term) => {
-          if (term.match(escapedWord) && !terms[word])
-            arr.push({ files: terms[term], score: Scorer.partialTerm });
-        });
-        Object.keys(titleTerms).forEach((term) => {
-          if (term.match(escapedWord) && !titleTerms[word])
-            arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
-        });
+        if (!terms.hasOwnProperty(word)) {
+          Object.keys(terms).forEach((term) => {
+            if (term.match(escapedWord))
+              arr.push({ files: terms[term], score: Scorer.partialTerm });
+          });
+        }
+        if (!titleTerms.hasOwnProperty(word)) {
+          Object.keys(titleTerms).forEach((term) => {
+            if (term.match(escapedWord))
+              arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
+          });
+        }
       }
 
       // no match but word was a required one
@@ -489,16 +549,16 @@ const Search = {
 
         // set score for the word in each file
         recordFiles.forEach((file) => {
-          if (!scoreMap.has(file)) scoreMap.set(file, {});
-          scoreMap.get(file)[word] = record.score;
+          if (!scoreMap.has(file)) scoreMap.set(file, new Map());
+          const fileScores = scoreMap.get(file);
+          fileScores.set(word, record.score);
         });
       });
 
       // create the mapping
       files.forEach((file) => {
-        if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
-          fileMap.get(file).push(word);
-        else fileMap.set(file, [word]);
+        if (!fileMap.has(file)) fileMap.set(file, [word]);
+        else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
       });
     });
 
@@ -530,7 +590,7 @@ const Search = {
         break;
 
       // select one (max) score for the file.
-      const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
+      const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
       // add result to the result list
       results.push([
         docNames[file],
@@ -539,6 +599,7 @@ const Search = {
         null,
         score,
         filenames[file],
+        SearchResultKind.text,
       ]);
     }
     return results;
@@ -549,8 +610,8 @@ const Search = {
    * search summary for a given text. keywords is a list
    * of stemmed words.
    */
-  makeSearchSummary: (htmlText, keywords) => {
-    const text = Search.htmlToText(htmlText);
+  makeSearchSummary: (htmlText, keywords, anchor) => {
+    const text = Search.htmlToText(htmlText, anchor);
     if (text === "") return null;
 
     const textLower = text.toLowerCase();

Datei-Diff unterdrückt, da er zu groß ist
+ 66 - 52
bgfx.html


+ 29 - 27
build.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Building &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Building &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -97,9 +99,9 @@
            <div itemprop="articleBody">
              
   <section id="building">
-<h1>Building<a class="headerlink" href="#building" title="Link to this heading"></a></h1>
+<h1>Building<a class="headerlink" href="#building" title="Link to this heading"></a></h1>
 <section id="dependencies-getting-the-source">
-<h2>Dependencies &amp; Getting the source<a class="headerlink" href="#dependencies-getting-the-source" title="Link to this heading"></a></h2>
+<h2>Dependencies &amp; Getting the source<a class="headerlink" href="#dependencies-getting-the-source" title="Link to this heading"></a></h2>
 <blockquote>
 <div><ul class="simple">
 <li><p><a class="reference external" href="https://github.com/bkaradzic/bx">https://github.com/bkaradzic/bx</a></p></li>
@@ -115,18 +117,18 @@ So clone the repositories next to each other:</p>
 </div>
 </section>
 <section id="quick-start-for-windows">
-<h2>Quick Start for Windows<a class="headerlink" href="#quick-start-for-windows" title="Link to this heading"></a></h2>
+<h2>Quick Start for Windows<a class="headerlink" href="#quick-start-for-windows" title="Link to this heading"></a></h2>
 <p>These are step for users who use Windows with Visual Studio.</p>
 <p>Enter bgfx directory:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">bgfx</span>
 </pre></div>
 </div>
 <p>Generate Visual Studio 2019 project files:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">examples</span> <span class="n">vs2019</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">examples</span> <span class="n">vs2022</span>
 </pre></div>
 </div>
 <p>Open bgfx solution in Visual Studio 2019:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span>\<span class="n">projects</span>\<span class="n">vs2019</span>\<span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span>\<span class="n">projects</span>\<span class="n">vs2022</span>\<span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
 </pre></div>
 </div>
 <div class="admonition note">
@@ -135,9 +137,9 @@ So clone the repositories next to each other:</p>
 </div>
 </section>
 <section id="prerequisites">
-<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Link to this heading"></a></h2>
+<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Link to this heading"></a></h2>
 <section id="android">
-<h3>Android<a class="headerlink" href="#android" title="Link to this heading"></a></h3>
+<h3>Android<a class="headerlink" href="#android" title="Link to this heading"></a></h3>
 <p>Download Android NDK (r23 or newer):</p>
 <blockquote>
 <div><ul class="simple">
@@ -150,13 +152,13 @@ So clone the repositories next to each other:</p>
 </div>
 </section>
 <section id="linux">
-<h3>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h3>
+<h3>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h3>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libgl1</span><span class="o">-</span><span class="n">mesa</span><span class="o">-</span><span class="n">dev</span> <span class="n">x11proto</span><span class="o">-</span><span class="n">core</span><span class="o">-</span><span class="n">dev</span> <span class="n">libx11</span><span class="o">-</span><span class="n">dev</span>
 </pre></div>
 </div>
 </section>
 <section id="windows">
-<h3>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h3>
+<h3>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h3>
 <p>Windows users download GnuWin32 utilities:</p>
 <blockquote>
 <div><ul class="simple">
@@ -174,14 +176,14 @@ You must use use <strong>cmd.exe</strong> with provided makefiles.</p>
 </section>
 </section>
 <section id="build">
-<h2>Build<a class="headerlink" href="#build" title="Link to this heading"></a></h2>
+<h2>Build<a class="headerlink" href="#build" title="Link to this heading"></a></h2>
 <p>bgfx uses <a class="reference external" href="https://github.com/bkaradzic/genie#genie---project-generator-tool">GENie - Project generator tool</a>
 to generate project files for various platforms. Binaries of GENie for Linux, macOS, and Windows are included in
 the bx repository. GENie can generate a useful list of options relevant to the project using the
 <code class="docutils literal notranslate"><span class="pre">--help</span></code> flag. Most platform-specific examples below do not explicitly use the <code class="docutils literal notranslate"><span class="pre">genie</span></code> executable, but a convenience
 makefile instead. For more control, you can directly use <code class="docutils literal notranslate"><span class="pre">genie</span></code> to generate the project files.</p>
 <section id="general-makefile-wrapper">
-<h3>General (Makefile wrapper)<a class="headerlink" href="#general-makefile-wrapper" title="Link to this heading"></a></h3>
+<h3>General (Makefile wrapper)<a class="headerlink" href="#general-makefile-wrapper" title="Link to this heading"></a></h3>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">bgfx</span>
 <span class="n">make</span>
 </pre></div>
@@ -198,7 +200,7 @@ All intermediate files, libraries and executables generated by the compiler will
 </div>
 </section>
 <section id="general-directly-with-genie">
-<h3>General (Directly with GENie)<a class="headerlink" href="#general-directly-with-genie" title="Link to this heading"></a></h3>
+<h3>General (Directly with GENie)<a class="headerlink" href="#general-directly-with-genie" title="Link to this heading"></a></h3>
 <p>Inspect the available options by invoking GENie with the <code class="docutils literal notranslate"><span class="pre">--help</span></code> option (where <code class="docutils literal notranslate"><span class="pre">&lt;platform&gt;</span></code> is <code class="docutils literal notranslate"><span class="pre">linux</span></code>, <code class="docutils literal notranslate"><span class="pre">windows</span></code>, or <code class="docutils literal notranslate"><span class="pre">darwin</span></code>):</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="n">bx</span><span class="o">/</span><span class="n">tools</span><span class="o">/</span><span class="nb">bin</span><span class="o">/&lt;</span><span class="n">platform</span><span class="o">&gt;/</span><span class="n">genie</span> <span class="o">--</span><span class="n">help</span>
 </pre></div>
@@ -241,18 +243,18 @@ For more help on specific platforms, see below and read the <code class="docutil
 <code class="docutils literal notranslate"><span class="pre">&lt;platform&gt;</span></code> is the platform you chose.</p>
 </section>
 <section id="id1">
-<h3>Windows<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
+<h3>Windows<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
 <p>Visual Studio 2019 command line:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">vs2019</span><span class="o">-</span><span class="n">release64</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">vs2022</span><span class="o">-</span><span class="n">release64</span>
 </pre></div>
 </div>
 <p>Visual Studio 2019 IDE:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/</span><span class="n">vs2019</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/</span><span class="n">vs2022</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
 </pre></div>
 </div>
 </section>
 <section id="macos">
-<h3>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h3>
+<h3>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h3>
 <p>There are two options when working on macOS: Xcode command-line builds, or within the XCode graphical development environment.</p>
 <p>For the Xcode command line:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">osx</span><span class="o">-</span><span class="n">release</span>
@@ -276,15 +278,15 @@ configuration file, it has to be set manually for each example project:</p>
 </ol>
 </section>
 <section id="id2">
-<h3>Linux<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
+<h3>Linux<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">linux</span><span class="o">-</span><span class="n">release64</span>
 </pre></div>
 </div>
 <p>For more options, see <a class="reference external" href="#general-directly-with-genie">General (directly with GENie)</a>.</p>
 </section>
 <section id="winrt-uwp">
-<h3>WinRT / UWP<a class="headerlink" href="#winrt-uwp" title="Link to this heading"></a></h3>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="n">vs</span><span class="o">=</span><span class="n">winstore100</span> <span class="n">vs2019</span>
+<h3>WinRT / UWP<a class="headerlink" href="#winrt-uwp" title="Link to this heading"></a></h3>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="n">vs</span><span class="o">=</span><span class="n">winstore100</span> <span class="n">vs2022</span>
 </pre></div>
 </div>
 <p>For more options, see <a class="reference external" href="#general-directly-with-genie">General (directly with GENie)</a>.
@@ -296,7 +298,7 @@ Build the resulting solution and deploy to device.</p>
 </section>
 </section>
 <section id="amalgamated-build">
-<h2>Amalgamated Build<a class="headerlink" href="#amalgamated-build" title="Link to this heading"></a></h2>
+<h2>Amalgamated Build<a class="headerlink" href="#amalgamated-build" title="Link to this heading"></a></h2>
 <p>For ease of integration with other build systems, the bgfx library can be built
 with a single .cpp file. It’s only necessary to build
 <a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.cpp">src/amalgamated.cpp</a>
@@ -305,14 +307,14 @@ with a single .cpp file. It’s only necessary to build
 instead) inside a different build system.</p>
 </section>
 <section id="tools">
-<h2>Tools<a class="headerlink" href="#tools" title="Link to this heading"></a></h2>
+<h2>Tools<a class="headerlink" href="#tools" title="Link to this heading"></a></h2>
 <p>To build bgfx project files for tools, use <code class="docutils literal notranslate"><span class="pre">--with-tools</span></code> option:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">tools</span> <span class="n">vs2019</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">tools</span> <span class="n">vs2022</span>
 </pre></div>
 </div>
 </section>
 <section id="alternative-build-systems">
-<h2>Alternative build systems<a class="headerlink" href="#alternative-build-systems" title="Link to this heading"></a></h2>
+<h2>Alternative build systems<a class="headerlink" href="#alternative-build-systems" title="Link to this heading"></a></h2>
 <p><strong>CMake</strong></p>
 <blockquote>
 <div><ul class="simple">
@@ -329,7 +331,7 @@ instead) inside a different build system.</p>
 <a class="reference external" href="https://github.com/firefalcom/bgfx-conan">https://github.com/firefalcom/bgfx-conan</a></p>
 </section>
 <section id="minimal-example-without-bgfx-s-example-harness">
-<h2>Minimal example without bgfx’s example harness<a class="headerlink" href="#minimal-example-without-bgfx-s-example-harness" title="Link to this heading"></a></h2>
+<h2>Minimal example without bgfx’s example harness<a class="headerlink" href="#minimal-example-without-bgfx-s-example-harness" title="Link to this heading"></a></h2>
 <p>This project demonstrates minimal amount of code needed to integrate bgfx with GLFW, but without
 any of existing bgfx example harness. It also demonstrates how to build bgfx with alternative build
 system.</p>
@@ -348,7 +350,7 @@ system.</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 64 - 56
examples.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Examples &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Examples &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -98,6 +100,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#pixelformats">47-pixelformats</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#drawindirect">48-drawindirect</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#hextile">49-hextile</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#headless">50-headless</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="bgfx.html">API Reference</a></li>
@@ -130,28 +133,28 @@
            <div itemprop="articleBody">
              
   <section id="examples">
-<h1>Examples<a class="headerlink" href="#examples" title="Link to this heading"></a></h1>
+<h1>Examples<a class="headerlink" href="#examples" title="Link to this heading"></a></h1>
 <p>Most of the examples require shader/texture/mesh data to be loaded. When
 running examples your current directory should be examples/runtime.</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;bgfx_path&gt;/examples/runtime $ ../../.build/&lt;config&gt;/bin/example-00-helloworldDebug
 </pre></div>
 </div>
 <section id="helloworld">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/00-helloworld">00-helloworld</a><a class="headerlink" href="#helloworld" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/00-helloworld">00-helloworld</a><a class="headerlink" href="#helloworld" title="Link to this heading"></a></h2>
 <p>Initialization and debug text.</p>
 <figure class="align-default">
 <img alt="example-00-helloworld" src="https://github.com/bkaradzic/bgfx/raw/master/examples/00-helloworld/screenshot.png" />
 </figure>
 </section>
 <section id="cubes">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/01-cubes/cubes.cpp">01-cubes</a><a class="headerlink" href="#cubes" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/01-cubes/cubes.cpp">01-cubes</a><a class="headerlink" href="#cubes" title="Link to this heading"></a></h2>
 <p>Rendering simple static mesh.</p>
 <figure class="align-default">
 <img alt="example-01-cubes" src="https://github.com/bkaradzic/bgfx/raw/master/examples/01-cubes/screenshot.png" />
 </figure>
 </section>
 <section id="metaballs">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/02-metaballs">02-metaballs</a><a class="headerlink" href="#metaballs" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/02-metaballs">02-metaballs</a><a class="headerlink" href="#metaballs" title="Link to this heading"></a></h2>
 <p>Rendering with transient buffers and embedding shaders.</p>
 <div class="emscripten">
   <progress value="0" max="100" id="progress" hidden=1></progress>
@@ -244,100 +247,100 @@ running examples your current directory should be examples/runtime.</p>
 </script>
 <script async type="text/javascript" src="example-02-metaballsRelease.bc.js"></script></section>
 <section id="raymarch">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/03-raymarch">03-raymarch</a><a class="headerlink" href="#raymarch" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/03-raymarch">03-raymarch</a><a class="headerlink" href="#raymarch" title="Link to this heading"></a></h2>
 <p>Updating shader uniforms.</p>
 <figure class="align-default">
 <img alt="example-03-raymarch" src="https://github.com/bkaradzic/bgfx/raw/master/examples/03-raymarch/screenshot.png" />
 </figure>
 </section>
 <section id="mesh">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/04-mesh">04-mesh</a><a class="headerlink" href="#mesh" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/04-mesh">04-mesh</a><a class="headerlink" href="#mesh" title="Link to this heading"></a></h2>
 <p>Loading meshes.</p>
 <figure class="align-default">
 <img alt="example-04-mesh" src="https://github.com/bkaradzic/bgfx/raw/master/examples/04-mesh/screenshot.png" />
 </figure>
 </section>
 <section id="instancing">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/05-instancing">05-instancing</a><a class="headerlink" href="#instancing" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/05-instancing">05-instancing</a><a class="headerlink" href="#instancing" title="Link to this heading"></a></h2>
 <p>Geometry instancing.</p>
 <figure class="align-default">
 <img alt="example-05-instancing" src="https://github.com/bkaradzic/bgfx/raw/master/examples/05-instancing/screenshot.png" />
 </figure>
 </section>
 <section id="bump">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/06-bump">06-bump</a><a class="headerlink" href="#bump" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/06-bump">06-bump</a><a class="headerlink" href="#bump" title="Link to this heading"></a></h2>
 <p>Loading textures.</p>
 <figure class="align-default">
 <img alt="example-06-bump" src="https://github.com/bkaradzic/bgfx/raw/master/examples/06-bump/screenshot.png" />
 </figure>
 </section>
 <section id="callback">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/07-callback">07-callback</a><a class="headerlink" href="#callback" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/07-callback">07-callback</a><a class="headerlink" href="#callback" title="Link to this heading"></a></h2>
 <p>Implementing application specific callbacks for taking screen shots,
 caching OpenGL binary shaders, and video capture.</p>
 </section>
 <section id="update">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/08-update">08-update</a><a class="headerlink" href="#update" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/08-update">08-update</a><a class="headerlink" href="#update" title="Link to this heading"></a></h2>
 <p>Updating textures.</p>
 </section>
 <section id="hdr">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/09-hdr">09-hdr</a><a class="headerlink" href="#hdr" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/09-hdr">09-hdr</a><a class="headerlink" href="#hdr" title="Link to this heading"></a></h2>
 <p>Using multiple views with frame buffers, and view order remapping.</p>
 <figure class="align-default">
 <img alt="example-09-hdr" src="https://github.com/bkaradzic/bgfx/raw/master/examples/09-hdr/screenshot.png" />
 </figure>
 </section>
 <section id="font">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/10-font">10-font</a><a class="headerlink" href="#font" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/10-font">10-font</a><a class="headerlink" href="#font" title="Link to this heading"></a></h2>
 <p>Use the font system to display text and styled text.</p>
 <figure class="align-default">
 <img alt="example-10-font" src="https://github.com/bkaradzic/bgfx/raw/master/examples/10-font/screenshot.png" />
 </figure>
 </section>
 <section id="fontsdf">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/11-fontsdf">11-fontsdf</a><a class="headerlink" href="#fontsdf" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/11-fontsdf">11-fontsdf</a><a class="headerlink" href="#fontsdf" title="Link to this heading"></a></h2>
 <p>Use a single distance field font to render text of various size.</p>
 <figure class="align-default">
 <img alt="example-11-fontsdf" src="https://github.com/bkaradzic/bgfx/raw/master/examples/11-fontsdf/screenshot.png" />
 </figure>
 </section>
 <section id="lod">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/12-lod">12-lod</a><a class="headerlink" href="#lod" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/12-lod">12-lod</a><a class="headerlink" href="#lod" title="Link to this heading"></a></h2>
 <p>Mesh LOD transitions.</p>
 <figure class="align-default">
 <img alt="example-12-lod" src="https://github.com/bkaradzic/bgfx/raw/master/examples/12-lod/screenshot.png" />
 </figure>
 </section>
 <section id="stencil">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/13-stencil">13-stencil</a><a class="headerlink" href="#stencil" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/13-stencil">13-stencil</a><a class="headerlink" href="#stencil" title="Link to this heading"></a></h2>
 <p>Stencil reflections and shadows.</p>
 <figure class="align-default">
 <img alt="example-13-stencil" src="https://github.com/bkaradzic/bgfx/raw/master/examples/13-stencil/screenshot.png" />
 </figure>
 </section>
 <section id="shadowvolumes">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/14-shadowvolumes">14-shadowvolumes</a><a class="headerlink" href="#shadowvolumes" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/14-shadowvolumes">14-shadowvolumes</a><a class="headerlink" href="#shadowvolumes" title="Link to this heading"></a></h2>
 <p>Shadow volumes.</p>
 <figure class="align-default">
 <img alt="example-14-shadowvolumes" src="https://github.com/bkaradzic/bgfx/raw/master/examples/14-shadowvolumes/screenshot.png" />
 </figure>
 </section>
 <section id="shadowmaps-simple">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/15-shadowmaps-simple">15-shadowmaps-simple</a><a class="headerlink" href="#shadowmaps-simple" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/15-shadowmaps-simple">15-shadowmaps-simple</a><a class="headerlink" href="#shadowmaps-simple" title="Link to this heading"></a></h2>
 <figure class="align-default">
 <img alt="example-15-shadowmaps-simple" src="https://github.com/bkaradzic/bgfx/raw/master/examples/15-shadowmaps-simple/screenshot.png" />
 </figure>
 </section>
 <section id="shadowmaps">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/16-shadowmaps">16-shadowmaps</a><a class="headerlink" href="#shadowmaps" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/16-shadowmaps">16-shadowmaps</a><a class="headerlink" href="#shadowmaps" title="Link to this heading"></a></h2>
 <figure class="align-default">
 <img alt="example-16-shadowmaps" src="https://github.com/bkaradzic/bgfx/raw/master/examples/16-shadowmaps/screenshot.png" />
 </figure>
 </section>
 <section id="drawstress">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/17-drawstress">17-drawstress</a><a class="headerlink" href="#drawstress" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/examples/17-drawstress">17-drawstress</a><a class="headerlink" href="#drawstress" title="Link to this heading"></a></h2>
 <section id="hz">
-<h3>60Hz<a class="headerlink" href="#hz" title="Link to this heading"></a></h3>
+<h3>60Hz<a class="headerlink" href="#hz" title="Link to this heading"></a></h3>
 <p>Draw stress is CPU stress test to show what is the maximum number of
 draw calls while maintaining 60Hz frame rate. bgfx currently has default
 limit of 64K draw calls per frame. You can increase this limit by
@@ -797,7 +800,7 @@ changing <code class="docutils literal notranslate"><span class="pre">BGFX_CONFI
 </ul>
 </section>
 <section id="hz-test-for-browsers">
-<h3>30Hz (test for browsers)<a class="headerlink" href="#hz-test-for-browsers" title="Link to this heading"></a></h3>
+<h3>30Hz (test for browsers)<a class="headerlink" href="#hz-test-for-browsers" title="Link to this heading"></a></h3>
 <p>By default browsers are using vsync, and don’t have option to turn it
 off programmatically.</p>
 <table class="docutils align-default">
@@ -921,106 +924,106 @@ off programmatically.</p>
 </section>
 </section>
 <section id="ibl">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/18-ibl">18-ibl</a><a class="headerlink" href="#ibl" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/18-ibl">18-ibl</a><a class="headerlink" href="#ibl" title="Link to this heading"></a></h2>
 <p>Image-based lighting.</p>
 <figure class="align-default">
 <img alt="example-18-ibl" src="https://github.com/bkaradzic/bgfx/raw/master/examples/18-ibl/screenshot.png" />
 </figure>
 </section>
 <section id="oit">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/19-oit">19-oit</a><a class="headerlink" href="#oit" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/19-oit">19-oit</a><a class="headerlink" href="#oit" title="Link to this heading"></a></h2>
 <p>Weighted, Blended Order-Independent Transparency</p>
 <figure class="align-default">
 <img alt="example-19-oit" src="https://github.com/bkaradzic/bgfx/raw/master/examples/19-oit/screenshot.png" />
 </figure>
 </section>
 <section id="nanovg">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/20-nanovg">20-nanovg</a><a class="headerlink" href="#nanovg" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/20-nanovg">20-nanovg</a><a class="headerlink" href="#nanovg" title="Link to this heading"></a></h2>
 <p>NanoVG is small antialiased vector graphics rendering library.</p>
 <figure class="align-default">
 <img alt="example-20-nanovg" src="https://github.com/bkaradzic/bgfx/raw/master/examples/20-nanovg/screenshot.png" />
 </figure>
 </section>
 <section id="deferred">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/21-deferred">21-deferred</a><a class="headerlink" href="#deferred" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/21-deferred">21-deferred</a><a class="headerlink" href="#deferred" title="Link to this heading"></a></h2>
 <p>MRT rendering and deferred shading.</p>
 <figure class="align-default">
 <img alt="example-21-deferred" src="https://github.com/bkaradzic/bgfx/raw/master/examples/21-deferred/screenshot.png" />
 </figure>
 </section>
 <section id="windows">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/22-windows">22-windows</a><a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/22-windows">22-windows</a><a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
 <p>Rendering into multiple windows.</p>
 </section>
 <section id="vectordisplay">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/23-vectordisplay">23-vectordisplay</a><a class="headerlink" href="#vectordisplay" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/23-vectordisplay">23-vectordisplay</a><a class="headerlink" href="#vectordisplay" title="Link to this heading"></a></h2>
 <p>Rendering lines as oldschool vectors.</p>
 <figure class="align-default">
 <img alt="example-23-vectordisplay" src="https://github.com/bkaradzic/bgfx/raw/master/examples/23-vectordisplay/screenshot.png" />
 </figure>
 </section>
 <section id="nbody">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/24-nbody">24-nbody</a><a class="headerlink" href="#nbody" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/24-nbody">24-nbody</a><a class="headerlink" href="#nbody" title="Link to this heading"></a></h2>
 <p>N-body simulation with compute shaders using buffers.</p>
 <figure class="align-default">
 <img alt="example-24-nbody" src="https://github.com/bkaradzic/bgfx/raw/master/examples/24-nbody/screenshot.png" />
 </figure>
 </section>
 <section id="c99">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/25-c99">25-c99</a><a class="headerlink" href="#c99" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/25-c99">25-c99</a><a class="headerlink" href="#c99" title="Link to this heading"></a></h2>
 <p>Initialization and debug text with C99 API.</p>
 </section>
 <section id="occlusion">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/26-occlusion">26-occlusion</a><a class="headerlink" href="#occlusion" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/26-occlusion">26-occlusion</a><a class="headerlink" href="#occlusion" title="Link to this heading"></a></h2>
 <p>Using occlusion query for conditional rendering.</p>
 <figure class="align-default">
 <img alt="example-26-occlusion" src="https://github.com/bkaradzic/bgfx/raw/master/examples/26-occlusion/screenshot.png" />
 </figure>
 </section>
 <section id="terrain">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/27-terrain">27-terrain</a><a class="headerlink" href="#terrain" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/27-terrain">27-terrain</a><a class="headerlink" href="#terrain" title="Link to this heading"></a></h2>
 <p>Terrain painting example.</p>
 <figure class="align-default">
 <img alt="example-27-terrain" src="https://github.com/bkaradzic/bgfx/raw/master/examples/27-terrain/screenshot.png" />
 </figure>
 </section>
 <section id="wireframe">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/28-wireframe">28-wireframe</a><a class="headerlink" href="#wireframe" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/28-wireframe">28-wireframe</a><a class="headerlink" href="#wireframe" title="Link to this heading"></a></h2>
 <p>Drawing wireframe mesh.</p>
 <figure class="align-default">
 <img alt="example-28-wireframe" src="https://github.com/bkaradzic/bgfx/raw/master/examples/28-wireframe/screenshot.png" />
 </figure>
 </section>
 <section id="debugdraw">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/29-debugdraw">29-debugdraw</a><a class="headerlink" href="#debugdraw" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/29-debugdraw">29-debugdraw</a><a class="headerlink" href="#debugdraw" title="Link to this heading"></a></h2>
 <p>Debug draw.</p>
 <figure class="align-default">
 <img alt="example-29-debugdraw" src="https://github.com/bkaradzic/bgfx/raw/master/examples/29-debugdraw/screenshot.png" />
 </figure>
 </section>
 <section id="picking">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/30-picking">30-picking</a><a class="headerlink" href="#picking" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/30-picking">30-picking</a><a class="headerlink" href="#picking" title="Link to this heading"></a></h2>
 <p>Mouse picking via GPU readback.</p>
 <figure class="align-default">
 <img alt="example-30-picking" src="https://github.com/bkaradzic/bgfx/raw/master/examples/30-picking/screenshot.png" />
 </figure>
 </section>
 <section id="rsm">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/31-rsm">31-rsm</a><a class="headerlink" href="#rsm" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/31-rsm">31-rsm</a><a class="headerlink" href="#rsm" title="Link to this heading"></a></h2>
 <p>Global Illumination with Reflective Shadow Map.</p>
 <figure class="align-default">
 <img alt="example-31-rsm" src="https://github.com/bkaradzic/bgfx/raw/master/examples/31-rsm/screenshot.png" />
 </figure>
 </section>
 <section id="particles">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/32-particles">32-particles</a><a class="headerlink" href="#particles" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/32-particles">32-particles</a><a class="headerlink" href="#particles" title="Link to this heading"></a></h2>
 <p>Particles.</p>
 <figure class="align-default">
 <img alt="example-32-particles" src="https://github.com/bkaradzic/bgfx/raw/master/examples/32-particles/screenshot.png" />
 </figure>
 </section>
 <section id="pom">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/33-pom">33-pom</a><a class="headerlink" href="#pom" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/33-pom">33-pom</a><a class="headerlink" href="#pom" title="Link to this heading"></a></h2>
 <p>Parallax occlusion mapping.</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1033,28 +1036,28 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="mvs">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/34-mvs">34-mvs</a><a class="headerlink" href="#mvs" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/34-mvs">34-mvs</a><a class="headerlink" href="#mvs" title="Link to this heading"></a></h2>
 <p>Multiple vertex streams.</p>
 <figure class="align-default">
 <img alt="example-34-mvs" src="https://github.com/bkaradzic/bgfx/raw/master/examples/34-mvs/screenshot.png" />
 </figure>
 </section>
 <section id="dynamic">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/35-dynamic">35-dynamic</a><a class="headerlink" href="#dynamic" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/35-dynamic">35-dynamic</a><a class="headerlink" href="#dynamic" title="Link to this heading"></a></h2>
 <p>Dynamic buffers update.</p>
 <figure class="align-default">
 <img alt="example-35-dynamic" src="https://github.com/bkaradzic/bgfx/raw/master/examples/35-dynamic/screenshot.png" />
 </figure>
 </section>
 <section id="sky">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/36-sky">36-sky</a><a class="headerlink" href="#sky" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/36-sky">36-sky</a><a class="headerlink" href="#sky" title="Link to this heading"></a></h2>
 <p>Perez dynamic sky model.</p>
 <figure class="align-default">
 <img alt="example-36-sky" src="https://github.com/bkaradzic/bgfx/raw/master/examples/36-sky/screenshot.png" />
 </figure>
 </section>
 <section id="gpudrivenrendering">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/37-gpudrivenrendering">37-gpudrivenrendering</a><a class="headerlink" href="#gpudrivenrendering" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/37-gpudrivenrendering">37-gpudrivenrendering</a><a class="headerlink" href="#gpudrivenrendering" title="Link to this heading"></a></h2>
 <p>GPU-Driven Rendering.</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1069,7 +1072,7 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="bloom">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/38-bloom">38-bloom</a><a class="headerlink" href="#bloom" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/38-bloom">38-bloom</a><a class="headerlink" href="#bloom" title="Link to this heading"></a></h2>
 <p>Bloom.</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1082,7 +1085,7 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="assao">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/39-assao">39-assao</a><a class="headerlink" href="#assao" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/39-assao">39-assao</a><a class="headerlink" href="#assao" title="Link to this heading"></a></h2>
 <p>Adaptive Screen Space Ambient Occlusion.</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1095,14 +1098,14 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="svt">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/40-svt">40-svt</a><a class="headerlink" href="#svt" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/40-svt">40-svt</a><a class="headerlink" href="#svt" title="Link to this heading"></a></h2>
 <p>Sparse Virtual Textures.</p>
 <figure class="align-default">
 <img alt="example-40-svt" src="https://github.com/bkaradzic/bgfx/raw/master/examples/40-svt/screenshot.png" />
 </figure>
 </section>
 <section id="tess">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/41-tess">41-tess</a><a class="headerlink" href="#tess" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/41-tess">41-tess</a><a class="headerlink" href="#tess" title="Link to this heading"></a></h2>
 <p>Adaptive GPU Tessellation with Compute Shaders</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1115,7 +1118,7 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="bunnylod">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/42-bunnylod">42-bunnylod</a><a class="headerlink" href="#bunnylod" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/42-bunnylod">42-bunnylod</a><a class="headerlink" href="#bunnylod" title="Link to this heading"></a></h2>
 <p>Simple Polygon Reduction</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1129,7 +1132,7 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="denoise">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/43-denoise">43-denoise</a><a class="headerlink" href="#denoise" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/43-denoise">43-denoise</a><a class="headerlink" href="#denoise" title="Link to this heading"></a></h2>
 <p>Denoise</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1144,14 +1147,14 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="sss">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/44-sss">44-sss</a><a class="headerlink" href="#sss" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/44-sss">44-sss</a><a class="headerlink" href="#sss" title="Link to this heading"></a></h2>
 <p>Screen-Space Shadows</p>
 <figure class="align-default">
 <img alt="example-44-sss" src="https://github.com/bkaradzic/bgfx/raw/master/examples/44-sss/screenshot.png" />
 </figure>
 </section>
 <section id="bokeh">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/45-bokeh">45-bokeh</a><a class="headerlink" href="#bokeh" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/45-bokeh">45-bokeh</a><a class="headerlink" href="#bokeh" title="Link to this heading"></a></h2>
 <p>Bokeh Depth of Field</p>
 <dl class="simple">
 <dt>Reference(s):</dt><dd><ul class="simple">
@@ -1164,7 +1167,7 @@ off programmatically.</p>
 </figure>
 </section>
 <section id="fsr">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/46-fsr">46-fsr</a><a class="headerlink" href="#fsr" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/46-fsr">46-fsr</a><a class="headerlink" href="#fsr" title="Link to this heading"></a></h2>
 <p>AMD FidelityFX Super Resolution - high-quality solution for producing high resolution frames
 from lower resolution inputs.</p>
 <figure class="align-default">
@@ -1172,7 +1175,7 @@ from lower resolution inputs.</p>
 </figure>
 </section>
 <section id="pixelformats">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/47-pixelformats">47-pixelformats</a><a class="headerlink" href="#pixelformats" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/47-pixelformats">47-pixelformats</a><a class="headerlink" href="#pixelformats" title="Link to this heading"></a></h2>
 <p>Pixel Formats</p>
 <p>View and test texture formats</p>
 <figure class="align-default">
@@ -1180,7 +1183,7 @@ from lower resolution inputs.</p>
 </figure>
 </section>
 <section id="drawindirect">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/48-drawindirect">48-drawindirect</a><a class="headerlink" href="#drawindirect" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/48-drawindirect">48-drawindirect</a><a class="headerlink" href="#drawindirect" title="Link to this heading"></a></h2>
 <p>Draw Indirect</p>
 <p>Simple example of indirect rendering + an implementation of multidraw indirect</p>
 <dl class="simple">
@@ -1195,7 +1198,7 @@ from lower resolution inputs.</p>
 </figure>
 </section>
 <section id="hextile">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/49-hextile">49-hextile</a><a class="headerlink" href="#hextile" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/49-hextile">49-hextile</a><a class="headerlink" href="#hextile" title="Link to this heading"></a></h2>
 <p>Realtime Hex-Tiling</p>
 <p>Simple example of how to use Hex-tiling in real time, ported from <a class="reference external" href="https://github.com/mmikk/hextile-demo">https://github.com/mmikk/hextile-demo</a></p>
 <dl class="simple">
@@ -1209,6 +1212,11 @@ from lower resolution inputs.</p>
 <img alt="example-49-hextile" src="https://github.com/bkaradzic/bgfx/raw/master/examples/49-hextile/screenshot.png" />
 </figure>
 </section>
+<section id="headless">
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples/50-headless">50-headless</a><a class="headerlink" href="#headless" title="Link to this heading"></a></h2>
+<p>Demonstrate running bgfx in headless mode. Initialize bgfx without window, render into frame buffer,
+and output result into an image.</p>
+</section>
 </section>
 
 
@@ -1222,7 +1230,7 @@ from lower resolution inputs.</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 21 - 13
genindex.html

@@ -5,12 +5,14 @@
 <head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Index &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Index &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -259,6 +261,10 @@
       <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits18maxTextureSamplersE">bgfx::Caps::Limits::maxTextureSamplers (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits14maxTextureSizeE">bgfx::Caps::Limits::maxTextureSize (C++ member)</a>
+</li>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits18maxTransientIbSizeE">bgfx::Caps::Limits::maxTransientIbSize (C++ member)</a>
+</li>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits18maxTransientVbSizeE">bgfx::Caps::Limits::maxTransientVbSize (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits11maxUniformsE">bgfx::Caps::Limits::maxUniforms (C++ member)</a>
 </li>
@@ -272,9 +278,7 @@
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits17minResourceCbSizeE">bgfx::Caps::Limits::minResourceCbSize (C++ member)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits15transientIbSizeE">bgfx::Caps::Limits::transientIbSize (C++ member)</a>
-</li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits15transientVbSizeE">bgfx::Caps::Limits::transientVbSize (C++ member)</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Caps6Limits20minUniformBufferSizeE">bgfx::Caps::Limits::minUniformBufferSize (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Caps7numGPUsE">bgfx::Caps::numGPUs (C++ member)</a>
 </li>
@@ -432,11 +436,13 @@
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits11maxEncodersE">bgfx::Init::Limits::maxEncoders (C++ member)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits17minResourceCbSizeE">bgfx::Init::Limits::minResourceCbSize (C++ member)</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits18maxTransientIbSizeE">bgfx::Init::Limits::maxTransientIbSize (C++ member)</a>
+</li>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits18maxTransientVbSizeE">bgfx::Init::Limits::maxTransientVbSize (C++ member)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits15transientIbSizeE">bgfx::Init::Limits::transientIbSize (C++ member)</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits17minResourceCbSizeE">bgfx::Init::Limits::minResourceCbSize (C++ member)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits15transientVbSizeE">bgfx::Init::Limits::transientVbSize (C++ member)</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx4Init6Limits20minUniformBufferSizeE">bgfx::Init::Limits::minUniformBufferSize (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx4Init12platformDataE">bgfx::Init::platformData (C++ member)</a>
 </li>
@@ -492,7 +498,7 @@
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx20OcclusionQueryResult4Enum7VisibleE">bgfx::OcclusionQueryResult::Enum::Visible (C++ enumerator)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx16overrideInternalE13TextureHandle8uint16_t8uint16_t7uint8_tN13TextureFormat4EnumE8uint64_t">bgfx::overrideInternal (C++ function)</a>, <a href="bgfx.html#_CPPv4N4bgfx16overrideInternalE13TextureHandle9uintptr_t">[1]</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx16overrideInternalE13TextureHandle8uint16_t8uint16_t7uint8_tN13TextureFormat4EnumE8uint64_t">bgfx::overrideInternal (C++ function)</a>, <a href="bgfx.html#_CPPv4N4bgfx16overrideInternalE13TextureHandle9uintptr_t8uint16_t">[1]</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx12PlatformDataE">bgfx::PlatformData (C++ struct)</a>
 </li>
@@ -550,7 +556,9 @@
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx10Resolution14debugTextScaleE">bgfx::Resolution::debugTextScale (C++ member)</a>
 </li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx10Resolution6formatE">bgfx::Resolution::format (C++ member)</a>
+      <li><a href="bgfx.html#_CPPv4N4bgfx10Resolution11formatColorE">bgfx::Resolution::formatColor (C++ member)</a>
+</li>
+      <li><a href="bgfx.html#_CPPv4N4bgfx10Resolution18formatDepthStencilE">bgfx::Resolution::formatDepthStencil (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx10Resolution6heightE">bgfx::Resolution::height (C++ member)</a>
 </li>
@@ -695,11 +703,11 @@
       <li><a href="bgfx.html#_CPPv4N4bgfx5Stats10waitRenderE">bgfx::Stats::waitRender (C++ member)</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx5Stats10waitSubmitE">bgfx::Stats::waitSubmit (C++ member)</a>
-</li>
-      <li><a href="bgfx.html#_CPPv4N4bgfx5Stats5widthE">bgfx::Stats::width (C++ member)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="bgfx.html#_CPPv4N4bgfx5Stats5widthE">bgfx::Stats::width (C++ member)</a>
+</li>
       <li><a href="bgfx.html#_CPPv4N4bgfx6submitE6ViewId13ProgramHandle20IndirectBufferHandle8uint32_t17IndexBufferHandle8uint32_t8uint32_t8uint32_t7uint8_t">bgfx::submit (C++ function)</a>, <a href="bgfx.html#_CPPv4N4bgfx6submitE6ViewId13ProgramHandle20IndirectBufferHandle8uint32_t8uint32_t8uint32_t7uint8_t">[1]</a>, <a href="bgfx.html#_CPPv4N4bgfx6submitE6ViewId13ProgramHandle20OcclusionQueryHandle8uint32_t7uint8_t">[2]</a>, <a href="bgfx.html#_CPPv4N4bgfx6submitE6ViewId13ProgramHandle8uint32_t7uint8_t">[3]</a>
 </li>
       <li><a href="bgfx.html#_CPPv4N4bgfx13TextureFormatE">bgfx::TextureFormat (C++ struct)</a>
@@ -1332,7 +1340,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 8 - 5
index.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Documentation &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Documentation &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -73,7 +75,7 @@
            <div itemprop="articleBody">
              
   <section id="documentation">
-<h1>Documentation<a class="headerlink" href="#documentation" title="Link to this heading"></a></h1>
+<h1>Documentation<a class="headerlink" href="#documentation" title="Link to this heading"></a></h1>
 <p>Cross-platform, graphics API agnostic, “Bring Your Own Engine/Framework” style rendering library,
 licensed under permissive BSD-2 clause open source license.</p>
 <dl class="simple">
@@ -83,7 +85,7 @@ licensed under permissive BSD-2 clause open source license.</p>
 </dd>
 </dl>
 <section id="contents">
-<h2>Contents<a class="headerlink" href="#contents" title="Link to this heading"></a></h2>
+<h2>Contents<a class="headerlink" href="#contents" title="Link to this heading"></a></h2>
 <div class="toctree-wrapper compound">
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a><ul>
@@ -187,6 +189,7 @@ licensed under permissive BSD-2 clause open source license.</p>
 <li class="toctree-l2"><a class="reference internal" href="examples.html#pixelformats">47-pixelformats</a></li>
 <li class="toctree-l2"><a class="reference internal" href="examples.html#drawindirect">48-drawindirect</a></li>
 <li class="toctree-l2"><a class="reference internal" href="examples.html#hextile">49-hextile</a></li>
+<li class="toctree-l2"><a class="reference internal" href="examples.html#headless">50-headless</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="bgfx.html">API Reference</a><ul>
@@ -287,7 +290,7 @@ licensed under permissive BSD-2 clause open source license.</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 13 - 11
internals.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Internals &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Internals &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -85,9 +87,9 @@
            <div itemprop="articleBody">
              
   <section id="internals">
-<h1>Internals<a class="headerlink" href="#internals" title="Link to this heading"></a></h1>
+<h1>Internals<a class="headerlink" href="#internals" title="Link to this heading"></a></h1>
 <section id="sort-based-draw-call-bucketing">
-<h2>Sort based draw call bucketing<a class="headerlink" href="#sort-based-draw-call-bucketing" title="Link to this heading"></a></h2>
+<h2>Sort based draw call bucketing<a class="headerlink" href="#sort-based-draw-call-bucketing" title="Link to this heading"></a></h2>
 <p>bgfx is using sort-based draw call bucketing. This means that submission order doesn’t necessarily match the rendering order, but on the low-level they will be sorted and ordered correctly. On the high level bgfx uses <strong>declarative API</strong> and internal sorting allows more optimal way of submitting draw calls for all passes at one place, and on the low-level this allows better optimization of rendering order. This sometimes creates undesired results usually for GUI rendering, where draw order should usually match submit order. bgfx provides way to enable sequential rendering for these cases (see <code class="docutils literal notranslate"><span class="pre">bgfx::setViewMode</span></code>).</p>
 <blockquote>
 <div><ul class="simple">
@@ -96,32 +98,32 @@
 </div></blockquote>
 </section>
 <section id="api-and-render-thread">
-<h2>API and render thread<a class="headerlink" href="#api-and-render-thread" title="Link to this heading"></a></h2>
+<h2>API and render thread<a class="headerlink" href="#api-and-render-thread" title="Link to this heading"></a></h2>
 <p>API thread is thread from which <code class="docutils literal notranslate"><span class="pre">bgfx::init</span></code> is called. Once <code class="docutils literal notranslate"><span class="pre">bgfx::init</span></code> is called on thread, internally bgfx assumes that all API calls will be called from the same thread with exception of Resource, View, and Encoder API.</p>
 <p>Render thread from where internal rendering <code class="docutils literal notranslate"><span class="pre">bgfx::renderFrame</span></code> is called. On most of OS’ it’s required that this call be called on thread that OS created when executing process (some refer to this thread as “main” thread, or thread where <code class="docutils literal notranslate"><span class="pre">main</span></code> function is called).</p>
 <p>When bgfx is compiled with option <code class="docutils literal notranslate"><span class="pre">BGFX_CONFIG_MULTITHREADED=1</span></code> (default is on) <code class="docutils literal notranslate"><span class="pre">bgfx::renderFrame</span></code> can be called by user. It’s required to be called before <code class="docutils literal notranslate"><span class="pre">bgfx::init</span></code> from thread that will be used as render thread. If both <code class="docutils literal notranslate"><span class="pre">bgfx::renderFrame</span></code> and <code class="docutils literal notranslate"><span class="pre">bgfx::init</span></code> are called from the same thread, bgfx will switch to execute in single threaded mode, and calling <code class="docutils literal notranslate"><span class="pre">bgfx::renderFrame</span></code> is not required, since it will be called automatically during <code class="docutils literal notranslate"><span class="pre">bgfx::frame</span></code> call.</p>
 </section>
 <section id="resource-api">
-<h2>Resource API<a class="headerlink" href="#resource-api" title="Link to this heading"></a></h2>
+<h2>Resource API<a class="headerlink" href="#resource-api" title="Link to this heading"></a></h2>
 <p>Any API call starting with <code class="docutils literal notranslate"><span class="pre">bgfx::create*</span></code>, <code class="docutils literal notranslate"><span class="pre">bgfx::destroy*</span></code>, <code class="docutils literal notranslate"><span class="pre">bgfx::update*</span></code>, <code class="docutils literal notranslate"><span class="pre">bgfx::alloc*</span></code> is considered part of resource API. Internally resource API calls are guarded by mutex. There is no limit of number of threads that can call resource API simultaneously. Calling any resource API is infrequent, and functions are cheap since most of work with resource is done at later point on render thread.</p>
 </section>
 <section id="view-api">
-<h2>View API<a class="headerlink" href="#view-api" title="Link to this heading"></a></h2>
+<h2>View API<a class="headerlink" href="#view-api" title="Link to this heading"></a></h2>
 <p>Any API call starting with <code class="docutils literal notranslate"><span class="pre">bgfx::setView*</span></code> is considered part of view API. View API is not designed to be thread safe at all since all views are independentent from each other. Calling any view API for different views from different threads is safe. What’s not safe is to update the same view from multiple threads. This will lead to undefined behavior. Only view API that has to be set before any draw calls are issued is view mode <code class="docutils literal notranslate"><span class="pre">bgfx::setViewMode</span></code>. Internal encoder requires view mode to select sort key encoding and if user changes view mode after submit it will cause incorrect sort behavior within the view.</p>
 </section>
 <section id="encoder-api">
-<h2>Encoder API<a class="headerlink" href="#encoder-api" title="Link to this heading"></a></h2>
+<h2>Encoder API<a class="headerlink" href="#encoder-api" title="Link to this heading"></a></h2>
 <p>Encoder API can be obtained by calling <code class="docutils literal notranslate"><span class="pre">bgfx::begin</span></code>. bgfx by default allows 8 simultaneous threads to use encoders. This can be configured by changing <code class="docutils literal notranslate"><span class="pre">Limits.maxEncoders</span></code> init option of <code class="docutils literal notranslate"><span class="pre">bgfx::Init</span></code> structure.</p>
 </section>
 <section id="customization">
-<h2>Customization<a class="headerlink" href="#customization" title="Link to this heading"></a></h2>
+<h2>Customization<a class="headerlink" href="#customization" title="Link to this heading"></a></h2>
 <p>By default each platform has sane default values. For example on Windows default renderer is DirectX, on Linux it is OpenGL, and on macOS it’s Metal. On Windows platform almost all rendering backends are available. For OpenGL ES on desktop you can find more information at:- <a class="reference external" href="http://www.g-truc.net/post-0457.html">OpenGL ES 2.0 and EGL on desktop</a></p>
 <p>If you’re targeting specific mobile hardware, you can find GLES support in their official SDKs: <a class="reference external" href="http://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools-and-resources">Adreno
 SDK</a>, <a class="reference external" href="http://www.malideveloper.com/">Mali SDK</a>, <a class="reference external" href="http://www.imgtec.com/powervr/insider/sdkdownloads/">PowerVR SDK</a>.</p>
 <p>All configuration settings are located inside <a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/config.h">src/config.h</a>.</p>
 <p>Every <code class="docutils literal notranslate"><span class="pre">BGFX_CONFIG_*</span></code> setting can be changed by passing defines thru compiler switches. For example setting preprocessor define <code class="docutils literal notranslate"><span class="pre">BGFX_CONFIG_RENDERER_OPENGL=1</span></code> will change backend renderer to OpenGL 2.1. on Windows. Since rendering APIs are platform specific, this obviously won’t work nor make sense in all cases.</p>
 <section id="options">
-<h3>Options<a class="headerlink" href="#options" title="Link to this heading"></a></h3>
+<h3>Options<a class="headerlink" href="#options" title="Link to this heading"></a></h3>
 <p><code class="docutils literal notranslate"><span class="pre">BGFX_CONFIG_MULTITHREADED</span></code> is used to enable/disable threading support inside bgfx. By default set to 1 on all platforms that support threading.</p>
 </section>
 </section>
@@ -138,7 +140,7 @@ SDK</a>, <a class="reference external" href="http://www.malideveloper.com/">Mali
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 9 - 7
license.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>License &mdash; bgfx 1.129.8834 documentation</title>
+  <title>License &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -78,9 +80,9 @@
            <div itemprop="articleBody">
              
   <section id="license">
-<h1>License<a class="headerlink" href="#license" title="Link to this heading"></a></h1>
+<h1>License<a class="headerlink" href="#license" title="Link to this heading"></a></h1>
 <section id="license-bsd-2-clause">
-<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/LICENSE">License (BSD 2-clause)</a><a class="headerlink" href="#license-bsd-2-clause" title="Link to this heading"></a></h2>
+<h2><a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/LICENSE">License (BSD 2-clause)</a><a class="headerlink" href="#license-bsd-2-clause" title="Link to this heading"></a></h2>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Copyright</span> <span class="mi">2010</span><span class="o">-</span><span class="mi">2025</span> <span class="n">Branimir</span> <span class="n">Karadzic</span>
 
 <span class="n">Redistribution</span> <span class="ow">and</span> <span class="n">use</span> <span class="ow">in</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">binary</span> <span class="n">forms</span><span class="p">,</span> <span class="k">with</span> <span class="ow">or</span> <span class="n">without</span> <span class="n">modification</span><span class="p">,</span>
@@ -107,7 +109,7 @@
 </div>
 </section>
 <section id="rd-party-libraries">
-<h2>3rd Party Libraries<a class="headerlink" href="#rd-party-libraries" title="Link to this heading"></a></h2>
+<h2>3rd Party Libraries<a class="headerlink" href="#rd-party-libraries" title="Link to this heading"></a></h2>
 <p>All required 3rd party libraries are included in bgfx repository in
 <a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/3rdparty">3rdparty/</a>
 directory.</p>
@@ -131,7 +133,7 @@ directory.</p>
 </div></blockquote>
 </section>
 <section id="assets">
-<h2>Assets<a class="headerlink" href="#assets" title="Link to this heading"></a></h2>
+<h2>Assets<a class="headerlink" href="#assets" title="Link to this heading"></a></h2>
 <p>Bunny</p>
 <blockquote>
 <div><ul class="simple">
@@ -260,7 +262,7 @@ directory.</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

BIN
objects.inv


+ 25 - 20
overview.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Overview &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Overview &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -95,16 +97,16 @@
            <div itemprop="articleBody">
              
   <section id="overview">
-<h1>Overview<a class="headerlink" href="#overview" title="Link to this heading"></a></h1>
+<h1>Overview<a class="headerlink" href="#overview" title="Link to this heading"></a></h1>
 <section id="what-is-it">
-<h2>What is it?<a class="headerlink" href="#what-is-it" title="Link to this heading"></a></h2>
+<h2>What is it?<a class="headerlink" href="#what-is-it" title="Link to this heading"></a></h2>
 <p>Cross-platform, graphics API agnostic, “Bring Your Own Engine/Framework” style rendering library,
 licensed under permissive BSD-2 clause open source license.</p>
 <p>
 <iframe src="https://ghbtns.com/github-btn.html?user=bkaradzic&repo=bgfx&type=star&count=true&size=large" frameborder="0" scrolling="0" width="160px" height="30px"></iframe>
 <iframe src="https://ghbtns.com/github-btn.html?user=bkaradzic&repo=bgfx&type=fork&count=true&size=large" frameborder="0" scrolling="0" width="158px" height="30px"></iframe>
 </p><section id="supported-rendering-backends">
-<h3>Supported rendering backends<a class="headerlink" href="#supported-rendering-backends" title="Link to this heading"></a></h3>
+<h3>Supported rendering backends<a class="headerlink" href="#supported-rendering-backends" title="Link to this heading"></a></h3>
 <ul class="simple">
 <li><p>Direct3D 11</p></li>
 <li><p>Direct3D 12</p></li>
@@ -120,9 +122,9 @@ licensed under permissive BSD-2 clause open source license.</p>
 </ul>
 </section>
 <section id="supported-platforms">
-<h3>Supported Platforms<a class="headerlink" href="#supported-platforms" title="Link to this heading"></a></h3>
+<h3>Supported Platforms<a class="headerlink" href="#supported-platforms" title="Link to this heading"></a></h3>
 <ul class="simple">
-<li><p>Android (14+)</p></li>
+<li><p>Android (4.0+) - API 14 or later</p></li>
 <li><p>iOS/iPadOS/tvOS (16.0+)</p></li>
 <li><p>Linux (both X11 and Wayland)</p></li>
 <li><p>macOS (13.0+)</p></li>
@@ -134,20 +136,21 @@ licensed under permissive BSD-2 clause open source license.</p>
 </ul>
 </section>
 <section id="supported-compilers">
-<h3>Supported Compilers<a class="headerlink" href="#supported-compilers" title="Link to this heading"></a></h3>
+<h3>Supported Compilers<a class="headerlink" href="#supported-compilers" title="Link to this heading"></a></h3>
 <ul class="simple">
 <li><p>Clang 11 and above</p></li>
 <li><p>GCC 11 and above</p></li>
-<li><p>VS2019 and above</p></li>
+<li><p>VS2022 and above</p></li>
 <li><p>Apple clang 12 and above</p></li>
 </ul>
 </section>
 <section id="supported-languages">
-<h3>Supported Languages<a class="headerlink" href="#supported-languages" title="Link to this heading"></a></h3>
+<h3>Supported Languages<a class="headerlink" href="#supported-languages" title="Link to this heading"></a></h3>
 <ul class="simple">
 <li><p><a class="reference external" href="https://bkaradzic.github.io/bgfx/bgfx.html">C/C++ API documentation</a></p></li>
 <li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/bindings/bf">Beef API bindings</a></p></li>
-<li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/bindings/cs">C# language API bindings #1</a></p></li>
+<li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/bindings/cs">C# language API bindings</a></p></li>
+<li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/bindings/c3">C3 language API bindings</a></p></li>
 <li><p><a class="reference external" href="https://github.com/BindBC/bindbc-bgfx">D language API bindings</a></p></li>
 <li><p><a class="reference external" href="https://github.com/james4k/go-bgfx">Go language API bindings</a></p></li>
 <li><p><a class="reference external" href="https://github.com/haskell-game/bgfx">Haskell language API bindings</a></p></li>
@@ -163,13 +166,13 @@ licensed under permissive BSD-2 clause open source license.</p>
 </ul>
 </section>
 <section id="project-page">
-<h3>Project Page<a class="headerlink" href="#project-page" title="Link to this heading"></a></h3>
+<h3>Project Page<a class="headerlink" href="#project-page" title="Link to this heading"></a></h3>
 <ul class="simple">
 <li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx">https://github.com/bkaradzic/bgfx</a></p></li>
 </ul>
 </section>
 <section id="contact">
-<h3>Contact<a class="headerlink" href="#contact" title="Link to this heading"></a></h3>
+<h3>Contact<a class="headerlink" href="#contact" title="Link to this heading"></a></h3>
 <blockquote>
 <div><ul class="simple">
 <li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx/discussions">GitHub Discussions</a></p></li>
@@ -181,9 +184,9 @@ licensed under permissive BSD-2 clause open source license.</p>
 </section>
 </section>
 <section id="debugging-and-profiling">
-<h2>Debugging and Profiling<a class="headerlink" href="#debugging-and-profiling" title="Link to this heading"></a></h2>
+<h2>Debugging and Profiling<a class="headerlink" href="#debugging-and-profiling" title="Link to this heading"></a></h2>
 <section id="renderdoc">
-<h3>RenderDoc<a class="headerlink" href="#renderdoc" title="Link to this heading"></a></h3>
+<h3>RenderDoc<a class="headerlink" href="#renderdoc" title="Link to this heading"></a></h3>
 <p>Loading of RenderDoc is integrated in bgfx when using DX11 or OpenGL
 renderer. You can drop in <code class="docutils literal notranslate"><span class="pre">renderdoc.dll</span></code> from RenderDoc distribution
 into working directory, and it will be automatically loaded during bgfx
@@ -196,7 +199,7 @@ with RenderDoc and MSVC.</p>
 </section>
 </section>
 <section id="sdl-glfw-etc">
-<h2>SDL, GLFW, etc.<a class="headerlink" href="#sdl-glfw-etc" title="Link to this heading"></a></h2>
+<h2>SDL, GLFW, etc.<a class="headerlink" href="#sdl-glfw-etc" title="Link to this heading"></a></h2>
 <p>It is possible to use bgfx with SDL, GLFW and similar cross platform
 windowing libraries. The main requirement is that windowing library
 provides access to native window handle that’s used to create Direct3D
@@ -221,7 +224,7 @@ preprocessor define.</p>
 </div>
 </section>
 <section id="getting-involved">
-<h2>Getting Involved<a class="headerlink" href="#getting-involved" title="Link to this heading"></a></h2>
+<h2>Getting Involved<a class="headerlink" href="#getting-involved" title="Link to this heading"></a></h2>
 <p>Everyone is welcome to contribute to bgfx by submitting bug reports, testing on different
 platforms, writing examples (see <a class="reference external" href="https://github.com/bkaradzic/bgfx/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+needed%22">ideas</a>),
 improving documentation, profiling and optimizing, etc.</p>
@@ -231,7 +234,7 @@ improving documentation, profiling and optimizing, etc.</p>
 licensing terms.</strong></p>
 </div>
 <section id="contributors">
-<h3>Contributors<a class="headerlink" href="#contributors" title="Link to this heading"></a></h3>
+<h3>Contributors<a class="headerlink" href="#contributors" title="Link to this heading"></a></h3>
 <p>Chronological order:</p>
 <blockquote>
 <div><ul class="simple">
@@ -327,12 +330,14 @@ and <a class="reference external" href="examples.html#bokeh">45-bokeh</a> exampl
 <li><p>Biswapriyo Nath (<a class="reference external" href="https://github.com/Biswa96">&#64;Biswa96</a>) - GitHub Actions CI.</p></li>
 <li><p>Raziel Alphadios (<a class="reference external" href="https://github.com/RazielXYZ">&#64;RazielXYZ</a>) - Various fixes and improvements.</p></li>
 <li><p>IchorDev (<a class="reference external" href="https://github.com/ichordev">&#64;IchorDev</a>) - Improved D language bindings.</p></li>
+<li><p>Martijn Courteaux (<a class="reference external" href="https://github.com/mcourteaux">&#64;Martijn Courteaux</a>) - Various fixes and improvements.</p></li>
+<li><p>JazielGuerrero (<a class="reference external" href="https://github.com/JazielGuerrero">&#64;JazielGuerrero</a>) - C3 language bindings.</p></li>
 </ul>
 </div></blockquote>
 <p>and <a class="reference external" href="https://github.com/bkaradzic/bgfx/graphs/contributors">others</a>…</p>
 </section>
 <section id="repository-visualization">
-<h3>Repository visualization<a class="headerlink" href="#repository-visualization" title="Link to this heading"></a></h3>
+<h3>Repository visualization<a class="headerlink" href="#repository-visualization" title="Link to this heading"></a></h3>
 <img alt="https://api.star-history.com/svg?repos=bkaradzic/bgfx&amp;type=Date" src="https://api.star-history.com/svg?repos=bkaradzic/bgfx&amp;type=Date" />
 <p>
 <iframe width="694" height="390" src="https://www.youtube.com/embed/5ZeN_d_-BHo" frameborder="0" allowfullscreen></iframe>
@@ -351,7 +356,7 @@ and <a class="reference external" href="examples.html#bokeh">45-bokeh</a> exampl
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

+ 5 - 3
search.html

@@ -5,13 +5,15 @@
 <head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Search &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Search &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
     
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -93,7 +95,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
searchindex.js


+ 21 - 15
tools.html

@@ -6,12 +6,14 @@
   <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Tools &mdash; bgfx 1.129.8834 documentation</title>
+  <title>Tools &mdash; bgfx 1.132.8889 documentation</title>
       <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
       <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
 
   
-      <script src="_static/documentation_options.js?v=5d5779b2"></script>
+      <script src="_static/jquery.js?v=5d32c60e"></script>
+      <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="_static/documentation_options.js?v=8557c509"></script>
       <script src="_static/doctools.js?v=9bcbadda"></script>
       <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
     <script src="_static/js/theme.js"></script>
@@ -88,9 +90,9 @@
            <div itemprop="articleBody">
              
   <section id="tools">
-<h1>Tools<a class="headerlink" href="#tools" title="Link to this heading"></a></h1>
+<h1>Tools<a class="headerlink" href="#tools" title="Link to this heading"></a></h1>
 <section id="geometry-compiler-geometryc">
-<h2>Geometry Compiler (geometryc)<a class="headerlink" href="#geometry-compiler-geometryc" title="Link to this heading"></a></h2>
+<h2>Geometry Compiler (geometryc)<a class="headerlink" href="#geometry-compiler-geometryc" title="Link to this heading"></a></h2>
 <p>Converts Wavefront .obj, or glTF 2.0 mesh files to a format which is optimized for use with bgfx.</p>
 <p>Usage:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">geometryc</span> <span class="o">-</span><span class="n">f</span> <span class="o">&lt;</span><span class="ow">in</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">o</span> <span class="o">&lt;</span><span class="n">out</span><span class="o">&gt;</span>
@@ -179,11 +181,11 @@
 </div></blockquote>
 </section>
 <section id="geometry-viewer-geometryv">
-<h2>Geometry Viewer (geometryv)<a class="headerlink" href="#geometry-viewer-geometryv" title="Link to this heading"></a></h2>
+<h2>Geometry Viewer (geometryv)<a class="headerlink" href="#geometry-viewer-geometryv" title="Link to this heading"></a></h2>
 <p>A geometry viewer.</p>
 </section>
 <section id="shader-compiler-shaderc">
-<h2>Shader Compiler (shaderc)<a class="headerlink" href="#shader-compiler-shaderc" title="Link to this heading"></a></h2>
+<h2>Shader Compiler (shaderc)<a class="headerlink" href="#shader-compiler-shaderc" title="Link to this heading"></a></h2>
 <p>Shader Compiler is used to compile bgfx’s cross-platform shader language, which based on GLSL.
 It uses an ANSI C pre-processor to transform the GLSL-like language into HLSL.
 This method has certain drawbacks,
@@ -204,7 +206,7 @@ This file cannot include comments, and typically only one is necessary.</p></li>
 <code class="docutils literal notranslate"><span class="pre">varying.def.sc</span></code> must be used at the beginning of shader.</p></li>
 </ul>
 <section id="defines">
-<h3>Defines<a class="headerlink" href="#defines" title="Link to this heading"></a></h3>
+<h3>Defines<a class="headerlink" href="#defines" title="Link to this heading"></a></h3>
 <p>Shader Compiler also has the following default defines (default value is set to 0):</p>
 <blockquote>
 <div><table class="docutils align-default">
@@ -284,7 +286,7 @@ This file cannot include comments, and typically only one is necessary.</p></li>
 </div></blockquote>
 </section>
 <section id="predefined-uniforms">
-<h3>Predefined Uniforms<a class="headerlink" href="#predefined-uniforms" title="Link to this heading"></a></h3>
+<h3>Predefined Uniforms<a class="headerlink" href="#predefined-uniforms" title="Link to this heading"></a></h3>
 <blockquote>
 <div><table class="docutils align-default">
 <thead>
@@ -344,10 +346,14 @@ This file cannot include comments, and typically only one is necessary.</p></li>
 <td><p>Transform local-to-view  space.</p></td>
 </tr>
 <tr class="row-even"><td><p>mat4</p></td>
+<td><p>u_invModelView</p></td>
+<td><p>Transform view-to-local  space.</p></td>
+</tr>
+<tr class="row-odd"><td><p>mat4</p></td>
 <td><p>u_modelViewProj</p></td>
 <td><p>Transform local-to-clip  space.</p></td>
 </tr>
-<tr class="row-odd"><td><p>float</p></td>
+<tr class="row-even"><td><p>float</p></td>
 <td><p>u_alphaRef</p></td>
 <td><div class="line-block">
 <div class="line">The reference value to which incoming alpha</div>
@@ -361,7 +367,7 @@ This file cannot include comments, and typically only one is necessary.</p></li>
 <p>For more info, see the <a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/bgfx_shader.sh">shader helper macros</a>.</p>
 </section>
 <section id="vertex-shader-attributes">
-<h3>Vertex Shader Attributes<a class="headerlink" href="#vertex-shader-attributes" title="Link to this heading"></a></h3>
+<h3>Vertex Shader Attributes<a class="headerlink" href="#vertex-shader-attributes" title="Link to this heading"></a></h3>
 <p><code class="docutils literal notranslate"><span class="pre">$input</span></code> tokens for vertex shader can be only following:</p>
 <blockquote>
 <div><table class="docutils align-default">
@@ -440,7 +446,7 @@ The semantic must be <code class="docutils literal notranslate"><span class="pre
 </div>
 </section>
 <section id="options">
-<h3>Options<a class="headerlink" href="#options" title="Link to this heading"></a></h3>
+<h3>Options<a class="headerlink" href="#options" title="Link to this heading"></a></h3>
 <p>Options:</p>
 <blockquote>
 <div><dl class="option-list">
@@ -518,14 +524,14 @@ Can be 0–3.</p>
 </div></blockquote>
 </section>
 <section id="building-shaders">
-<h3>Building shaders<a class="headerlink" href="#building-shaders" title="Link to this heading"></a></h3>
+<h3>Building shaders<a class="headerlink" href="#building-shaders" title="Link to this heading"></a></h3>
 <p>Shaders can be compiled for all renderers by using the <code class="docutils literal notranslate"><span class="pre">shaderc</span></code> tool.
 A Makefile to simplify building shaders is provided in the <a class="reference external" href="https://github.com/bkaradzic/bgfx/tree/master/examples">bgfx examples</a>.
 D3D shaders can be only compiled on Windows.</p>
 </section>
 </section>
 <section id="texture-compiler-texturec">
-<h2>Texture Compiler (texturec)<a class="headerlink" href="#texture-compiler-texturec" title="Link to this heading"></a></h2>
+<h2>Texture Compiler (texturec)<a class="headerlink" href="#texture-compiler-texturec" title="Link to this heading"></a></h2>
 <p>Convert PNG, TGA, DDS, KTX, and PVR textures into bgfx-supported texture formats.</p>
 <p>Usage:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">texturec</span> <span class="o">-</span><span class="n">f</span> <span class="o">&lt;</span><span class="ow">in</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">o</span> <span class="o">&lt;</span><span class="n">out</span><span class="o">&gt;</span> <span class="p">[</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">texture</span> <span class="nb">format</span><span class="o">&gt;</span><span class="p">]</span>
@@ -660,7 +666,7 @@ aspect ratio will be preserved)</p>
 </dl>
 </section>
 <section id="texture-viewer-texturev">
-<h2>Texture Viewer (texturev)<a class="headerlink" href="#texture-viewer-texturev" title="Link to this heading"></a></h2>
+<h2>Texture Viewer (texturev)<a class="headerlink" href="#texture-viewer-texturev" title="Link to this heading"></a></h2>
 <p>A texture viewer.</p>
 </section>
 </section>
@@ -676,7 +682,7 @@ aspect ratio will be preserved)</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2010-2024, Branimir Karadžić.</p>
+    <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
   </div>
 
    

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.