Deploying to gh-pages from @ sotrh/learn-wgpu@ce957226d3 🚀

gh-pages
sotrh 1 month ago
parent 875062665f
commit b1d03d5e48

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -8,11 +8,11 @@
<meta name="description" content="">
<link rel="preload" href="/learn-wgpu/assets/css/0.styles.81cb5453.css" as="style"><link rel="preload" href="/learn-wgpu/assets/js/app.d7475ed3.js" as="script"><link rel="preload" href="/learn-wgpu/assets/js/5.250d79d3.js" as="script"><link rel="prefetch" href="/learn-wgpu/assets/js/1.f95c152b.js"><link rel="prefetch" href="/learn-wgpu/assets/js/10.36ef5e8a.js"><link rel="prefetch" href="/learn-wgpu/assets/js/11.3010e736.js"><link rel="prefetch" href="/learn-wgpu/assets/js/12.19a759b4.js"><link rel="prefetch" href="/learn-wgpu/assets/js/13.d7132c58.js"><link rel="prefetch" href="/learn-wgpu/assets/js/14.f6c42706.js"><link rel="prefetch" href="/learn-wgpu/assets/js/15.f6153e55.js"><link rel="prefetch" href="/learn-wgpu/assets/js/16.a26961f5.js"><link rel="prefetch" href="/learn-wgpu/assets/js/17.57e285e4.js"><link rel="prefetch" href="/learn-wgpu/assets/js/18.8d6104d8.js"><link rel="prefetch" href="/learn-wgpu/assets/js/19.518847c0.js"><link rel="prefetch" href="/learn-wgpu/assets/js/2.1b0ff365.js"><link rel="prefetch" href="/learn-wgpu/assets/js/20.06cc413d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/21.f4f92d7d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/22.b5f76915.js"><link rel="prefetch" href="/learn-wgpu/assets/js/23.ce651487.js"><link rel="prefetch" href="/learn-wgpu/assets/js/24.7afa389b.js"><link rel="prefetch" href="/learn-wgpu/assets/js/25.36df8817.js"><link rel="prefetch" href="/learn-wgpu/assets/js/26.173af306.js"><link rel="prefetch" href="/learn-wgpu/assets/js/27.d3569321.js"><link rel="prefetch" href="/learn-wgpu/assets/js/28.be489186.js"><link rel="prefetch" href="/learn-wgpu/assets/js/29.399c33dc.js"><link rel="prefetch" href="/learn-wgpu/assets/js/3.5ec857bc.js"><link rel="prefetch" href="/learn-wgpu/assets/js/30.12d50dcb.js"><link rel="prefetch" href="/learn-wgpu/assets/js/31.550259b2.js"><link rel="prefetch" href="/learn-wgpu/assets/js/32.e6627282.js"><link rel="prefetch" href="/learn-wgpu/assets/js/33.945dce62.js"><link rel="prefetch" href="/learn-wgpu/assets/js/34.6d46e05a.js"><link rel="prefetch" href="/learn-wgpu/assets/js/35.dd9bb63f.js"><link rel="prefetch" href="/learn-wgpu/assets/js/36.aff12c07.js"><link rel="prefetch" href="/learn-wgpu/assets/js/37.5ecf7ce2.js"><link rel="prefetch" href="/learn-wgpu/assets/js/38.b0253733.js"><link rel="prefetch" href="/learn-wgpu/assets/js/39.73123b03.js"><link rel="prefetch" href="/learn-wgpu/assets/js/4.ff267fdb.js"><link rel="prefetch" href="/learn-wgpu/assets/js/40.30864a0f.js"><link rel="prefetch" href="/learn-wgpu/assets/js/41.2442c18a.js"><link rel="prefetch" href="/learn-wgpu/assets/js/42.6f76d27e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/43.ddac8e2c.js"><link rel="prefetch" href="/learn-wgpu/assets/js/44.ef88db2d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/45.81bcfe17.js"><link rel="prefetch" href="/learn-wgpu/assets/js/46.fbe2131f.js"><link rel="prefetch" href="/learn-wgpu/assets/js/47.22e16c22.js"><link rel="prefetch" href="/learn-wgpu/assets/js/48.7d70df25.js"><link rel="prefetch" href="/learn-wgpu/assets/js/49.ad5a99aa.js"><link rel="prefetch" href="/learn-wgpu/assets/js/50.05fd19ce.js"><link rel="prefetch" href="/learn-wgpu/assets/js/51.47410096.js"><link rel="prefetch" href="/learn-wgpu/assets/js/52.09f16d08.js"><link rel="prefetch" href="/learn-wgpu/assets/js/53.8c976652.js"><link rel="prefetch" href="/learn-wgpu/assets/js/54.daee63ce.js"><link rel="prefetch" href="/learn-wgpu/assets/js/55.2dadff38.js"><link rel="prefetch" href="/learn-wgpu/assets/js/56.e9c45fb7.js"><link rel="prefetch" href="/learn-wgpu/assets/js/57.9cdfcb79.js"><link rel="prefetch" href="/learn-wgpu/assets/js/58.35b75a7b.js"><link rel="prefetch" href="/learn-wgpu/assets/js/59.302e302d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/60.bca5b731.js"><link rel="prefetch" href="/learn-wgpu/assets/js/61.f10516d3.js"><link rel="prefetch" href="/learn-wgpu/assets/js/62.fc721fd9.js"><link rel="prefetch" href="/learn-wgpu/assets/js/63.68526f40.js"><link rel="prefetch" href="/learn-wgpu/assets/js/64.5fd53e01.js"><link rel="prefetch" href="/learn-wgpu/assets/js/65.362df98e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/66.19a033d1.js"><link rel="prefetch" href="/learn-wgpu/assets/js/67.cf780dc9.js"><link rel="prefetch" href="/learn-wgpu/assets/js/68.d785413d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/8.bd84af76.js"><link rel="prefetch" href="/learn-wgpu/assets/js/9.d183c6d6.js"><link rel="prefetch" href="/learn-wgpu/assets/js/vendors~docsearch.efa6f8ef.js">
<link rel="preload" href="/learn-wgpu/assets/css/0.styles.81cb5453.css" as="style"><link rel="preload" href="/learn-wgpu/assets/js/app.6f8b5a7a.js" as="script"><link rel="preload" href="/learn-wgpu/assets/js/6.4fe3cb8c.js" as="script"><link rel="prefetch" href="/learn-wgpu/assets/js/1.13a921cc.js"><link rel="prefetch" href="/learn-wgpu/assets/js/10.2742fe3e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/11.9f2fc759.js"><link rel="prefetch" href="/learn-wgpu/assets/js/12.3382fa25.js"><link rel="prefetch" href="/learn-wgpu/assets/js/13.783db639.js"><link rel="prefetch" href="/learn-wgpu/assets/js/14.a06a51bf.js"><link rel="prefetch" href="/learn-wgpu/assets/js/15.6080e8de.js"><link rel="prefetch" href="/learn-wgpu/assets/js/16.19b2f095.js"><link rel="prefetch" href="/learn-wgpu/assets/js/17.64de94db.js"><link rel="prefetch" href="/learn-wgpu/assets/js/18.bb0e8a29.js"><link rel="prefetch" href="/learn-wgpu/assets/js/19.e291082d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/2.476d94c5.js"><link rel="prefetch" href="/learn-wgpu/assets/js/20.90ed33c8.js"><link rel="prefetch" href="/learn-wgpu/assets/js/21.93434775.js"><link rel="prefetch" href="/learn-wgpu/assets/js/22.1d414c6a.js"><link rel="prefetch" href="/learn-wgpu/assets/js/23.9a3189a5.js"><link rel="prefetch" href="/learn-wgpu/assets/js/24.7831e0bc.js"><link rel="prefetch" href="/learn-wgpu/assets/js/25.04039c3c.js"><link rel="prefetch" href="/learn-wgpu/assets/js/26.2ef5c6dd.js"><link rel="prefetch" href="/learn-wgpu/assets/js/27.5a75fe7e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/28.81c97574.js"><link rel="prefetch" href="/learn-wgpu/assets/js/29.61fe1f78.js"><link rel="prefetch" href="/learn-wgpu/assets/js/3.28addd83.js"><link rel="prefetch" href="/learn-wgpu/assets/js/30.0888a2b8.js"><link rel="prefetch" href="/learn-wgpu/assets/js/31.d0faa1fd.js"><link rel="prefetch" href="/learn-wgpu/assets/js/32.d2e62b67.js"><link rel="prefetch" href="/learn-wgpu/assets/js/33.2359e830.js"><link rel="prefetch" href="/learn-wgpu/assets/js/34.5e0824f2.js"><link rel="prefetch" href="/learn-wgpu/assets/js/35.f7819d41.js"><link rel="prefetch" href="/learn-wgpu/assets/js/36.c34473fb.js"><link rel="prefetch" href="/learn-wgpu/assets/js/37.35056b9d.js"><link rel="prefetch" href="/learn-wgpu/assets/js/38.82c286c7.js"><link rel="prefetch" href="/learn-wgpu/assets/js/39.ed02f6c0.js"><link rel="prefetch" href="/learn-wgpu/assets/js/4.6f3b7a64.js"><link rel="prefetch" href="/learn-wgpu/assets/js/40.c0c4b7ba.js"><link rel="prefetch" href="/learn-wgpu/assets/js/41.e4b468ad.js"><link rel="prefetch" href="/learn-wgpu/assets/js/42.10fd9a88.js"><link rel="prefetch" href="/learn-wgpu/assets/js/43.836d20b2.js"><link rel="prefetch" href="/learn-wgpu/assets/js/44.cc3fa33b.js"><link rel="prefetch" href="/learn-wgpu/assets/js/45.059c760c.js"><link rel="prefetch" href="/learn-wgpu/assets/js/46.28b6cc30.js"><link rel="prefetch" href="/learn-wgpu/assets/js/47.2231e426.js"><link rel="prefetch" href="/learn-wgpu/assets/js/48.f0dd2dde.js"><link rel="prefetch" href="/learn-wgpu/assets/js/49.88841f91.js"><link rel="prefetch" href="/learn-wgpu/assets/js/5.42813bbd.js"><link rel="prefetch" href="/learn-wgpu/assets/js/50.81b6a518.js"><link rel="prefetch" href="/learn-wgpu/assets/js/51.36c8060c.js"><link rel="prefetch" href="/learn-wgpu/assets/js/52.af8ddd46.js"><link rel="prefetch" href="/learn-wgpu/assets/js/53.97298d29.js"><link rel="prefetch" href="/learn-wgpu/assets/js/54.6fbf6ede.js"><link rel="prefetch" href="/learn-wgpu/assets/js/55.5eb9e278.js"><link rel="prefetch" href="/learn-wgpu/assets/js/56.ae19ff2e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/57.e7aa9e7e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/58.fb647cff.js"><link rel="prefetch" href="/learn-wgpu/assets/js/59.8015b796.js"><link rel="prefetch" href="/learn-wgpu/assets/js/60.cf694c42.js"><link rel="prefetch" href="/learn-wgpu/assets/js/61.7d58a2ea.js"><link rel="prefetch" href="/learn-wgpu/assets/js/62.a84c00aa.js"><link rel="prefetch" href="/learn-wgpu/assets/js/63.7d4f0349.js"><link rel="prefetch" href="/learn-wgpu/assets/js/64.b23bd44f.js"><link rel="prefetch" href="/learn-wgpu/assets/js/65.3d7b9cf5.js"><link rel="prefetch" href="/learn-wgpu/assets/js/66.d9e6c10a.js"><link rel="prefetch" href="/learn-wgpu/assets/js/67.bf0b7353.js"><link rel="prefetch" href="/learn-wgpu/assets/js/68.6be0d6f9.js"><link rel="prefetch" href="/learn-wgpu/assets/js/69.4b4e133e.js"><link rel="prefetch" href="/learn-wgpu/assets/js/9.a663a9a2.js"><link rel="prefetch" href="/learn-wgpu/assets/js/vendors~docsearch.c367c814.js">
<link rel="stylesheet" href="/learn-wgpu/assets/css/0.styles.81cb5453.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>That's a Four-Oh-Four.</blockquote> <a href="/learn-wgpu/" class="router-link-active">Take me home.</a></div></div><div class="global-ui"><!----></div></div>
<script src="/learn-wgpu/assets/js/app.d7475ed3.js" defer></script><script src="/learn-wgpu/assets/js/5.250d79d3.js" defer></script>
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>Looks like we've got some broken links.</blockquote> <a href="/learn-wgpu/" class="router-link-active">Take me home.</a></div></div><div class="global-ui"><!----></div></div>
<script src="/learn-wgpu/assets/js/app.6f8b5a7a.js" defer></script><script src="/learn-wgpu/assets/js/6.4fe3cb8c.js" defer></script>
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{305:function(e,t,o){},385:function(e,t,o){var r={"./pong/demo.js":[387,1,24],"./tutorial10_lighting/demo.js":[405,1,25],"./tutorial11_normals/demo.js":[407,1,26],"./tutorial12_camera/demo.js":[409,1,27],"./tutorial13_hdr/demo.js":[411,1,28],"./tutorial1_window/demo.js":[413,1,29],"./tutorial2_surface/demo.js":[415,1,30],"./tutorial3_pipeline/demo.js":[417,1,31],"./tutorial4_buffer/demo.js":[419,1,32],"./tutorial5_textures/demo.js":[421,1,33],"./tutorial6_uniforms/demo.js":[423,1,34],"./tutorial7_instancing/demo.js":[425,1,35],"./tutorial8_depth/demo.js":[427,1,36],"./tutorial9_models/demo.js":[429,1,37]};function a(e){if(!o.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],a=t[0];return Promise.all(t.slice(1).map(o.e)).then((function(){return o(a)}))}a.keys=function(){return Object.keys(r)},a.id=385,e.exports=a},386:function(e,t,o){"use strict";o(305)},439:function(e,t,o){"use strict";o.r(t);var r={name:"WasmExample",props:{example:"",autoLoad:!1},data:()=>({error:"",loading:!1,exampleStarted:!1}),computed:{exampleName(){return this.example.replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))}},methods:{async loadExample(){this.loading=!0;try{await o(385)(`./${this.example}/demo.js`)}catch(e){""+e!="Error: Using exceptions for control flow, don't mind me. This isn't actually an error!"?(this.error=`An error occurred loading "${this.example}": ${e}`,console.error(e),this.exampleStarted=!1):this.exampleStarted=!0}this.loading=!1}},async mounted(){await this.$nextTick(),this.autoLoad&&await this.loadExample()}},a=(o(386),o(8)),n=Object(a.a)(r,(function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"wasm-example"}},[e.error?t("div",{staticClass:"error"},[e._v("\n "+e._s(e.error)+"\n ")]):e._e(),e._v(" "),e.exampleStarted||e.autoLoad?e._e():t("button",{attrs:{disabled:e.loading},on:{click:function(t){return e.loadExample()}}},[e._v("Try "+e._s(e.exampleName)+"!")])])}),[],!1,null,null,null);t.default=n.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{261:function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return l})),n.d(e,"b",(function(){return p})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return b})),n.d(e,"j",(function(){return g}));n(92);const r=/#.*$/,i=/\.(md|html)$/,a=/\/$/,s=/^(https?:|mailto:|tel:|[a-zA-Z]{4,}:)/;function u(t){return decodeURI(t).replace(r,"").replace(i,"")}function o(t){return s.test(t)}function c(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function p(t){if(o(t))return t;const e=t.match(r),n=e?e[0]:"",i=u(t);return a.test(i)?t:i+".html"+n}function f(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);if(i&&n!==i)return!1;return u(t.path)===u(e)}function h(t,e,n){if(o(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const a=t.replace(/^\//,"").split("/");for(let t=0;t<a.length;t++){const e=a[t];".."===e?i.pop():"."!==e&&i.push(e)}""!==i[0]&&i.unshift("");return i.join("/")}(e,n));const r=u(e);for(let e=0;e<t.length;e++)if(u(t[e].regularPath)===r)return Object.assign({},t[e],{type:"page",path:p(t[e].path)});return console.error(`[vuepress] No matching page found for sidebar item "${e}"`),{}}function d(t,e,n,r){const{pages:i,themeConfig:a}=n,s=r&&a.locales&&a.locales[r]||a;if("auto"===(t.frontmatter.sidebar||s.sidebar||a.sidebar))return function(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const u=s.sidebar||a.sidebar;if(u){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,u);return n?n.map(e=>function t(e,n,r,i=1){if("string"==typeof e)return h(n,e,r);if(Array.isArray(e))return Object.assign(h(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const a=e.children||[];return 0===a.length&&e.path?Object.assign(h(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:a.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}}(e,i,t)):[]}return[]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},290:function(t,e,n){},294:function(t,e,n){"use strict";n(290)},297:function(t,e,n){"use strict";n.r(e);var r=n(261);function i(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function a(t,e,n,s,u,o=1){return!e||o>u?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const c=Object(r.e)(s,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[i(t,n+"#"+e.slug,e.title,c),a(t,e.children,n,s,u,o+1)])}))}var s={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:s,$themeConfig:u,$themeLocaleConfig:o},props:{item:c,sidebarDepth:l}}){const p=Object(r.e)(s,c.path),f="auto"===c.type?p||c.children.some(t=>Object(r.e)(s,c.basePath+"#"+t.slug)):p,h="external"===c.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,c.path,c.title||c.path):i(t,c.path,c.title||c.path,f),d=e.frontmatter.sidebarDepth||l||o.sidebarDepth||u.sidebarDepth,b=null==d?1:d,g=o.displayAllHeaders||u.displayAllHeaders;if("auto"===c.type)return[h,a(t,c.children,c.basePath,s,b)];if((f||g)&&c.headers&&!r.d.test(c.path)){return[h,a(t,Object(r.c)(c.headers),c.path,s,b)]}return h}},u=(n(294),n(7)),o=Object(u.a)(s,void 0,void 0,!1,null,null,null);e.default=o.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{258:function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return l})),n.d(e,"b",(function(){return p})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return b})),n.d(e,"j",(function(){return g}));n(91);const r=/#.*$/,i=/\.(md|html)$/,a=/\/$/,s=/^(https?:|mailto:|tel:|[a-zA-Z]{4,}:)/;function u(t){return decodeURI(t).replace(r,"").replace(i,"")}function o(t){return s.test(t)}function c(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function p(t){if(o(t))return t;const e=t.match(r),n=e?e[0]:"",i=u(t);return a.test(i)?t:i+".html"+n}function f(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);if(i&&n!==i)return!1;return u(t.path)===u(e)}function h(t,e,n){if(o(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const a=t.replace(/^\//,"").split("/");for(let t=0;t<a.length;t++){const e=a[t];".."===e?i.pop():"."!==e&&i.push(e)}""!==i[0]&&i.unshift("");return i.join("/")}(e,n));const r=u(e);for(let e=0;e<t.length;e++)if(u(t[e].regularPath)===r)return Object.assign({},t[e],{type:"page",path:p(t[e].path)});return console.error(`[vuepress] No matching page found for sidebar item "${e}"`),{}}function d(t,e,n,r){const{pages:i,themeConfig:a}=n,s=r&&a.locales&&a.locales[r]||a;if("auto"===(t.frontmatter.sidebar||s.sidebar||a.sidebar))return function(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const u=s.sidebar||a.sidebar;if(u){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,u);return n?n.map(e=>function t(e,n,r,i=1){if("string"==typeof e)return h(n,e,r);if(Array.isArray(e))return Object.assign(h(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const a=e.children||[];return 0===a.length&&e.path?Object.assign(h(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:a.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}}(e,i,t)):[]}return[]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},276:function(t,e,n){},280:function(t,e,n){"use strict";n(276)},284:function(t,e,n){"use strict";n.r(e);var r=n(258);function i(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function a(t,e,n,s,u,o=1){return!e||o>u?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const c=Object(r.e)(s,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[i(t,n+"#"+e.slug,e.title,c),a(t,e.children,n,s,u,o+1)])}))}var s={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:s,$themeConfig:u,$themeLocaleConfig:o},props:{item:c,sidebarDepth:l}}){const p=Object(r.e)(s,c.path),f="auto"===c.type?p||c.children.some(t=>Object(r.e)(s,c.basePath+"#"+t.slug)):p,h="external"===c.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,c.path,c.title||c.path):i(t,c.path,c.title||c.path,f),d=e.frontmatter.sidebarDepth||l||o.sidebarDepth||u.sidebarDepth,b=null==d?1:d,g=o.displayAllHeaders||u.displayAllHeaders;if("auto"===c.type)return[h,a(t,c.children,c.basePath,s,b)];if((f||g)&&c.headers&&!r.d.test(c.path)){return[h,a(t,Object(r.c)(c.headers),c.path,s,b)]}return h}},u=(n(280),n(8)),o=Object(u.a)(s,void 0,void 0,!1,null,null,null);e.default=o.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{317:function(t,e,o){},391:function(t,e,o){var r={"./pong/demo.js":[393,8],"./tutorial10_lighting/demo.js":[395,9],"./tutorial11_normals/demo.js":[397,10],"./tutorial12_camera/demo.js":[399,11],"./tutorial13_hdr/demo.js":[401,12],"./tutorial1_window/demo.js":[403,13],"./tutorial2_surface/demo.js":[405,14],"./tutorial3_pipeline/demo.js":[407,15],"./tutorial4_buffer/demo.js":[409,16],"./tutorial5_textures/demo.js":[411,17],"./tutorial6_uniforms/demo.js":[413,18],"./tutorial7_instancing/demo.js":[415,19],"./tutorial8_depth/demo.js":[417,20],"./tutorial9_models/demo.js":[419,21]};function a(t){if(!o.o(r,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=r[t],a=e[0];return o.e(e[1]).then((function(){return o(a)}))}a.keys=function(){return Object.keys(r)},a.id=391,t.exports=a},392:function(t,e,o){"use strict";o(317)},429:function(t,e,o){"use strict";o.r(e);var r={name:"WasmExample",props:{example:"",autoLoad:!1},data:()=>({error:"",loading:!1,exampleStarted:!1}),computed:{exampleName(){return this.example.replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()}))}},methods:{async loadExample(){this.loading=!0;try{await o(391)(`./${this.example}/demo.js`)}catch(t){""+t!="Error: Using exceptions for control flow, don't mind me. This isn't actually an error!"?(this.error=`An error occurred loading "${this.example}": ${t}`,console.error(t),this.exampleStarted=!1):this.exampleStarted=!0}this.loading=!1}},async mounted(){await this.$nextTick(),this.autoLoad&&await this.loadExample()}},a=(o(392),o(7)),n=Object(a.a)(r,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"wasm-example"}},[t.error?e("div",{staticClass:"error"},[t._v("\n "+t._s(t.error)+"\n ")]):t._e(),t._v(" "),t.exampleStarted||t.autoLoad?t._e():e("button",{attrs:{disabled:t.loading},on:{click:function(e){return t.loadExample()}}},[t._v("Try "+t._s(t.exampleName)+"!")])])}),[],!1,null,null,null);e.default=n.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{316:function(t,e,n){},390:function(t,e,n){"use strict";n(316)},427:function(t,e,n){"use strict";n.r(e);var i={name:"AutoGithubLink",computed:{link(){return"https://github.com/sotrh/learn-wgpu/tree/master/code"+this.$page.path}}},r=(n(390),n(7)),u=Object(r.a)(i,(function(){var t=this._self._c;return t("div",{staticClass:"auto-github-link"},[t("a",{attrs:{href:this.link,target:"_blank",rel:"noopener noreferrer"}},[this._v("Check out the code!")]),this._v(" "),t("OutboundLink")],1)}),[],!1,null,null,null);e.default=u.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{304:function(t,e,n){},384:function(t,e,n){"use strict";n(304)},437:function(t,e,n){"use strict";n.r(e);var i={name:"AutoGithubLink",computed:{link(){return"https://github.com/sotrh/learn-wgpu/tree/master/code"+this.$page.path}}},r=(n(384),n(8)),u=Object(r.a)(i,(function(){var t=this._self._c;return t("div",{staticClass:"auto-github-link"},[t("a",{attrs:{href:this.link,target:"_blank",rel:"noopener noreferrer"}},[this._v("Check out the code!")]),this._v(" "),t("OutboundLink")],1)}),[],!1,null,null,null);e.default=u.exports}}]);

@ -1 +0,0 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{285:function(t,e,n){},287:function(t,e,n){"use strict";n.r(e);var s={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},i=(n(288),n(7)),o=Object(i.a)(s,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.default=o.exports},288:function(t,e,n){"use strict";n(285)}}]);

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{310:function(t,i,s){},322:function(t,i,s){"use strict";s(310)},424:function(t,i,s){"use strict";s.r(i);var a={props:["options"],mounted(){this.initialize(this.options,this.$lang)},methods:{initialize(t,i){Promise.all([Promise.all([s.e(0),s.e(7)]).then(s.t.bind(null,422,7)),Promise.all([s.e(0),s.e(7)]).then(s.t.bind(null,423,7))]).then(([s])=>{s=s.default;const{algoliaOptions:a={}}=t;s(Object.assign({},t,{inputSelector:"#algolia-search-input",algoliaOptions:Object.assign({facetFilters:["lang:"+i].concat(a.facetFilters||[])},a)}))})},update(t,i){this.$el.innerHTML='<input id="algolia-search-input" class="search-query">',this.initialize(t,i)}},watch:{$lang(t){this.update(this.options,t)},options(t){this.update(t,this.$lang)}}},e=(s(322),s(7)),n=Object(e.a)(a,(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("form",{staticClass:"algolia-search-wrapper search-box",attrs:{id:"search-form",role:"search"}},[t("input",{staticClass:"search-query",attrs:{id:"algolia-search-input"}})])}],!1,null,null,null);i.default=n.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{298:function(t,i,s){},316:function(t,i,s){"use strict";s(298)},434:function(t,i,s){"use strict";s.r(i);var a={props:["options"],mounted(){this.initialize(this.options,this.$lang)},methods:{initialize(t,i){Promise.all([Promise.all([s.e(0),s.e(8)]).then(s.t.bind(null,432,7)),Promise.all([s.e(0),s.e(8)]).then(s.t.bind(null,433,7))]).then(([s])=>{s=s.default;const{algoliaOptions:a={}}=t;s(Object.assign({},t,{inputSelector:"#algolia-search-input",algoliaOptions:Object.assign({facetFilters:["lang:"+i].concat(a.facetFilters||[])},a)}))})},update(t,i){this.$el.innerHTML='<input id="algolia-search-input" class="search-query">',this.initialize(t,i)}},watch:{$lang(t){this.update(this.options,t)},options(t){this.update(t,this.$lang)}}},e=(s(316),s(8)),n=Object(e.a)(a,(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("form",{staticClass:"algolia-search-wrapper search-box",attrs:{id:"search-form",role:"search"}},[t("input",{staticClass:"search-query",attrs:{id:"algolia-search-input"}})])}],!1,null,null,null);i.default=n.exports}}]);

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{259:function(t,e,n){},273:function(t,e,n){"use strict";n.r(e);var s={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},i=(n(274),n(8)),o=Object(i.a)(s,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.default=o.exports},274:function(t,e,n){"use strict";n(259)}}]);

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{300:function(t,c,n){},307:function(t,c,n){"use strict";n(300)},321:function(t,c,n){"use strict";n.r(c);n(307);var i=n(7),s=Object(i.a)({},(function(){var t=this,c=t._self._c;return c("div",{staticClass:"sidebar-button",on:{click:function(c){return t.$emit("toggle-sidebar")}}},[c("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[c("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null);c.default=s.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{287:function(t,c,n){},294:function(t,c,n){"use strict";n(287)},315:function(t,c,n){"use strict";n.r(c);n(294);var i=n(8),s=Object(i.a)({},(function(){var t=this,c=t._self._c;return c("div",{staticClass:"sidebar-button",on:{click:function(c){return t.$emit("toggle-sidebar")}}},[c("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[c("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null);c.default=s.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{261:function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"a",(function(){return s})),n.d(e,"i",(function(){return l})),n.d(e,"f",(function(){return a})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return f})),n.d(e,"e",(function(){return p})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return b})),n.d(e,"j",(function(){return g}));n(92);const r=/#.*$/,i=/\.(md|html)$/,s=/\/$/,l=/^(https?:|mailto:|tel:|[a-zA-Z]{4,}:)/;function o(t){return decodeURI(t).replace(r,"").replace(i,"")}function a(t){return l.test(t)}function u(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function f(t){if(a(t))return t;const e=t.match(r),n=e?e[0]:"",i=o(t);return s.test(i)?t:i+".html"+n}function p(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);if(i&&n!==i)return!1;return o(t.path)===o(e)}function h(t,e,n){if(a(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const s=t.replace(/^\//,"").split("/");for(let t=0;t<s.length;t++){const e=s[t];".."===e?i.pop():"."!==e&&i.push(e)}""!==i[0]&&i.unshift("");return i.join("/")}(e,n));const r=o(e);for(let e=0;e<t.length;e++)if(o(t[e].regularPath)===r)return Object.assign({},t[e],{type:"page",path:f(t[e].path)});return console.error(`[vuepress] No matching page found for sidebar item "${e}"`),{}}function d(t,e,n,r){const{pages:i,themeConfig:s}=n,l=r&&s.locales&&s.locales[r]||s;if("auto"===(t.frontmatter.sidebar||l.sidebar||s.sidebar))return function(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const o=l.sidebar||s.sidebar;if(o){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,o);return n?n.map(e=>function t(e,n,r,i=1){if("string"==typeof e)return h(n,e,r);if(Array.isArray(e))return Object.assign(h(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const s=e.children||[];return 0===s.length&&e.path?Object.assign(h(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:s.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}}(e,i,t)):[]}return[]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},286:function(t,e,n){"use strict";n.r(e);var r=n(261),i={props:{item:{required:!0}},computed:{link(){return Object(r.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:r.f,isMailto:r.g,isTel:r.h}},s=n(7),l=Object(s.a)(i,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text))])}),[],!1,null,null,null);e.default=l.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{258:function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"a",(function(){return s})),n.d(e,"i",(function(){return l})),n.d(e,"f",(function(){return a})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return f})),n.d(e,"e",(function(){return p})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return b})),n.d(e,"j",(function(){return g}));n(91);const r=/#.*$/,i=/\.(md|html)$/,s=/\/$/,l=/^(https?:|mailto:|tel:|[a-zA-Z]{4,}:)/;function o(t){return decodeURI(t).replace(r,"").replace(i,"")}function a(t){return l.test(t)}function u(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function f(t){if(a(t))return t;const e=t.match(r),n=e?e[0]:"",i=o(t);return s.test(i)?t:i+".html"+n}function p(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);if(i&&n!==i)return!1;return o(t.path)===o(e)}function h(t,e,n){if(a(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const s=t.replace(/^\//,"").split("/");for(let t=0;t<s.length;t++){const e=s[t];".."===e?i.pop():"."!==e&&i.push(e)}""!==i[0]&&i.unshift("");return i.join("/")}(e,n));const r=o(e);for(let e=0;e<t.length;e++)if(o(t[e].regularPath)===r)return Object.assign({},t[e],{type:"page",path:f(t[e].path)});return console.error(`[vuepress] No matching page found for sidebar item "${e}"`),{}}function d(t,e,n,r){const{pages:i,themeConfig:s}=n,l=r&&s.locales&&s.locales[r]||s;if("auto"===(t.frontmatter.sidebar||l.sidebar||s.sidebar))return function(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const o=l.sidebar||s.sidebar;if(o){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,o);return n?n.map(e=>function t(e,n,r,i=1){if("string"==typeof e)return h(n,e,r);if(Array.isArray(e))return Object.assign(h(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const s=e.children||[];return 0===s.length&&e.path?Object.assign(h(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:s.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}}(e,i,t)):[]}return[]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},272:function(t,e,n){"use strict";n.r(e);var r=n(258),i={props:{item:{required:!0}},computed:{link(){return Object(r.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:r.f,isMailto:r.g,isTel:r.h}},s=n(8),l=Object(s.a)(i,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text))])}),[],!1,null,null,null);e.default=l.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{313:function(t,e,n){},325:function(t,e,n){"use strict";n(313)},430:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:(t,{props:e,slots:n})=>t("span",{class:["badge",e.type],style:{verticalAlign:e.vertical}},e.text||n().default)},p=(n(325),n(7)),a=Object(p.a)(i,void 0,void 0,!1,null,"86b323a0",null);e.default=a.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{301:function(t,e,n){},319:function(t,e,n){"use strict";n(301)},440:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:(t,{props:e,slots:n})=>t("span",{class:["badge",e.type],style:{verticalAlign:e.vertical}},e.text||n().default)},p=(n(319),n(8)),a=Object(p.a)(i,void 0,void 0,!1,null,"86b323a0",null);e.default=a.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{428:function(e,t,n){"use strict";n.r(t);var r={name:"RecentArticles",data:()=>({}),computed:{recentFiles(){return this.$site.pages.filter(e=>e.regularPath.includes("beginner")||e.regularPath.includes("intermediate")).sort((e,t)=>{let n=new Date(e.frontmatter.published).getTime()-new Date(t.frontmatter.published).getTime();return n<0?-1:n>0?1:0}).slice(0,5)}}},i=n(7),l=Object(i.a)(r,(function(){var e=this,t=e._self._c;return t("div",[t("ul",e._l(e.recentFiles,(function(n,r){return t("li",{key:n},[t("a",{attrs:{href:r.path}},[e._v(e._s(r.title))])])})),0)])}),[],!1,null,null,null);t.default=l.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{438:function(e,t,n){"use strict";n.r(t);var r={name:"RecentArticles",data:()=>({}),computed:{recentFiles(){return this.$site.pages.filter(e=>e.regularPath.includes("beginner")||e.regularPath.includes("intermediate")).sort((e,t)=>{let n=new Date(e.frontmatter.published).getTime()-new Date(t.frontmatter.published).getTime();return n<0?-1:n>0?1:0}).slice(0,5)}}},i=n(8),l=Object(i.a)(r,(function(){var e=this,t=e._self._c;return t("div",[t("ul",e._l(e.recentFiles,(function(n,r){return t("li",{key:n},[t("a",{attrs:{href:r.path}},[e._v(e._s(r.title))])])})),0)])}),[],!1,null,null,null);t.default=l.exports}}]);

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{431:function(t,e,a){"use strict";a.r(e);var r=a(7),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("h2",{attrs:{id:"what-is-wgpu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-wgpu"}},[t._v("#")]),t._v(" What is wgpu?")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/gfx-rs/wgpu",target:"_blank",rel:"noopener noreferrer"}},[t._v("Wgpu"),e("OutboundLink")],1),t._v(" is a Rust implementation of the "),e("a",{attrs:{href:"https://gpuweb.github.io/gpuweb/",target:"_blank",rel:"noopener noreferrer"}},[t._v("WebGPU API spec"),e("OutboundLink")],1),t._v(". WebGPU is a specification published by the GPU for the Web Community Group. It aims to allow web code access to GPU functions in a safe and reliable manner. It does this by mimicking the Vulkan API, and translating that down to whatever API the host hardware is using (ie. DirectX, Metal, Vulkan).")]),t._v(" "),e("p",[t._v("Wgpu is still in development, so some of this doc is subject to change.")]),t._v(" "),e("h2",{attrs:{id:"why-rust"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#why-rust"}},[t._v("#")]),t._v(" Why Rust?")]),t._v(" "),e("p",[t._v("Wgpu actually has C bindings to allow you to write C/C++ code with it, as well as use other languages that interface with C. That being said, wgpu is written in Rust, and it has some convenient Rust bindings that don't have to jump through any hoops. On top of that, I've been enjoying writing in Rust.")]),t._v(" "),e("p",[t._v("You should be fairly familiar with Rust before using this tutorial as I won't go into much detail on Rust syntax. If you're not super comfortable with Rust you can review the "),e("a",{attrs:{href:"https://www.rust-lang.org/learn",target:"_blank",rel:"noopener noreferrer"}},[t._v("Rust tutorial"),e("OutboundLink")],1),t._v(". You should also be familiar with "),e("a",{attrs:{href:"https://doc.rust-lang.org/cargo/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cargo"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("I'm using this project to learn wgpu myself, so I might miss some important details, or explain things badly. I'm always open to constructive feedback.")]),t._v(" "),e("h2",{attrs:{id:"contribution-and-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contribution-and-support"}},[t._v("#")]),t._v(" Contribution and Support")]),t._v(" "),e("ul",[e("li",[t._v("I accept pull requests ("),e("a",{attrs:{href:"https://github.com/sotrh/learn-wgpu",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repo"),e("OutboundLink")],1),t._v(") for fixing issues with this tutorial such as typos, incorrect information, and other inconsistencies.")]),t._v(" "),e("li",[t._v("Due to wgpu's rapidly changing api, I'm not accepting any new pull requests for showcase demos.")]),t._v(" "),e("li",[t._v("If you want to support me directly, check out my "),e("a",{attrs:{href:"https://www.patreon.com/sotrh",target:"_blank",rel:"noopener noreferrer"}},[t._v("patreon"),e("OutboundLink")],1),t._v("!")])]),t._v(" "),e("h2",{attrs:{id:"translations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#translations"}},[t._v("#")]),t._v(" Translations")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://jinleili.github.io/learn-wgpu-zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("中文版: 增加了与 App 的集成与调试系列章节"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"special-thanks-to-these-patrons"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#special-thanks-to-these-patrons"}},[t._v("#")]),t._v(" Special thanks to these patrons!")]),t._v(" "),e("ul",[e("li",[t._v("David Laban")]),t._v(" "),e("li",[t._v("Lennart")]),t._v(" "),e("li",[t._v("Ian Gowen")]),t._v(" "),e("li",[t._v("Aron Granberg")]),t._v(" "),e("li",[t._v("Bernard Llanos")]),t._v(" "),e("li",[t._v("Jan Šipr")]),t._v(" "),e("li",[t._v("Zeh Fernando")]),t._v(" "),e("li",[t._v("Youngsuk Kim")]),t._v(" "),e("li",[t._v("オリトイツキ")]),t._v(" "),e("li",[t._v("Andrea Postal")]),t._v(" "),e("li",[t._v("Julius Liu")]),t._v(" "),e("li",[t._v("Feng Liang")]),t._v(" "),e("li",[t._v("Mattia Samiolo")]),t._v(" "),e("li",[t._v("Joris Willems")]),t._v(" "),e("li",[t._v("Jani Turkia")]),t._v(" "),e("li",[t._v("papyDoctor")]),t._v(" "),e("li",[t._v("Filip")])])])}),[],!1,null,null,null);e.default=n.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{441:function(t,e,a){"use strict";a.r(e);var r=a(8),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("h2",{attrs:{id:"what-is-wgpu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-wgpu"}},[t._v("#")]),t._v(" What is wgpu?")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/gfx-rs/wgpu",target:"_blank",rel:"noopener noreferrer"}},[t._v("Wgpu"),e("OutboundLink")],1),t._v(" is a Rust implementation of the "),e("a",{attrs:{href:"https://gpuweb.github.io/gpuweb/",target:"_blank",rel:"noopener noreferrer"}},[t._v("WebGPU API spec"),e("OutboundLink")],1),t._v(". WebGPU is a specification published by the GPU for the Web Community Group. It aims to allow web code access to GPU functions in a safe and reliable manner. It does this by mimicking the Vulkan API, and translating that down to whatever API the host hardware is using (ie. DirectX, Metal, Vulkan).")]),t._v(" "),e("p",[t._v("Wgpu is still in development, so some of this doc is subject to change.")]),t._v(" "),e("h2",{attrs:{id:"why-rust"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#why-rust"}},[t._v("#")]),t._v(" Why Rust?")]),t._v(" "),e("p",[t._v("Wgpu actually has C bindings to allow you to write C/C++ code with it, as well as use other languages that interface with C. That being said, wgpu is written in Rust, and it has some convenient Rust bindings that don't have to jump through any hoops. On top of that, I've been enjoying writing in Rust.")]),t._v(" "),e("p",[t._v("You should be fairly familiar with Rust before using this tutorial as I won't go into much detail on Rust syntax. If you're not super comfortable with Rust you can review the "),e("a",{attrs:{href:"https://www.rust-lang.org/learn",target:"_blank",rel:"noopener noreferrer"}},[t._v("Rust tutorial"),e("OutboundLink")],1),t._v(". You should also be familiar with "),e("a",{attrs:{href:"https://doc.rust-lang.org/cargo/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cargo"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("I'm using this project to learn wgpu myself, so I might miss some important details, or explain things badly. I'm always open to constructive feedback.")]),t._v(" "),e("h2",{attrs:{id:"contribution-and-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contribution-and-support"}},[t._v("#")]),t._v(" Contribution and Support")]),t._v(" "),e("ul",[e("li",[t._v("I accept pull requests ("),e("a",{attrs:{href:"https://github.com/sotrh/learn-wgpu",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repo"),e("OutboundLink")],1),t._v(") for fixing issues with this tutorial such as typos, incorrect information, and other inconsistencies.")]),t._v(" "),e("li",[t._v("Due to wgpu's rapidly changing api, I'm not accepting any new pull requests for showcase demos.")]),t._v(" "),e("li",[t._v("If you want to support me directly, check out my "),e("a",{attrs:{href:"https://www.patreon.com/sotrh",target:"_blank",rel:"noopener noreferrer"}},[t._v("patreon"),e("OutboundLink")],1),t._v("!")])]),t._v(" "),e("h2",{attrs:{id:"translations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#translations"}},[t._v("#")]),t._v(" Translations")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://jinleili.github.io/learn-wgpu-zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("中文版: 增加了与 App 的集成与调试系列章节"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"special-thanks-to-these-patrons"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#special-thanks-to-these-patrons"}},[t._v("#")]),t._v(" Special thanks to these patrons!")]),t._v(" "),e("ul",[e("li",[t._v("David Laban")]),t._v(" "),e("li",[t._v("Lennart")]),t._v(" "),e("li",[t._v("Ian Gowen")]),t._v(" "),e("li",[t._v("Aron Granberg")]),t._v(" "),e("li",[t._v("Bernard Llanos")]),t._v(" "),e("li",[t._v("Jan Šipr")]),t._v(" "),e("li",[t._v("Zeh Fernando")]),t._v(" "),e("li",[t._v("Youngsuk Kim")]),t._v(" "),e("li",[t._v("オリトイツキ")]),t._v(" "),e("li",[t._v("Andrea Postal")]),t._v(" "),e("li",[t._v("Julius Liu")]),t._v(" "),e("li",[t._v("Feng Liang")]),t._v(" "),e("li",[t._v("Mattia Samiolo")]),t._v(" "),e("li",[t._v("Joris Willems")]),t._v(" "),e("li",[t._v("Jani Turkia")]),t._v(" "),e("li",[t._v("papyDoctor")]),t._v(" "),e("li",[t._v("Filip")])])])}),[],!1,null,null,null);e.default=n.exports}}]);

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{441:function(s,t,i){"use strict";i.r(t);var e=i(7),n=Object(e.a)({},(function(){var s=this._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"sources"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sources"}},[this._v("#")]),this._v(" Sources")]),this._v(" "),s("ul",[s("li",[this._v("https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-shading/diffuse-lambertian-shading")]),this._v(" "),s("li",[this._v("http://jimmiejohnsson84.me/pages/rendering_pbr.html")])])])}),[],!1,null,null,null);t.default=n.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{451:function(s,t,i){"use strict";i.r(t);var e=i(8),n=Object(e.a)({},(function(){var s=this._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"sources"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sources"}},[this._v("#")]),this._v(" Sources")]),this._v(" "),s("ul",[s("li",[this._v("https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-shading/diffuse-lambertian-shading")]),this._v(" "),s("li",[this._v("http://jimmiejohnsson84.me/pages/rendering_pbr.html")])])])}),[],!1,null,null,null);t.default=n.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{425:function(t,e,s){"use strict";s.r(e);const o=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];var n={methods:{getMsg:()=>o[Math.floor(Math.random()*o.length)]}},h=s(7),i=Object(h.a)(n,(function(){var t=this._self._c;return t("div",{staticClass:"theme-container"},[t("div",{staticClass:"theme-default-content"},[t("h1",[this._v("404")]),this._v(" "),t("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),t("router-link",{attrs:{to:"/"}},[this._v("Take me home.")])],1)])}),[],!1,null,null,null);e.default=i.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{435:function(t,e,s){"use strict";s.r(e);const o=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];var n={methods:{getMsg:()=>o[Math.floor(Math.random()*o.length)]}},h=s(8),i=Object(h.a)(n,(function(){var t=this._self._c;return t("div",{staticClass:"theme-container"},[t("div",{staticClass:"theme-default-content"},[t("h1",[this._v("404")]),this._v(" "),t("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),t("router-link",{attrs:{to:"/"}},[this._v("Take me home.")])],1)])}),[],!1,null,null,null);e.default=i.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{452:function(t,s,e){"use strict";e.r(s);var a=e(7),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"update-to-0-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-to-0-17"}},[this._v("#")]),this._v(" Update to 0.17")]),this._v(" "),t("p",[this._v("No changes needed to the tutorial!")])])}),[],!1,null,null,null);s.default=o.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{462:function(t,s,e){"use strict";e.r(s);var a=e(8),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"update-to-0-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-to-0-17"}},[this._v("#")]),this._v(" Update to 0.17")]),this._v(" "),t("p",[this._v("No changes needed to the tutorial!")])])}),[],!1,null,null,null);s.default=o.exports}}]);

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{453:function(t,e,o){"use strict";o.r(e);var a=o(7),r=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"update-to-0-18-and-hdr-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update-to-0-18-and-hdr-tutorial"}},[t._v("#")]),t._v(" Update to 0.18 and HDR tutorial")]),t._v(" "),e("p",[t._v("First let's go over some of the changes that occurred:")]),t._v(" "),e("ol",[e("li",[e("code",[t._v("RenderPassDescriptor")]),t._v(" now have 2 new fields:\n"),e("code",[t._v("occlusion_query_set")]),t._v(" and, "),e("code",[t._v("timestamp_writes")]),t._v(". I'm\nsetting both to "),e("code",[t._v("None")]),t._v(" for now.")]),t._v(" "),e("li",[e("code",[t._v("ComputePassDescriptor")]),t._v(" now has a "),e("code",[t._v("timestamp_writes")]),t._v("\nfield.")]),t._v(" "),e("li",[e("code",[t._v("InstanceDescriptor")]),t._v(" now has some more fields, but I\nopted to just use "),e("code",[t._v("..Default::default()")]),t._v(" for all the\nfields other than "),e("code",[t._v("backends")]),t._v(".")])]),t._v(" "),e("h2",{attrs:{id:"hdr-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hdr-tutorial"}},[t._v("#")]),t._v(" HDR tutorial")]),t._v(" "),e("p",[t._v("I've been unsure how best to introduce compute shaders\nas they are a big part of what makes WebGPU special, but\nmost browsers don't support them at the moment. With Chrome\nrolling out support for WebGPU, I felt more confident\nwriting a tutorial for them.")]),t._v(" "),e("p",[t._v("Also, I'm been interested learning how to load HDR images\nfrom places like Polyhaven, so I decided to introduce\ncompute shaders by creating one that will load an HDR and\nconvert it to a Cubemap to be rendered.")]),t._v(" "),e("p",[t._v("You can check it out "),e("a",{attrs:{href:"../../intermediate/tutorial13-hdr"}},[t._v("here")]),t._v("!")])])}),[],!1,null,null,null);e.default=r.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{463:function(t,e,o){"use strict";o.r(e);var a=o(8),r=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"update-to-0-18-and-hdr-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update-to-0-18-and-hdr-tutorial"}},[t._v("#")]),t._v(" Update to 0.18 and HDR tutorial")]),t._v(" "),e("p",[t._v("First let's go over some of the changes that occurred:")]),t._v(" "),e("ol",[e("li",[e("code",[t._v("RenderPassDescriptor")]),t._v(" now have 2 new fields:\n"),e("code",[t._v("occlusion_query_set")]),t._v(" and, "),e("code",[t._v("timestamp_writes")]),t._v(". I'm\nsetting both to "),e("code",[t._v("None")]),t._v(" for now.")]),t._v(" "),e("li",[e("code",[t._v("ComputePassDescriptor")]),t._v(" now has a "),e("code",[t._v("timestamp_writes")]),t._v("\nfield.")]),t._v(" "),e("li",[e("code",[t._v("InstanceDescriptor")]),t._v(" now has some more fields, but I\nopted to just use "),e("code",[t._v("..Default::default()")]),t._v(" for all the\nfields other than "),e("code",[t._v("backends")]),t._v(".")])]),t._v(" "),e("h2",{attrs:{id:"hdr-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hdr-tutorial"}},[t._v("#")]),t._v(" HDR tutorial")]),t._v(" "),e("p",[t._v("I've been unsure how best to introduce compute shaders\nas they are a big part of what makes WebGPU special, but\nmost browsers don't support them at the moment. With Chrome\nrolling out support for WebGPU, I felt more confident\nwriting a tutorial for them.")]),t._v(" "),e("p",[t._v("Also, I'm been interested learning how to load HDR images\nfrom places like Polyhaven, so I decided to introduce\ncompute shaders by creating one that will load an HDR and\nconvert it to a Cubemap to be rendered.")]),t._v(" "),e("p",[t._v("You can check it out "),e("a",{attrs:{href:"../../intermediate/tutorial13-hdr"}},[t._v("here")]),t._v("!")])])}),[],!1,null,null,null);e.default=r.exports}}]);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save