create-three-blocks-starter 0.4.2 → 0.4.3-alpha.320.g7e6e67cd7214
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/compose.js +2 -2
- package/dist/constants.js +1 -1
- package/dist/generate.js +1 -1
- package/dist/layers.js +1 -0
- package/package.json +5 -1
- package/template-assets/shaders/scene/meta.json +72 -72
- package/template-assets/shaders/scene/scene.webgl.ts +1 -1
- package/template-assets/shaders/scene/scene.webgpu.ts +1 -1
- package/template-assets/shaders/scene/timing.json +26 -26
- package/template-assets/shaders/text/meta.json +72 -72
- package/template-assets/shaders/text/text.webgl.ts +1 -1
- package/template-assets/shaders/text/text.webgpu.ts +52 -32
- package/template-assets/shaders/text/timing.json +26 -26
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# create-three-blocks-starter
|
|
2
2
|
|
|
3
|
+
## 0.4.3-alpha.320.g7e6e67cd7214
|
|
4
|
+
|
|
5
|
+
- Website: Stripe billing events now reach the production webhook reliably.
|
|
6
|
+
|
|
7
|
+
- Devtools: Loading no longer spins the status chip or terminal progress indicator.
|
|
8
|
+
|
|
9
|
+
- Devtools: Vite asset config and inspection handle HDR files and report exact GPU memory.
|
|
10
|
+
|
|
11
|
+
- Packages: Text projects hydrate precompiled shaders and stay crisp across display resolutions.
|
|
12
|
+
|
|
13
|
+
- Packages: Gaussian benchmarks now compare Babylon.js and fully revealed GaussianSplats3D scenes.
|
|
14
|
+
|
|
15
|
+
- Packages: Built from `7e6e67cd7214`.
|
|
16
|
+
|
|
17
|
+
|
|
3
18
|
## 0.4.2
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/compose.js
CHANGED
|
@@ -174,10 +174,10 @@ function createReadme(project, definitionLabel, packageManager) {
|
|
|
174
174
|
const textCommands = project.artifacts.text === undefined
|
|
175
175
|
? ""
|
|
176
176
|
: `| \`${runCommand(packageManager, "text:generate")}\` | Refresh MSDF atlases after changing glyph coverage. |\n| \`${runCommand(packageManager, "text:status")}\` | Verify text configuration and generated atlas readiness. |\n`;
|
|
177
|
-
return `# ${project.name}\n\n${definitionLabel} generated by ${GENERATOR_NAME}: rendered in a worker, with shaders precompiled.\n\n## Start here\n\n\`\`\`bash\n${packageManager} install\n${runCommand(packageManager, "dev")}\n\`\`\`\n\nEdit \`src/scene.ts\` first — it is your Three.js scene and hot-reloads without losing its declared \`hot\` state.\n\n## Project map\n\n| File | Purpose |\n|---|---|\n| \`src/scene.ts\` | Your \`Experience\` class: objects, materials, animation, and scene-local assets. |\n| \`src/render.worker.ts\` | Worker-owned renderer, camera, frame loop, and transactional HMR. |\n| \`src/main.ts\` | DOM input, Lenis, accessibility, and the worker host. |\n| \`src/assets.ts\` | Typed asset manifest. |\n| \`three-blocks.text.ts\` | Text fonts and atlas generation (text template only). |\n\n## Commands\n\n| Command | Purpose |\n|---|---|\n| \`${runCommand(packageManager, "dev")}\` | Start Vite with live worker, shader, text, and HMR status. |\n| \`${runCommand(packageManager, "lint")}\` | Check correctness and the shipped Three.js-style formatting. |\n| \`${runCommand(packageManager, "typecheck")}\` | Check strict TypeScript without emitting files. |\n| \`${runCommand(packageManager, "build")}\` | Build with graceful live shader fallback. |\n| \`${runCommand(packageManager, "build:strict")}\` | Require fresh precompiled shader receipts. |\n| \`${runCommand(packageManager, "shaders:capture")}\` | Refresh shader receipts after settling shader edits. |\n${textCommands}| \`${runCommand(packageManager, "browser:smoke")}\` | Prove worker readiness, first frame, and the stats control in a browser. |\n| \`${runCommand(packageManager, "status")}\` | Explain and recover worker, shader, asset, or text readiness. |\n\nPrecompiled shaders are an optimization cache, not an editing prerequisite. During development, changed TSL code hot-swaps and compiles live; the status reports \`shaders live\`. Capture once the shader is settled, then use the strict build as the release gate.\n\nDraco and KTX2 runtime files come from the installed Three.js package; this project commits no codec directory. See the [Three Blocks docs](https://threejs-blocks.com/docs) or the [LLM index](https://threejs-blocks.com/llms.txt).\n\nArtifact state:\n\n${pending}\n\n## License\n\nPersonal and noncommercial projects are free. Pro grants each Project started during an active period a lifetime commercial license for versions released during that period. After cancellation, you may maintain, update, and distribute the Project with those covered versions and keep using Pro Tool versions obtained while active for that Project locally and offline. Starting a new commercial Project, adopting a later version, or downloading or updating a Pro Tool requires an active seat. Covered versions have no runtime gate. See \`NOTICE\` and the [Commercial License Agreement](https://threejs-blocks.com/license).\n`;
|
|
177
|
+
return `# ${project.name}\n\n${definitionLabel} generated by ${GENERATOR_NAME}: rendered in a worker, with shaders precompiled.\n\n## Start here\n\n\`\`\`bash\n${packageManager} install\n${runCommand(packageManager, "dev")}\n\`\`\`\n\nEdit \`src/scene.ts\` first — it is your Three.js scene and hot-reloads without losing its declared \`hot\` state.\n\n## Project map\n\n| File | Purpose |\n|---|---|\n| \`src/scene.ts\` | Your \`Experience\` class: objects, materials, animation, and scene-local assets. |\n| \`src/render.worker.ts\` | Worker-owned renderer, camera, frame loop, and transactional HMR. |\n| \`src/main.ts\` | DOM input, Lenis, accessibility, and the worker host. |\n| \`src/assets.ts\` | Typed asset manifest. |\n| \`three-blocks.text.ts\` | Text fonts and atlas generation (text template only). |\n\n## Commands\n\n| Command | Purpose |\n|---|---|\n| \`${runCommand(packageManager, "dev")}\` | Start Vite with live worker, shader, text, and HMR status. |\n| \`${runCommand(packageManager, "lint")}\` | Check correctness and the shipped Three.js-style formatting. |\n| \`${runCommand(packageManager, "typecheck")}\` | Check strict TypeScript without emitting files. |\n| \`${runCommand(packageManager, "build")}\` | Build with graceful live shader fallback. |\n| \`${runCommand(packageManager, "build:strict")}\` | Require fresh precompiled shader receipts. |\n| \`${runCommand(packageManager, "shaders:capture")}\` | Refresh shader receipts after settling shader edits; also compresses \`public/\` GLB and HDR assets to meshopt + KTX2. |\n| \`${runCommand(packageManager, "assets:status")}\` | Re-verify the optimized-asset receipt. |\n${textCommands}| \`${runCommand(packageManager, "browser:smoke")}\` | Prove worker readiness, first frame, and the stats control in a browser. |\n| \`${runCommand(packageManager, "status")}\` | Explain and recover worker, shader, asset, or text readiness. |\n\nPrecompiled shaders are an optimization cache, not an editing prerequisite. During development, changed TSL code hot-swaps and compiles live; the status reports \`shaders live\`. Capture once the shader is settled, then use the strict build as the release gate.\n\nDraco and KTX2 runtime files come from the installed Three.js package; this project commits no codec directory. See the [Three Blocks docs](https://threejs-blocks.com/docs) or the [LLM index](https://threejs-blocks.com/llms.txt).\n\nArtifact state:\n\n${pending}\n\n## License\n\nPersonal and noncommercial projects are free. Pro grants each Project started during an active period a lifetime commercial license for versions released during that period. After cancellation, you may maintain, update, and distribute the Project with those covered versions and keep using Pro Tool versions obtained while active for that Project locally and offline. Starting a new commercial Project, adopting a later version, or downloading or updating a Pro Tool requires an active seat. Covered versions have no runtime gate. See \`NOTICE\` and the [Commercial License Agreement](https://threejs-blocks.com/license).\n`;
|
|
178
178
|
}
|
|
179
179
|
function createAgents(packageManager) {
|
|
180
|
-
return `# AGENTS.md — Three Blocks project\n\nThis is a WebGPU Three.js app rendered in an OffscreenCanvas worker, with shaders precompiled for the first frame. Keep that boundary intact.\n\n## Commands\n\n- \`${runCommand(packageManager, "dev")}\` — Vite plus ambient worker/shader/text status.\n- \`${runCommand(packageManager, "lint")}\` — correctness and Three.js house style.\n- \`${runCommand(packageManager, "typecheck")}\` — strict TypeScript.\n- \`${runCommand(packageManager, "build")}\` — normal production build with live shader fallback.\n- \`${runCommand(packageManager, "build:strict")}\` — release gate requiring fresh shader receipts.\n- \`${runCommand(packageManager, "browser:smoke")}\` — browser proof for worker readiness, first frame, and stats control.\n- \`${runCommand(packageManager, "status")}\` — first recovery command for anything not ready.\n- \`${runCommand(packageManager, "shaders:capture")}\` — refresh shader receipts after shader work settles.\n\n## Ownership\n\n- Edit \`src/scene.ts\` first for Three.js objects, materials, assets, and animation.\n- \`src/render.worker.ts\` owns the renderer, scene, camera, GPU work, and frame loop.\n- \`src/main.ts\` owns DOM input, Lenis, accessibility, and the worker host.\n- Never import Three.js, renderer code, or GPU resources into main-thread modules.\n- Values crossing the worker boundary must be structured-cloneable plain data.\n\n## Scene contract\n\n- Keep the exported \`sceneKey\`, \`loadShaderManifest\`, and \`createScene\` names; shader receipt discovery depends on them.\n- Keep shader-producing objects registered through literal \`context.shaders.material(...)\` or \`.container(...)\` calls.\n- \`Experience\` is a Three.js \`Group\`; add it directly to the scene and dispose owned GPU resources.\n- Put continuous HMR state in the declared \`readonly hot = { ... }\` object. Matching fields transfer automatically.\n- New code defines the hot-state shape; renamed, removed, or re-typed fields keep their new defaults.\n- The optional library \`captureHotState\` / \`restoreHotState\` methods are only for asynchronous or non-declarative restoration.\n\n## Shader editing\n\nEdit TSL normally during \`dev\`. A changed scene hot-swaps transactionally, compiles before commit, and falls back to live TSL when receipts are stale. The overlay/terminal will say \`shaders live\`; this is expected while iterating. Run \`${runCommand(packageManager, "shaders:capture")}\` when the shader is settled, then \`${runCommand(packageManager, "build:strict")}\` before release. If state is unclear, run \`${runCommand(packageManager, "status")}\`.\n\n## Text template\n\nThe DOM remains the semantic and layout source of truth. Keep \`data-canvas-text\` copy in \`index.html\`, declare fonts in \`three-blocks.text.ts\`, and run \`${runCommand(packageManager, "text:generate")}\` after changing glyph coverage.\n`;
|
|
180
|
+
return `# AGENTS.md — Three Blocks project\n\nThis is a WebGPU Three.js app rendered in an OffscreenCanvas worker, with shaders precompiled for the first frame. Keep that boundary intact.\n\n## Commands\n\n- \`${runCommand(packageManager, "dev")}\` — Vite plus ambient worker/shader/text status.\n- \`${runCommand(packageManager, "lint")}\` — correctness and Three.js house style.\n- \`${runCommand(packageManager, "typecheck")}\` — strict TypeScript.\n- \`${runCommand(packageManager, "build")}\` — normal production build with live shader fallback.\n- \`${runCommand(packageManager, "build:strict")}\` — release gate requiring fresh shader receipts.\n- \`${runCommand(packageManager, "browser:smoke")}\` — browser proof for worker readiness, first frame, and stats control.\n- \`${runCommand(packageManager, "status")}\` — first recovery command for anything not ready.\n- \`${runCommand(packageManager, "shaders:capture")}\` — refresh shader receipts after shader work settles; also optimizes \`public/\` GLB and HDR assets to meshopt + KTX2.\n- \`${runCommand(packageManager, "assets:status")}\` — re-verify the optimized-asset receipt.\n\n## Assets\n\n- Drop models and environments under \`public/\` in any source format; \`shaders:capture\` compresses GLB and \`.hdr\` files to meshopt + KTX2 (BC6H-ready HDR) automatically and records exact download and VRAM numbers in \`.three-blocks/assets/meta.json\`.\n- Prefer the optimized \`.ktx2\`/\`.tb.glb\` outputs in code; never hand-edit them — re-run capture when sources change.\n\n## Ownership\n\n- Edit \`src/scene.ts\` first for Three.js objects, materials, assets, and animation.\n- \`src/render.worker.ts\` owns the renderer, scene, camera, GPU work, and frame loop.\n- \`src/main.ts\` owns DOM input, Lenis, accessibility, and the worker host.\n- Never import Three.js, renderer code, or GPU resources into main-thread modules.\n- Values crossing the worker boundary must be structured-cloneable plain data.\n\n## Scene contract\n\n- Keep the exported \`sceneKey\`, \`loadShaderManifest\`, and \`createScene\` names; shader receipt discovery depends on them.\n- Keep shader-producing objects registered through literal \`context.shaders.material(...)\` or \`.container(...)\` calls.\n- \`Experience\` is a Three.js \`Group\`; add it directly to the scene and dispose owned GPU resources.\n- Put continuous HMR state in the declared \`readonly hot = { ... }\` object. Matching fields transfer automatically.\n- New code defines the hot-state shape; renamed, removed, or re-typed fields keep their new defaults.\n- The optional library \`captureHotState\` / \`restoreHotState\` methods are only for asynchronous or non-declarative restoration.\n\n## Shader editing\n\nEdit TSL normally during \`dev\`. A changed scene hot-swaps transactionally, compiles before commit, and falls back to live TSL when receipts are stale. The overlay/terminal will say \`shaders live\`; this is expected while iterating. Run \`${runCommand(packageManager, "shaders:capture")}\` when the shader is settled, then \`${runCommand(packageManager, "build:strict")}\` before release. If state is unclear, run \`${runCommand(packageManager, "status")}\`.\n\n## Text template\n\nThe DOM remains the semantic and layout source of truth. Keep \`data-canvas-text\` copy in \`index.html\`, declare fonts in \`three-blocks.text.ts\`, and run \`${runCommand(packageManager, "text:generate")}\` after changing glyph coverage.\n`;
|
|
181
181
|
}
|
|
182
182
|
export function validateResolvedProject(project, source = defaultCatalog) {
|
|
183
183
|
const runtimeKeys = Object.keys(project.dependencies).sort();
|
package/dist/constants.js
CHANGED
|
@@ -9,7 +9,7 @@ export const GENERATOR_VERSION = (() => {
|
|
|
9
9
|
export const RESULT_PROTOCOL_VERSION = 1;
|
|
10
10
|
export const COMPATIBILITY_VERSIONS = Object.freeze({
|
|
11
11
|
three: '0.185.1',
|
|
12
|
-
threeBlocks: '0.
|
|
12
|
+
threeBlocks: '0.6.0-alpha.320.g7e6e67cd7214',
|
|
13
13
|
lenis: '1.3.25',
|
|
14
14
|
statsGl: '4.2.3',
|
|
15
15
|
});
|
package/dist/generate.js
CHANGED
|
@@ -148,7 +148,7 @@ async function writeResultFile(resultFile, result) {
|
|
|
148
148
|
throw error;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
const DEVTOOLS_SPECIFIER = '@three-blocks/devtools
|
|
151
|
+
const DEVTOOLS_SPECIFIER = '@three-blocks/devtools@5.0.0-alpha.320.g7e6e67cd7214';
|
|
152
152
|
/**
|
|
153
153
|
* Best-effort devDependency: a project-local `@three-blocks/devtools` makes
|
|
154
154
|
* `three-blocks status`, shader capture, and browser smoke instant, offline,
|
package/dist/layers.js
CHANGED
|
@@ -33,6 +33,7 @@ const core = {
|
|
|
33
33
|
status: 'three-blocks status',
|
|
34
34
|
'shaders:capture': 'three-blocks shaders capture',
|
|
35
35
|
'shaders:test': 'three-blocks shaders test',
|
|
36
|
+
'assets:status': 'three-blocks assets status',
|
|
36
37
|
'browser:smoke': 'three-blocks browser smoke',
|
|
37
38
|
},
|
|
38
39
|
vite: { worker: true },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-three-blocks-starter",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3-alpha.320.g7e6e67cd7214",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Create a typed, worker-first Three Blocks project",
|
|
@@ -61,5 +61,9 @@
|
|
|
61
61
|
"typescript": "^5.9.3",
|
|
62
62
|
"typescript-eslint": "^8.62.1",
|
|
63
63
|
"vitest": "^4.1.8"
|
|
64
|
+
},
|
|
65
|
+
"threeBlocks": {
|
|
66
|
+
"channel": "alpha",
|
|
67
|
+
"site": "https://preprod.threejs-blocks.com"
|
|
64
68
|
}
|
|
65
69
|
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
2
|
+
"runtime": {
|
|
3
|
+
"capture": {
|
|
4
|
+
"adapter": "WebGPU adapter",
|
|
5
|
+
"features": [],
|
|
6
|
+
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/149.0.7827.55 Safari/537.36"
|
|
7
|
+
},
|
|
8
|
+
"three": "0.185.1",
|
|
9
|
+
"threeBlocks": "0.6.0-alpha.320.g7e6e67cd7214",
|
|
10
|
+
"threeBlocksShaderClosure": "64e2e021698f0bbb6e72c59c6112fa003450b50938cd226626eaaae0886dcb00"
|
|
11
|
+
},
|
|
12
|
+
"scenes": {
|
|
13
|
+
"scene": {
|
|
14
|
+
"artifact": "scene.webgpu.ts",
|
|
15
|
+
"artifactHash": "35724fea3dee964992d0b17084e3ecd6e4158cf222a65c99275dc2da3a7c086a",
|
|
16
|
+
"asset": "three-blocks/shaders/scene.webgpu.json",
|
|
17
|
+
"assetHash": "1c7906c8ccd46f744c962d52a5b8a8ea387100e4dd2a08fdd056813a9c86215a",
|
|
18
|
+
"backend": "webgpu",
|
|
19
|
+
"bytes": 73895,
|
|
20
|
+
"coverage": {
|
|
21
|
+
"compute": 0,
|
|
22
|
+
"fragment": 6,
|
|
23
|
+
"render": 6,
|
|
24
|
+
"vertex": 6
|
|
25
|
+
},
|
|
26
|
+
"inputs": {
|
|
27
|
+
"src/assets.ts": "ec86aea62751663409bd59264ddd53f028ae716ede15a30bc699d10ea175a5ca",
|
|
28
|
+
"src/look.ts": "c0639402db78e361efb099d5c775246bde7b76050fac0958fc9b7db0d0b1bd5a",
|
|
29
|
+
"src/scene.ts": "f5ea470cb0a169221e1fd57bf9623c1c211abb32da5cb7d98bf25740794ada4b"
|
|
30
|
+
},
|
|
31
|
+
"skipped": {
|
|
32
|
+
"compute": 0,
|
|
33
|
+
"render": 0
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"scene.webgl": {
|
|
37
|
+
"artifact": "scene.webgl.ts",
|
|
38
|
+
"artifactHash": "38df41a0370e5069f94ce4f27b1c5c20eb3c977231fc7d28e1ef37ddcd0e5557",
|
|
39
|
+
"asset": "three-blocks/shaders/scene.webgl.json",
|
|
40
|
+
"assetHash": "98a66008570b502402c2f355c974f28e2031f5a1334b1601e7c5d9ecbadd0962",
|
|
41
|
+
"backend": "webgl",
|
|
42
|
+
"bytes": 106898,
|
|
43
|
+
"coverage": {
|
|
44
|
+
"compute": 0,
|
|
45
|
+
"fragment": 6,
|
|
46
|
+
"render": 6,
|
|
47
|
+
"vertex": 6
|
|
48
|
+
},
|
|
49
|
+
"inputs": {
|
|
50
|
+
"src/assets.ts": "ec86aea62751663409bd59264ddd53f028ae716ede15a30bc699d10ea175a5ca",
|
|
51
|
+
"src/look.ts": "c0639402db78e361efb099d5c775246bde7b76050fac0958fc9b7db0d0b1bd5a",
|
|
52
|
+
"src/scene.ts": "f5ea470cb0a169221e1fd57bf9623c1c211abb32da5cb7d98bf25740794ada4b"
|
|
53
|
+
},
|
|
54
|
+
"skipped": {
|
|
55
|
+
"compute": 0,
|
|
56
|
+
"render": 0
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"schemaVersion": 2,
|
|
61
|
+
"tool": {
|
|
62
|
+
"address": 2,
|
|
63
|
+
"compatibilities": {
|
|
64
|
+
"webgl": "three-webgl-r185-v1",
|
|
65
|
+
"webgpu": "three-webgpu-r185-v1"
|
|
66
|
+
},
|
|
67
|
+
"compatibility": "three-webgpu-r185-v1",
|
|
68
|
+
"hydration": 2,
|
|
69
|
+
"name": "@three-blocks/devtools",
|
|
70
|
+
"recipe": 1,
|
|
71
|
+
"transform": 62,
|
|
72
|
+
"version": "5.0.0-alpha.320.g7e6e67cd7214"
|
|
73
|
+
}
|
|
74
74
|
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
"adapter": "WebGL adapter",
|
|
3
|
+
"measuredAt": "2026-08-05T13:44:13.669Z",
|
|
4
|
+
"platform": "darwin/arm64",
|
|
5
|
+
"receiptHash": "26b80569b28fab60caa049f59d3095b3602a2e0d85037d304d55a9aa4e9d1b0c",
|
|
6
|
+
"scenes": {
|
|
7
|
+
"scene": {
|
|
8
|
+
"avoidedBuildMs": 21.50000023841858,
|
|
9
|
+
"builds": 6,
|
|
10
|
+
"liveBuildMs": 21.50000023841858,
|
|
11
|
+
"precompiledBuildMs": 0,
|
|
12
|
+
"runs": 1,
|
|
13
|
+
"setupMeasured": false,
|
|
14
|
+
"spreadMs": 0
|
|
15
|
+
},
|
|
16
|
+
"scene.webgl": {
|
|
17
|
+
"avoidedBuildMs": 21.899999856948853,
|
|
18
|
+
"builds": 6,
|
|
19
|
+
"liveBuildMs": 21.899999856948853,
|
|
20
|
+
"precompiledBuildMs": 0,
|
|
21
|
+
"runs": 1,
|
|
22
|
+
"setupMeasured": false,
|
|
23
|
+
"spreadMs": 0
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"schemaVersion": 3,
|
|
27
|
+
"source": "committed-capture"
|
|
28
28
|
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
2
|
+
"runtime": {
|
|
3
|
+
"capture": {
|
|
4
|
+
"adapter": "WebGPU adapter",
|
|
5
|
+
"features": [],
|
|
6
|
+
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/149.0.7827.55 Safari/537.36"
|
|
7
|
+
},
|
|
8
|
+
"three": "0.185.1",
|
|
9
|
+
"threeBlocks": "0.6.0-alpha.320.g7e6e67cd7214",
|
|
10
|
+
"threeBlocksShaderClosure": "64e2e021698f0bbb6e72c59c6112fa003450b50938cd226626eaaae0886dcb00"
|
|
11
|
+
},
|
|
12
|
+
"scenes": {
|
|
13
|
+
"text": {
|
|
14
|
+
"artifact": "text.webgpu.ts",
|
|
15
|
+
"artifactHash": "5339bc35a8ecf200ae5270194c6460838b92093723dbf50862d052939e8d2e82",
|
|
16
|
+
"asset": "three-blocks/shaders/text.webgpu.json",
|
|
17
|
+
"assetHash": "8d990f66195ed6f8576891d304db2579c38926382240d5ec54f0260838056a8e",
|
|
18
|
+
"backend": "webgpu",
|
|
19
|
+
"bytes": 106957,
|
|
20
|
+
"coverage": {
|
|
21
|
+
"compute": 0,
|
|
22
|
+
"fragment": 8,
|
|
23
|
+
"render": 8,
|
|
24
|
+
"vertex": 8
|
|
25
|
+
},
|
|
26
|
+
"inputs": {
|
|
27
|
+
"src/assets.ts": "ec86aea62751663409bd59264ddd53f028ae716ede15a30bc699d10ea175a5ca",
|
|
28
|
+
"src/look.ts": "c0639402db78e361efb099d5c775246bde7b76050fac0958fc9b7db0d0b1bd5a",
|
|
29
|
+
"src/scene.ts": "359b087788fc51d75eea076e2f0e9d087da6910c77532c87f1441eaddb160c8a"
|
|
30
|
+
},
|
|
31
|
+
"skipped": {
|
|
32
|
+
"compute": 0,
|
|
33
|
+
"render": 0
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"text.webgl": {
|
|
37
|
+
"artifact": "text.webgl.ts",
|
|
38
|
+
"artifactHash": "284151dce9bed5dc796f538e2ba35afbb1650239e745f7c3203e1a0c4547a7d4",
|
|
39
|
+
"asset": "three-blocks/shaders/text.webgl.json",
|
|
40
|
+
"assetHash": "40a46aa5ffae9effe571cd9d087e63c2054ad2619667535b7397d4e154ecefb8",
|
|
41
|
+
"backend": "webgl",
|
|
42
|
+
"bytes": 107261,
|
|
43
|
+
"coverage": {
|
|
44
|
+
"compute": 0,
|
|
45
|
+
"fragment": 4,
|
|
46
|
+
"render": 4,
|
|
47
|
+
"vertex": 4
|
|
48
|
+
},
|
|
49
|
+
"inputs": {
|
|
50
|
+
"src/assets.ts": "ec86aea62751663409bd59264ddd53f028ae716ede15a30bc699d10ea175a5ca",
|
|
51
|
+
"src/look.ts": "c0639402db78e361efb099d5c775246bde7b76050fac0958fc9b7db0d0b1bd5a",
|
|
52
|
+
"src/scene.ts": "359b087788fc51d75eea076e2f0e9d087da6910c77532c87f1441eaddb160c8a"
|
|
53
|
+
},
|
|
54
|
+
"skipped": {
|
|
55
|
+
"compute": 0,
|
|
56
|
+
"render": 4
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"schemaVersion": 2,
|
|
61
|
+
"tool": {
|
|
62
|
+
"address": 2,
|
|
63
|
+
"compatibilities": {
|
|
64
|
+
"webgl": "three-webgl-r185-v1",
|
|
65
|
+
"webgpu": "three-webgpu-r185-v1"
|
|
66
|
+
},
|
|
67
|
+
"compatibility": "three-webgpu-r185-v1",
|
|
68
|
+
"hydration": 2,
|
|
69
|
+
"name": "@three-blocks/devtools",
|
|
70
|
+
"recipe": 1,
|
|
71
|
+
"transform": 62,
|
|
72
|
+
"version": "5.0.0-alpha.320.g7e6e67cd7214"
|
|
73
|
+
}
|
|
74
74
|
}
|
|
@@ -332,6 +332,10 @@ export default {
|
|
|
332
332
|
},
|
|
333
333
|
{
|
|
334
334
|
"name": "nodeUniform12",
|
|
335
|
+
"type": "vec2"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "nodeUniform13",
|
|
335
339
|
"type": "float"
|
|
336
340
|
}
|
|
337
341
|
]
|
|
@@ -415,6 +419,10 @@ export default {
|
|
|
415
419
|
},
|
|
416
420
|
{
|
|
417
421
|
"name": "nodeUniform12",
|
|
422
|
+
"type": "vec2"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"name": "nodeUniform13",
|
|
418
426
|
"type": "float"
|
|
419
427
|
}
|
|
420
428
|
]
|
|
@@ -498,6 +506,10 @@ export default {
|
|
|
498
506
|
},
|
|
499
507
|
{
|
|
500
508
|
"name": "nodeUniform12",
|
|
509
|
+
"type": "vec2"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"name": "nodeUniform13",
|
|
501
513
|
"type": "float"
|
|
502
514
|
}
|
|
503
515
|
]
|
|
@@ -581,6 +593,10 @@ export default {
|
|
|
581
593
|
},
|
|
582
594
|
{
|
|
583
595
|
"name": "nodeUniform12",
|
|
596
|
+
"type": "vec2"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"name": "nodeUniform13",
|
|
584
600
|
"type": "float"
|
|
585
601
|
}
|
|
586
602
|
]
|
|
@@ -742,7 +758,7 @@ export default {
|
|
|
742
758
|
}
|
|
743
759
|
]
|
|
744
760
|
],
|
|
745
|
-
"modules": ["// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform1 : vec2<f32>,\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar2 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform4 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar2 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar2;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0_sampler : sampler;\n@binding( 1 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : vec2<f32>,\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec4<f32>;\n\n// codes\nfn fn1 ( color : vec4<f32> ) -> vec4<f32> {\n\n\tvar nodeVar0 : vec4<f32>;\n\n\n\tif ( ( color.w == 0.0 ) ) {\n\n\t\tnodeVar0 = vec4<f32>( 0.0, 0.0, 0.0, 0.0 );\n\n\t} else {\n\n\t\tnodeVar0 = vec4<f32>( ( color.xyz / vec3<f32>( color.w ) ), color.w );\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn sRGBTransferOETF ( color : vec3<f32> ) -> vec3<f32> {\n\n\t\n\n\n\treturn mix( ( ( pow( color, vec3<f32>( 0.41666 ) ) * vec3<f32>( 1.055 ) ) - vec3<f32>( 0.055 ) ), ( color * vec3<f32>( 12.92 ) ), vec3<f32>( ( color <= vec3<f32>( 0.0031308 ) ) ) );\n\n}\n\nfn fn0 ( color : vec4<f32> ) -> vec4<f32> {\n\n\t\n\n\n\treturn vec4<f32>( ( color.xyz * vec3<f32>( color.w ) ), color.w );\n\n}\n\n\n\n@fragment\nfn main( @builtin( position ) fragCoord : vec4<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( fragCoord.xy / object.nodeUniform1 ) );\n\tnodeVar1 = fn1( vec4<f32>( nodeVar0.xyz, clamp( nodeVar0.w, 0.0, 1.0 ) ) );\n\n\t// result\n\n\toutput.color = fn0( vec4<f32>( sRGBTransferOETF( nodeVar1.xyz ), nodeVar1.w ) );\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar1 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform3 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar1 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar1;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> nodeVar0 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( 0.0, 0.0, 0.0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform0 );\n\tnodeVar0 = max( vec4<f32>( DiffuseColor.xyz, DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar0;\n\n\t// result\n\n\toutput.color = nodeVar0;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform16 : vec3<f32>,\n\tnodeUniform19 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform14 : vec3<f32>,\n\tnodeUniform15 : vec3<f32>,\n\tnodeUniform17 : vec3<f32>,\n\tnodeUniform18 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionViewDirection : vec3<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> normalLocal : vec3<f32>;\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar147 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) normal : vec3<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tnormalLocal = normal;\n\tvaryings.v_normalViewGeometry = normalize( ( render.cameraViewMatrix * vec4<f32>( ( object.nodeUniform5 * normalLocal ), 0.0 ) ).xyz );\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tvaryings.v_positionViewDirection = ( - v_positionView );\n\tVERTEX_nodeVar147 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar147;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform13_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform13 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform16 : vec3<f32>,\n\tnodeUniform19 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform14 : vec3<f32>,\n\tnodeUniform15 : vec3<f32>,\n\tnodeUniform17 : vec3<f32>,\n\tnodeUniform18 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Metalness : f32;\nvar<private> Roughness : f32;\nvar<private> normalViewGeometry : vec3<f32>;\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> SpecularColor : vec3<f32>;\nvar<private> SpecularColorBlended : vec3<f32>;\nvar<private> SpecularF90 : f32;\nvar<private> DiffuseContribution : vec3<f32>;\nvar<private> EmissiveColor : vec3<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> NORMAL_normalView : vec3<f32>;\nvar<private> normalView : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> nodeVar6 : f32;\nvar<private> nodeVar7 : vec3<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar9 : vec3<f32>;\nvar<private> nodeVar10 : vec3<f32>;\nvar<private> nodeVar11 : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> positionViewDirection : vec3<f32>;\nvar<private> nodeVar12 : vec3<f32>;\nvar<private> nodeVar13 : f32;\nvar<private> nodeVar14 : f32;\nvar<private> nodeVar15 : f32;\nvar<private> nodeVar16 : vec4<f32>;\nvar<private> nodeVar17 : vec4<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : f32;\nvar<private> nodeVar20 : f32;\nvar<private> nodeVar21 : vec3<f32>;\nvar<private> nodeVar22 : vec3<f32>;\nvar<private> nodeVar23 : vec3<f32>;\nvar<private> nodeVar24 : vec3<f32>;\nvar<private> nodeVar25 : vec4<f32>;\nvar<private> nodeVar26 : vec4<f32>;\nvar<private> nodeVar27 : vec3<f32>;\nvar<private> nodeVar28 : vec3<f32>;\nvar<private> nodeVar29 : f32;\nvar<private> nodeVar30 : vec3<f32>;\nvar<private> nodeVar31 : vec3<f32>;\nvar<private> nodeVar32 : vec3<f32>;\nvar<private> nodeVar33 : vec3<f32>;\nvar<private> nodeVar34 : vec3<f32>;\nvar<private> nodeVar35 : vec3<f32>;\nvar<private> nodeVar36 : f32;\nvar<private> nodeVar37 : f32;\nvar<private> nodeVar38 : f32;\nvar<private> nodeVar39 : vec4<f32>;\nvar<private> nodeVar40 : vec4<f32>;\nvar<private> nodeVar41 : vec3<f32>;\nvar<private> nodeVar42 : f32;\nvar<private> nodeVar43 : f32;\nvar<private> nodeVar44 : vec3<f32>;\nvar<private> nodeVar45 : vec3<f32>;\nvar<private> nodeVar46 : vec3<f32>;\nvar<private> nodeVar47 : vec3<f32>;\nvar<private> nodeVar48 : vec4<f32>;\nvar<private> nodeVar49 : vec4<f32>;\nvar<private> nodeVar50 : vec3<f32>;\nvar<private> nodeVar51 : vec3<f32>;\nvar<private> nodeVar52 : f32;\nvar<private> nodeVar53 : vec3<f32>;\nvar<private> nodeVar54 : vec3<f32>;\nvar<private> nodeVar55 : vec3<f32>;\nvar<private> nodeVar56 : vec3<f32>;\nvar<private> nodeVar57 : vec3<f32>;\nvar<private> nodeVar58 : vec3<f32>;\nvar<private> nodeVar59 : f32;\nvar<private> nodeVar60 : f32;\nvar<private> nodeVar61 : f32;\nvar<private> nodeVar62 : vec4<f32>;\nvar<private> nodeVar63 : vec4<f32>;\nvar<private> nodeVar64 : vec3<f32>;\nvar<private> nodeVar65 : f32;\nvar<private> nodeVar66 : f32;\nvar<private> nodeVar67 : vec3<f32>;\nvar<private> nodeVar68 : vec3<f32>;\nvar<private> nodeVar69 : vec3<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar70 : vec3<f32>;\nvar<private> nodeVar71 : vec3<f32>;\nvar<private> nodeVar72 : vec3<f32>;\nvar<private> nodeVar73 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar74 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar75 : f32;\nvar<private> nodeVar76 : vec4<f32>;\nvar<private> nodeVar77 : vec3<f32>;\nvar<private> nodeVar78 : f32;\nvar<private> nodeVar79 : vec3<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> nodeVar81 : vec3<f32>;\nvar<private> nodeVar82 : vec3<f32>;\nvar<private> nodeVar83 : vec3<f32>;\nvar<private> nodeVar84 : vec3<f32>;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : f32;\nvar<private> nodeVar88 : f32;\nvar<private> nodeVar89 : vec3<f32>;\nvar<private> nodeVar90 : vec3<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : vec3<f32>;\nvar<private> nodeVar93 : vec3<f32>;\nvar<private> nodeVar94 : vec3<f32>;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : vec4<f32>;\nvar<private> nodeVar97 : vec3<f32>;\nvar<private> nodeVar98 : f32;\nvar<private> nodeVar99 : vec3<f32>;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> nodeVar101 : vec3<f32>;\nvar<private> nodeVar102 : vec3<f32>;\nvar<private> nodeVar103 : vec3<f32>;\nvar<private> nodeVar104 : vec3<f32>;\nvar<private> nodeVar105 : vec3<f32>;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : f32;\nvar<private> nodeVar108 : f32;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> nodeVar112 : vec3<f32>;\nvar<private> nodeVar113 : vec3<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> radiance : vec3<f32>;\nvar<private> nodeVar115 : vec3<f32>;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar118 : vec3<f32>;\nvar<private> nodeVar119 : vec3<f32>;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> nodeVar123 : vec3<f32>;\nvar<private> nodeVar124 : vec3<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : f32;\nvar<private> nodeVar132 : f32;\nvar<private> nodeVar133 : f32;\nvar<private> nodeVar134 : f32;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : f32;\nvar<private> nodeVar137 : f32;\nvar<private> nodeVar138 : f32;\nvar<private> nodeVar139 : f32;\nvar<private> nodeVar140 : f32;\nvar<private> nodeVar141 : f32;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar143 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar144 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar145 : vec3<f32>;\nvar<private> nodeVar146 : vec4<f32>;\n\n// codes\nfn V_GGX_SmithCorrelated ( alpha : f32, dotNL : f32, dotNV : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\n\treturn ( 0.5 / max( ( ( dotNL * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNV * dotNV ) ) ) ) ) + ( dotNV * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNL * dotNL ) ) ) ) ) ), 0.000001 ) );\n\n}\n\nfn D_GGX ( alpha : f32, dotNH : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\tvar nodeVar1 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\tnodeVar1 = ( 1.0 - ( ( dotNH * dotNH ) * ( 1.0 - nodeVar0 ) ) );\n\n\treturn ( ( nodeVar0 / ( nodeVar1 * nodeVar1 ) ) * 0.3183098861837907 );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionViewDirection : vec3<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( object.nodeUniform0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform1 );\n\tDiffuseColor.w = 1.0;\n\tMetalness = object.nodeUniform2;\n\tnormalViewGeometry = normalize( v_normalViewGeometry );\n\tnodeVar0 = max( abs( dpdx( normalViewGeometry ) ), abs( - dpdy( normalViewGeometry ) ) );\n\tRoughness = min( ( max( object.nodeUniform3, 0.0525 ) + max( max( nodeVar0.x, nodeVar0.y ), nodeVar0.z ) ), 1.0 );\n\tSpecularColor = vec3<f32>( 0.04, 0.04, 0.04 );\n\tSpecularColorBlended = mix( vec3<f32>( 0.04, 0.04, 0.04 ), DiffuseColor.xyz, Metalness );\n\tSpecularF90 = 1.0;\n\tDiffuseContribution = ( DiffuseColor.xyz * vec3<f32>( ( 1.0 - object.nodeUniform2 ) ) );\n\tEmissiveColor = ( object.nodeUniform6 * vec3<f32>( object.nodeUniform7 ) );\n\tNORMAL_normalView = normalViewGeometry;\n\tnormalView = NORMAL_normalView;\n\tnodeVar1 = ( render.nodeUniform9 - render.nodeUniform10 );\n\tnodeVar2 = vec4<f32>( nodeVar1, 0.0 );\n\tnodeVar3 = ( render.cameraViewMatrix * nodeVar2 );\n\tnodeVar4 = normalize( nodeVar3.xyz );\n\tnodeVar5 = nodeVar4;\n\tnodeVar6 = dot( normalView, nodeVar5 );\n\tnodeVar7 = ( vec3<f32>( clamp( nodeVar6, 0.0, 1.0 ) ) * render.nodeUniform11 );\n\tnodeVar8 = nodeVar7;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar9 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar10 = ( nodeVar8 * nodeVar9 );\n\tnodeVar11 = ( directDiffuse + nodeVar10 );\n\tdirectDiffuse = nodeVar11;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tpositionViewDirection = normalize( v_positionViewDirection );\n\tnodeVar12 = normalize( ( nodeVar5 + positionViewDirection ) );\n\tnodeVar13 = clamp( dot( positionViewDirection, nodeVar12 ), 0.0, 1.0 );\n\tnodeVar14 = exp2( ( ( ( nodeVar13 * -5.55473 ) - 6.98316 ) * nodeVar13 ) );\n\tnodeVar15 = ( Roughness * Roughness );\n\tnodeVar16 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar17 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ) ) );\n\tnodeVar18 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar19 = ( 1.0 - ( nodeVar16.xy.x + nodeVar16.xy.y ) );\n\tnodeVar20 = ( 1.0 - ( nodeVar17.xy.x + nodeVar17.xy.y ) );\n\tnodeVar21 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar14 ) ) ) + vec3<f32>( ( 1.0 * nodeVar14 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar15, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar15, clamp( dot( normalView, nodeVar12 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar16.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar16.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar17.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar17.xy.y ) ) ) ) * nodeVar18 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar19 * nodeVar20 ) ) * nodeVar18 ) * nodeVar18 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar19 * nodeVar20 ) ) ) );\n\tnodeVar22 = ( nodeVar8 * nodeVar21 );\n\tnodeVar23 = ( directSpecular + nodeVar22 );\n\tdirectSpecular = nodeVar23;\n\tnodeVar24 = ( render.nodeUniform14 - render.nodeUniform15 );\n\tnodeVar25 = vec4<f32>( nodeVar24, 0.0 );\n\tnodeVar26 = ( render.cameraViewMatrix * nodeVar25 );\n\tnodeVar27 = normalize( nodeVar26.xyz );\n\tnodeVar28 = nodeVar27;\n\tnodeVar29 = dot( normalView, nodeVar28 );\n\tnodeVar30 = ( vec3<f32>( clamp( nodeVar29, 0.0, 1.0 ) ) * render.nodeUniform16 );\n\tnodeVar31 = nodeVar30;\n\tnodeVar32 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar33 = ( nodeVar31 * nodeVar32 );\n\tnodeVar34 = ( directDiffuse + nodeVar33 );\n\tdirectDiffuse = nodeVar34;\n\tnodeVar35 = normalize( ( nodeVar28 + positionViewDirection ) );\n\tnodeVar36 = clamp( dot( positionViewDirection, nodeVar35 ), 0.0, 1.0 );\n\tnodeVar37 = exp2( ( ( ( nodeVar36 * -5.55473 ) - 6.98316 ) * nodeVar36 ) );\n\tnodeVar38 = ( Roughness * Roughness );\n\tnodeVar39 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar40 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar28 ), 0.0, 1.0 ) ) );\n\tnodeVar41 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar42 = ( 1.0 - ( nodeVar39.xy.x + nodeVar39.xy.y ) );\n\tnodeVar43 = ( 1.0 - ( nodeVar40.xy.x + nodeVar40.xy.y ) );\n\tnodeVar44 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar37 ) ) ) + vec3<f32>( ( 1.0 * nodeVar37 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar38, clamp( dot( normalView, nodeVar28 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar38, clamp( dot( normalView, nodeVar35 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar39.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar39.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar40.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar40.xy.y ) ) ) ) * nodeVar41 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar42 * nodeVar43 ) ) * nodeVar41 ) * nodeVar41 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar42 * nodeVar43 ) ) ) );\n\tnodeVar45 = ( nodeVar31 * nodeVar44 );\n\tnodeVar46 = ( directSpecular + nodeVar45 );\n\tdirectSpecular = nodeVar46;\n\tnodeVar47 = ( render.nodeUniform17 - render.nodeUniform18 );\n\tnodeVar48 = vec4<f32>( nodeVar47, 0.0 );\n\tnodeVar49 = ( render.cameraViewMatrix * nodeVar48 );\n\tnodeVar50 = normalize( nodeVar49.xyz );\n\tnodeVar51 = nodeVar50;\n\tnodeVar52 = dot( normalView, nodeVar51 );\n\tnodeVar53 = ( vec3<f32>( clamp( nodeVar52, 0.0, 1.0 ) ) * render.nodeUniform19 );\n\tnodeVar54 = nodeVar53;\n\tnodeVar55 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar56 = ( nodeVar54 * nodeVar55 );\n\tnodeVar57 = ( directDiffuse + nodeVar56 );\n\tdirectDiffuse = nodeVar57;\n\tnodeVar58 = normalize( ( nodeVar51 + positionViewDirection ) );\n\tnodeVar59 = clamp( dot( positionViewDirection, nodeVar58 ), 0.0, 1.0 );\n\tnodeVar60 = exp2( ( ( ( nodeVar59 * -5.55473 ) - 6.98316 ) * nodeVar59 ) );\n\tnodeVar61 = ( Roughness * Roughness );\n\tnodeVar62 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar63 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar51 ), 0.0, 1.0 ) ) );\n\tnodeVar64 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar65 = ( 1.0 - ( nodeVar62.xy.x + nodeVar62.xy.y ) );\n\tnodeVar66 = ( 1.0 - ( nodeVar63.xy.x + nodeVar63.xy.y ) );\n\tnodeVar67 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar60 ) ) ) + vec3<f32>( ( 1.0 * nodeVar60 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar61, clamp( dot( normalView, nodeVar51 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar61, clamp( dot( normalView, nodeVar58 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar62.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar62.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar63.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar63.xy.y ) ) ) ) * nodeVar64 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar65 * nodeVar66 ) ) * nodeVar64 ) * nodeVar64 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar65 * nodeVar66 ) ) ) );\n\tnodeVar68 = ( nodeVar54 * nodeVar67 );\n\tnodeVar69 = ( directSpecular + nodeVar68 );\n\tdirectSpecular = nodeVar69;\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar70 = ( irradiance + render.nodeUniform20 );\n\tirradiance = nodeVar70;\n\tnodeVar71 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar72 = ( irradiance * nodeVar71 );\n\tnodeVar73 = nodeVar72;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar74 = ( indirectDiffuse + nodeVar73 );\n\tindirectDiffuse = nodeVar74;\n\tsingleScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tsingleScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar75 = dot( normalView, positionViewDirection );\n\tnodeVar76 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar75, 0.0, 1.0 ) ) );\n\tnodeVar77 = ( SpecularColor * vec3<f32>( nodeVar76.xy.x ) );\n\tnodeVar78 = ( SpecularF90 * nodeVar76.xy.y );\n\tnodeVar79 = ( nodeVar77 + vec3<f32>( nodeVar78 ) );\n\tnodeVar80 = ( singleScatteringDielectric + nodeVar79 );\n\tsingleScatteringDielectric = nodeVar80;\n\tnodeVar81 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar82 = nodeVar81;\n\tnodeVar83 = ( nodeVar82 * vec3<f32>( 0.047619 ) );\n\tnodeVar84 = ( SpecularColor + nodeVar83 );\n\tnodeVar85 = ( nodeVar79 * nodeVar84 );\n\tnodeVar86 = ( nodeVar76.xy.x + nodeVar76.xy.y );\n\tnodeVar87 = ( 1.0 - nodeVar86 );\n\tnodeVar88 = nodeVar87;\n\tnodeVar89 = ( vec3<f32>( nodeVar88 ) * nodeVar84 );\n\tnodeVar90 = ( vec3<f32>( 1.0 ) - nodeVar89 );\n\tnodeVar91 = nodeVar90;\n\tnodeVar92 = ( nodeVar85 / nodeVar91 );\n\tnodeVar93 = ( nodeVar92 * vec3<f32>( nodeVar88 ) );\n\tnodeVar94 = ( multiScatteringDielectric + nodeVar93 );\n\tmultiScatteringDielectric = nodeVar94;\n\tnodeVar95 = dot( normalView, positionViewDirection );\n\tnodeVar96 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar95, 0.0, 1.0 ) ) );\n\tnodeVar97 = ( DiffuseColor.xyz * vec3<f32>( nodeVar96.xy.x ) );\n\tnodeVar98 = ( SpecularF90 * nodeVar96.xy.y );\n\tnodeVar99 = ( nodeVar97 + vec3<f32>( nodeVar98 ) );\n\tnodeVar100 = ( singleScatteringMetallic + nodeVar99 );\n\tsingleScatteringMetallic = nodeVar100;\n\tnodeVar101 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar102 = nodeVar101;\n\tnodeVar103 = ( nodeVar102 * vec3<f32>( 0.047619 ) );\n\tnodeVar104 = ( DiffuseColor.xyz + nodeVar103 );\n\tnodeVar105 = ( nodeVar99 * nodeVar104 );\n\tnodeVar106 = ( nodeVar96.xy.x + nodeVar96.xy.y );\n\tnodeVar107 = ( 1.0 - nodeVar106 );\n\tnodeVar108 = nodeVar107;\n\tnodeVar109 = ( vec3<f32>( nodeVar108 ) * nodeVar104 );\n\tnodeVar110 = ( vec3<f32>( 1.0 ) - nodeVar109 );\n\tnodeVar111 = nodeVar110;\n\tnodeVar112 = ( nodeVar105 / nodeVar111 );\n\tnodeVar113 = ( nodeVar112 * vec3<f32>( nodeVar108 ) );\n\tnodeVar114 = ( multiScatteringMetallic + nodeVar113 );\n\tmultiScatteringMetallic = nodeVar114;\n\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar115 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar116 = ( radiance * nodeVar115 );\n\tnodeVar117 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar118 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar119 = ( nodeVar117 * nodeVar118 );\n\tnodeVar120 = ( nodeVar116 + nodeVar119 );\n\tnodeVar121 = nodeVar120;\n\tnodeVar122 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar123 = ( vec3<f32>( 1.0 ) - nodeVar122 );\n\tnodeVar124 = nodeVar123;\n\tnodeVar125 = ( DiffuseContribution * nodeVar124 );\n\tnodeVar126 = ( nodeVar125 * nodeVar118 );\n\tnodeVar127 = nodeVar126;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar128 = ( indirectSpecular + nodeVar121 );\n\tindirectSpecular = nodeVar128;\n\tnodeVar129 = ( indirectDiffuse + nodeVar127 );\n\tindirectDiffuse = nodeVar129;\n\tambientOcclusion = 1.0;\n\tnodeVar130 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar130;\n\tnodeVar131 = dot( normalView, positionViewDirection );\n\tnodeVar132 = ( clamp( nodeVar131, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar133 = ( Roughness * -16.0 );\n\tnodeVar134 = ( 1.0 - nodeVar133 );\n\tnodeVar135 = nodeVar134;\n\tnodeVar136 = ( - nodeVar135 );\n\tnodeVar137 = exp2( nodeVar136 );\n\tnodeVar138 = pow( nodeVar132, nodeVar137 );\n\tnodeVar139 = ( 1.0 - nodeVar138 );\n\tnodeVar140 = nodeVar139;\n\tnodeVar141 = ( ambientOcclusion - nodeVar140 );\n\tnodeVar142 = ( indirectSpecular * vec3<f32>( clamp( nodeVar141, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar142;\n\tnodeVar143 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar143;\n\tnodeVar144 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar144;\n\tnodeVar145 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar145;\n\tnodeVar146 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar146;\n\n\t// result\n\n\toutput.color = nodeVar146;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3536Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3536 : NodeBuffer_3536Struct;\n\nstruct NodeBuffer_3517Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3517 : NodeBuffer_3517Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3536.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = vec4<f32>( ( ( ( ( object.nodeUniform9 + vec2<f32>( ( mat4x4<f32>( NodeBuffer_3517.value[ nodeVar10 ], NodeBuffer_3517.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.x, ( - ( mat4x4<f32>( NodeBuffer_3517.value[ nodeVar10 ], NodeBuffer_3517.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.y ) ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform12, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar11;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform1_sampler : sampler;\n@binding( 1 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tnodeUniform8 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec4<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar2 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar6 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar7 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> nodeVar9 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = vec2<f32>( mix( nodeVarying1.x, nodeVarying1.z, nodeVarying2.x ), mix( nodeVarying1.w, nodeVarying1.y, nodeVarying2.y ) );\n\tnodeVar1 = textureSample( nodeUniform1, nodeUniform1_sampler, ( object.nodeUniform2 * vec3<f32>( nodeVar0, 1.0 ) ).xy );\n\tDiffuseColor = vec4<f32>( nodeVarying0.xyz, ( ( clamp( ( ( ( ( max( min( nodeVar1.x, nodeVar1.y ), min( max( nodeVar1.x, nodeVar1.y ), nodeVar1.z ) ) - 0.5 ) + object.nodeUniform3 ) * max( ( dot( ( vec2<f32>( object.nodeUniform4 ) / vec2<f32>( textureDimensions( nodeUniform1, 0 ) ) ), ( vec2<f32>( 1.0, 1.0 ) / fwidth( nodeVar0 ) ) ) * 0.5 ), 1.0 ) ) + 0.5 ), 0.0, 1.0 ) * nodeVarying0.w ) * object.nodeUniform5 ) );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform6 );\n\n\tif ( ( DiffuseColor.w <= object.nodeUniform7 ) ) {\n\n\t\tdiscard;\n\t\t\n\n\t}\n\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar2 = ( irradiance + render.nodeUniform8 );\n\tirradiance = nodeVar2;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tindirectDiffuse = vec4<f32>( 0.0, 0.0, 0.0, 0.0 ).xyz;\n\tnodeVar3 = ( vec4<f32>( indirectDiffuse, 1.0 ) + vec4<f32>( 1.0, 1.0, 1.0, 0.0 ) );\n\tindirectDiffuse = nodeVar3.xyz;\n\tambientOcclusion = 1.0;\n\tnodeVar4 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar4;\n\tnodeVar5 = ( indirectDiffuse * DiffuseColor.xyz );\n\tindirectDiffuse = nodeVar5;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar6 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar6;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar7 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar7;\n\tnodeVar8 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar8;\n\tnodeVar9 = max( vec4<f32>( outgoingLight, DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar9;\n\n\t// result\n\n\toutput.color = nodeVar9;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3674Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3674 : NodeBuffer_3674Struct;\n\nstruct NodeBuffer_3655Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3655 : NodeBuffer_3655Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3674.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = vec4<f32>( ( ( ( ( object.nodeUniform9 + vec2<f32>( ( mat4x4<f32>( NodeBuffer_3655.value[ nodeVar10 ], NodeBuffer_3655.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3655.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3655.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.x, ( - ( mat4x4<f32>( NodeBuffer_3655.value[ nodeVar10 ], NodeBuffer_3655.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3655.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3655.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.y ) ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform12, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar11;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3948Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3948 : NodeBuffer_3948Struct;\n\nstruct NodeBuffer_3929Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3929 : NodeBuffer_3929Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3948.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = vec4<f32>( ( ( ( ( object.nodeUniform9 + vec2<f32>( ( mat4x4<f32>( NodeBuffer_3929.value[ nodeVar10 ], NodeBuffer_3929.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3929.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3929.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.x, ( - ( mat4x4<f32>( NodeBuffer_3929.value[ nodeVar10 ], NodeBuffer_3929.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3929.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3929.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.y ) ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform12, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar11;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3811Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3811 : NodeBuffer_3811Struct;\n\nstruct NodeBuffer_3792Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3792 : NodeBuffer_3792Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3811.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = vec4<f32>( ( ( ( ( object.nodeUniform9 + vec2<f32>( ( mat4x4<f32>( NodeBuffer_3792.value[ nodeVar10 ], NodeBuffer_3792.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3792.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3792.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.x, ( - ( mat4x4<f32>( NodeBuffer_3792.value[ nodeVar10 ], NodeBuffer_3792.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3792.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3792.value[ ( nodeVar10 + 3u ) ] ) * vec4<f32>( ( msdfRect.xy + ( position.xy * msdfRect.zw ) ), 0.0, 1.0 ) ).xyz.y ) ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform12, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar11;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform22 : vec3<f32>,\n\tnodeUniform25 : vec3<f32>,\n\tnodeUniform26 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform21 : vec3<f32>,\n\tnodeUniform23 : vec3<f32>,\n\tnodeUniform24 : vec3<f32>,\n\tnodeUniform13 : mat4x4<f32>,\n\tnodeUniform14 : f32,\n\tnodeUniform15 : f32,\n\tnodeUniform16 : vec2<f32>,\n\tnodeUniform18 : f32\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionWorld : vec3<f32>,\n\t@location( 2 ) v_positionViewDirection : vec3<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> normalLocal : vec3<f32>;\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar158 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) normal : vec3<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tnormalLocal = normal;\n\tvaryings.v_normalViewGeometry = normalize( ( render.cameraViewMatrix * vec4<f32>( ( object.nodeUniform5 * normalLocal ), 0.0 ) ).xyz );\n\tpositionLocal = position;\n\tvaryings.v_positionWorld = ( object.nodeUniform12 * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tvaryings.v_positionViewDirection = ( - v_positionView );\n\tVERTEX_nodeVar158 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar158;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform17_sampler : sampler_comparison;\n@binding( 2 ) @group( 1 ) var nodeUniform17 : texture_depth_2d;\n@binding( 3 ) @group( 1 ) var nodeUniform19_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform19 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform22 : vec3<f32>,\n\tnodeUniform25 : vec3<f32>,\n\tnodeUniform26 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform21 : vec3<f32>,\n\tnodeUniform23 : vec3<f32>,\n\tnodeUniform24 : vec3<f32>,\n\tnodeUniform13 : mat4x4<f32>,\n\tnodeUniform14 : f32,\n\tnodeUniform15 : f32,\n\tnodeUniform16 : vec2<f32>,\n\tnodeUniform18 : f32\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Metalness : f32;\nvar<private> Roughness : f32;\nvar<private> normalViewGeometry : vec3<f32>;\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> SpecularColor : vec3<f32>;\nvar<private> SpecularColorBlended : vec3<f32>;\nvar<private> SpecularF90 : f32;\nvar<private> DiffuseContribution : vec3<f32>;\nvar<private> EmissiveColor : vec3<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> NORMAL_normalView : vec3<f32>;\nvar<private> normalView : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> nodeVar6 : f32;\nvar<private> shadowPositionWorld : vec3<f32>;\nvar<private> normalWorld : vec3<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> nodeVar9 : vec3<f32>;\nvar<private> nodeVar10 : f32;\nvar<private> nodeVar11 : vec2<f32>;\nvar<private> nodeVar12 : vec4<f32>;\nvar<private> nodeVar13 : vec4<f32>;\nvar<private> nodeVar14 : vec4<f32>;\nvar<private> nodeVar15 : vec4<f32>;\nvar<private> nodeVar16 : f32;\nvar<private> nodeVar17 : vec3<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar20 : vec3<f32>;\nvar<private> nodeVar21 : vec3<f32>;\nvar<private> nodeVar22 : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> positionViewDirection : vec3<f32>;\nvar<private> nodeVar23 : vec3<f32>;\nvar<private> nodeVar24 : f32;\nvar<private> nodeVar25 : f32;\nvar<private> nodeVar26 : f32;\nvar<private> nodeVar27 : vec4<f32>;\nvar<private> nodeVar28 : vec4<f32>;\nvar<private> nodeVar29 : vec3<f32>;\nvar<private> nodeVar30 : f32;\nvar<private> nodeVar31 : f32;\nvar<private> nodeVar32 : vec3<f32>;\nvar<private> nodeVar33 : vec3<f32>;\nvar<private> nodeVar34 : vec3<f32>;\nvar<private> nodeVar35 : vec3<f32>;\nvar<private> nodeVar36 : vec4<f32>;\nvar<private> nodeVar37 : vec4<f32>;\nvar<private> nodeVar38 : vec3<f32>;\nvar<private> nodeVar39 : vec3<f32>;\nvar<private> nodeVar40 : f32;\nvar<private> nodeVar41 : vec3<f32>;\nvar<private> nodeVar42 : vec3<f32>;\nvar<private> nodeVar43 : vec3<f32>;\nvar<private> nodeVar44 : vec3<f32>;\nvar<private> nodeVar45 : vec3<f32>;\nvar<private> nodeVar46 : vec3<f32>;\nvar<private> nodeVar47 : f32;\nvar<private> nodeVar48 : f32;\nvar<private> nodeVar49 : f32;\nvar<private> nodeVar50 : vec4<f32>;\nvar<private> nodeVar51 : vec4<f32>;\nvar<private> nodeVar52 : vec3<f32>;\nvar<private> nodeVar53 : f32;\nvar<private> nodeVar54 : f32;\nvar<private> nodeVar55 : vec3<f32>;\nvar<private> nodeVar56 : vec3<f32>;\nvar<private> nodeVar57 : vec3<f32>;\nvar<private> nodeVar58 : vec3<f32>;\nvar<private> nodeVar59 : vec4<f32>;\nvar<private> nodeVar60 : vec4<f32>;\nvar<private> nodeVar61 : vec3<f32>;\nvar<private> nodeVar62 : vec3<f32>;\nvar<private> nodeVar63 : f32;\nvar<private> nodeVar64 : vec3<f32>;\nvar<private> nodeVar65 : vec3<f32>;\nvar<private> nodeVar66 : vec3<f32>;\nvar<private> nodeVar67 : vec3<f32>;\nvar<private> nodeVar68 : vec3<f32>;\nvar<private> nodeVar69 : vec3<f32>;\nvar<private> nodeVar70 : f32;\nvar<private> nodeVar71 : f32;\nvar<private> nodeVar72 : f32;\nvar<private> nodeVar73 : vec4<f32>;\nvar<private> nodeVar74 : vec4<f32>;\nvar<private> nodeVar75 : vec3<f32>;\nvar<private> nodeVar76 : f32;\nvar<private> nodeVar77 : f32;\nvar<private> nodeVar78 : vec3<f32>;\nvar<private> nodeVar79 : vec3<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar81 : vec3<f32>;\nvar<private> nodeVar82 : vec3<f32>;\nvar<private> nodeVar83 : vec3<f32>;\nvar<private> nodeVar84 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : vec4<f32>;\nvar<private> nodeVar88 : vec3<f32>;\nvar<private> nodeVar89 : f32;\nvar<private> nodeVar90 : vec3<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : vec3<f32>;\nvar<private> nodeVar93 : vec3<f32>;\nvar<private> nodeVar94 : vec3<f32>;\nvar<private> nodeVar95 : vec3<f32>;\nvar<private> nodeVar96 : vec3<f32>;\nvar<private> nodeVar97 : f32;\nvar<private> nodeVar98 : f32;\nvar<private> nodeVar99 : f32;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> nodeVar101 : vec3<f32>;\nvar<private> nodeVar102 : vec3<f32>;\nvar<private> nodeVar103 : vec3<f32>;\nvar<private> nodeVar104 : vec3<f32>;\nvar<private> nodeVar105 : vec3<f32>;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : vec4<f32>;\nvar<private> nodeVar108 : vec3<f32>;\nvar<private> nodeVar109 : f32;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> nodeVar112 : vec3<f32>;\nvar<private> nodeVar113 : vec3<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> nodeVar115 : vec3<f32>;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : f32;\nvar<private> nodeVar118 : f32;\nvar<private> nodeVar119 : f32;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> nodeVar123 : vec3<f32>;\nvar<private> nodeVar124 : vec3<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> radiance : vec3<f32>;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : vec3<f32>;\nvar<private> nodeVar132 : vec3<f32>;\nvar<private> nodeVar133 : vec3<f32>;\nvar<private> nodeVar134 : vec3<f32>;\nvar<private> nodeVar135 : vec3<f32>;\nvar<private> nodeVar136 : vec3<f32>;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : f32;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : f32;\nvar<private> nodeVar145 : f32;\nvar<private> nodeVar146 : f32;\nvar<private> nodeVar147 : f32;\nvar<private> nodeVar148 : f32;\nvar<private> nodeVar149 : f32;\nvar<private> nodeVar150 : f32;\nvar<private> nodeVar151 : f32;\nvar<private> nodeVar152 : f32;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar154 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar155 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar156 : vec3<f32>;\nvar<private> nodeVar157 : vec4<f32>;\n\n// codes\nfn V_GGX_SmithCorrelated ( alpha : f32, dotNL : f32, dotNV : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\n\treturn ( 0.5 / max( ( ( dotNL * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNV * dotNV ) ) ) ) ) + ( dotNV * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNL * dotNL ) ) ) ) ) ), 0.000001 ) );\n\n}\n\nfn D_GGX ( alpha : f32, dotNH : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\tvar nodeVar1 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\tnodeVar1 = ( 1.0 - ( ( dotNH * dotNH ) * ( 1.0 - nodeVar0 ) ) );\n\n\treturn ( ( nodeVar0 / ( nodeVar1 * nodeVar1 ) ) * 0.3183098861837907 );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionWorld : vec3<f32>,\n\t@location( 2 ) v_positionViewDirection : vec3<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( object.nodeUniform0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform1 );\n\tDiffuseColor.w = 1.0;\n\tMetalness = object.nodeUniform2;\n\tnormalViewGeometry = normalize( v_normalViewGeometry );\n\tnodeVar0 = max( abs( dpdx( normalViewGeometry ) ), abs( - dpdy( normalViewGeometry ) ) );\n\tRoughness = min( ( max( object.nodeUniform3, 0.0525 ) + max( max( nodeVar0.x, nodeVar0.y ), nodeVar0.z ) ), 1.0 );\n\tSpecularColor = vec3<f32>( 0.04, 0.04, 0.04 );\n\tSpecularColorBlended = mix( vec3<f32>( 0.04, 0.04, 0.04 ), DiffuseColor.xyz, Metalness );\n\tSpecularF90 = 1.0;\n\tDiffuseContribution = ( DiffuseColor.xyz * vec3<f32>( ( 1.0 - object.nodeUniform2 ) ) );\n\tEmissiveColor = ( object.nodeUniform6 * vec3<f32>( object.nodeUniform7 ) );\n\tNORMAL_normalView = normalViewGeometry;\n\tnormalView = NORMAL_normalView;\n\tnodeVar1 = ( render.nodeUniform9 - render.nodeUniform10 );\n\tnodeVar2 = vec4<f32>( nodeVar1, 0.0 );\n\tnodeVar3 = ( render.cameraViewMatrix * nodeVar2 );\n\tnodeVar4 = normalize( nodeVar3.xyz );\n\tnodeVar5 = nodeVar4;\n\tnodeVar6 = dot( normalView, nodeVar5 );\n\tshadowPositionWorld = v_positionWorld;\n\tnormalWorld = normalize( ( vec4<f32>( normalView, 0.0 ) * render.cameraViewMatrix ).xyz );\n\tnodeVar7 = ( render.nodeUniform13 * vec4<f32>( ( shadowPositionWorld + ( normalWorld * vec3<f32>( render.nodeUniform14 ) ) ), 1.0 ) );\n\tnodeVar8 = ( nodeVar7.xyz / vec3<f32>( nodeVar7.w ) );\n\tnodeVar9 = vec3<f32>( nodeVar8.x, ( 1.0 - nodeVar8.y ), ( nodeVar8.z + render.nodeUniform15 ) );\n\n\tif ( ( ( ( ( ( nodeVar9.x >= 0.0 ) && ( nodeVar9.x <= 1.0 ) ) && ( nodeVar9.y >= 0.0 ) ) && ( nodeVar9.y <= 1.0 ) ) && ( nodeVar9.z <= 1.0 ) ) ) {\n\n\t\tlet nodeConst0 = fract( ( ( nodeVar9.xy * render.nodeUniform16 ) + vec2<f32>( 0.5 ) ) );\n\t\tnodeVar11 = ( nodeVar9.xy - ( ( nodeConst0 - vec2<f32>( 0.5 ) ) * ( vec2<f32>( 1.0, 1.0 ) / render.nodeUniform16 ) ) );\n\t\tnodeVar9.x = nodeVar11[ 0 ];\n\t\tnodeVar9.y = nodeVar11[ 1 ];\n\t\tnodeVar12 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( -1, 1 ) );\n\t\tlet nodeConst1 = nodeVar12;\n\t\tnodeVar13 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( 1, 1 ) );\n\t\tlet nodeConst2 = nodeVar13;\n\t\tnodeVar14 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( -1, -1 ) );\n\t\tlet nodeConst3 = nodeVar14;\n\t\tnodeVar15 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( 1, -1 ) );\n\t\tlet nodeConst4 = nodeVar15;\n\t\tnodeVar10 = ( ( ( ( ( ( ( mix( nodeConst1.x, nodeConst2.y, nodeConst0.x ) + nodeConst1.y ) + nodeConst2.x ) * nodeConst0.y ) + ( ( mix( nodeConst1.w, nodeConst2.z, nodeConst0.x ) + nodeConst1.z ) + nodeConst2.w ) ) + ( ( mix( nodeConst3.x, nodeConst4.y, nodeConst0.x ) + nodeConst3.y ) + nodeConst4.x ) ) + ( ( ( mix( nodeConst3.w, nodeConst4.z, nodeConst0.x ) + nodeConst3.z ) + nodeConst4.w ) * ( 1.0 - nodeConst0.y ) ) ) * 0.1111111111111111 );\n\n\t} else {\n\n\t\tnodeVar10 = 1.0;\n\n\t}\n\n\tnodeVar16 = mix( 1.0, nodeVar10, render.nodeUniform18 );\n\tnodeVar17 = ( render.nodeUniform11 * vec3<f32>( nodeVar16 ) );\n\tnodeVar18 = ( vec3<f32>( clamp( nodeVar6, 0.0, 1.0 ) ) * nodeVar17 );\n\tnodeVar19 = nodeVar18;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar20 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar21 = ( nodeVar19 * nodeVar20 );\n\tnodeVar22 = ( directDiffuse + nodeVar21 );\n\tdirectDiffuse = nodeVar22;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tpositionViewDirection = normalize( v_positionViewDirection );\n\tnodeVar23 = normalize( ( nodeVar5 + positionViewDirection ) );\n\tnodeVar24 = clamp( dot( positionViewDirection, nodeVar23 ), 0.0, 1.0 );\n\tnodeVar25 = exp2( ( ( ( nodeVar24 * -5.55473 ) - 6.98316 ) * nodeVar24 ) );\n\tnodeVar26 = ( Roughness * Roughness );\n\tnodeVar27 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar28 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ) ) );\n\tnodeVar29 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar30 = ( 1.0 - ( nodeVar27.xy.x + nodeVar27.xy.y ) );\n\tnodeVar31 = ( 1.0 - ( nodeVar28.xy.x + nodeVar28.xy.y ) );\n\tnodeVar32 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar25 ) ) ) + vec3<f32>( ( 1.0 * nodeVar25 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar26, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar26, clamp( dot( normalView, nodeVar23 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar27.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar27.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar28.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar28.xy.y ) ) ) ) * nodeVar29 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar30 * nodeVar31 ) ) * nodeVar29 ) * nodeVar29 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar30 * nodeVar31 ) ) ) );\n\tnodeVar33 = ( nodeVar19 * nodeVar32 );\n\tnodeVar34 = ( directSpecular + nodeVar33 );\n\tdirectSpecular = nodeVar34;\n\tnodeVar35 = ( render.nodeUniform20 - render.nodeUniform21 );\n\tnodeVar36 = vec4<f32>( nodeVar35, 0.0 );\n\tnodeVar37 = ( render.cameraViewMatrix * nodeVar36 );\n\tnodeVar38 = normalize( nodeVar37.xyz );\n\tnodeVar39 = nodeVar38;\n\tnodeVar40 = dot( normalView, nodeVar39 );\n\tnodeVar41 = ( vec3<f32>( clamp( nodeVar40, 0.0, 1.0 ) ) * render.nodeUniform22 );\n\tnodeVar42 = nodeVar41;\n\tnodeVar43 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar44 = ( nodeVar42 * nodeVar43 );\n\tnodeVar45 = ( directDiffuse + nodeVar44 );\n\tdirectDiffuse = nodeVar45;\n\tnodeVar46 = normalize( ( nodeVar39 + positionViewDirection ) );\n\tnodeVar47 = clamp( dot( positionViewDirection, nodeVar46 ), 0.0, 1.0 );\n\tnodeVar48 = exp2( ( ( ( nodeVar47 * -5.55473 ) - 6.98316 ) * nodeVar47 ) );\n\tnodeVar49 = ( Roughness * Roughness );\n\tnodeVar50 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar51 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar39 ), 0.0, 1.0 ) ) );\n\tnodeVar52 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar53 = ( 1.0 - ( nodeVar50.xy.x + nodeVar50.xy.y ) );\n\tnodeVar54 = ( 1.0 - ( nodeVar51.xy.x + nodeVar51.xy.y ) );\n\tnodeVar55 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar48 ) ) ) + vec3<f32>( ( 1.0 * nodeVar48 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar49, clamp( dot( normalView, nodeVar39 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar49, clamp( dot( normalView, nodeVar46 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar50.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar50.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar51.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar51.xy.y ) ) ) ) * nodeVar52 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar53 * nodeVar54 ) ) * nodeVar52 ) * nodeVar52 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar53 * nodeVar54 ) ) ) );\n\tnodeVar56 = ( nodeVar42 * nodeVar55 );\n\tnodeVar57 = ( directSpecular + nodeVar56 );\n\tdirectSpecular = nodeVar57;\n\tnodeVar58 = ( render.nodeUniform23 - render.nodeUniform24 );\n\tnodeVar59 = vec4<f32>( nodeVar58, 0.0 );\n\tnodeVar60 = ( render.cameraViewMatrix * nodeVar59 );\n\tnodeVar61 = normalize( nodeVar60.xyz );\n\tnodeVar62 = nodeVar61;\n\tnodeVar63 = dot( normalView, nodeVar62 );\n\tnodeVar64 = ( vec3<f32>( clamp( nodeVar63, 0.0, 1.0 ) ) * render.nodeUniform25 );\n\tnodeVar65 = nodeVar64;\n\tnodeVar66 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar67 = ( nodeVar65 * nodeVar66 );\n\tnodeVar68 = ( directDiffuse + nodeVar67 );\n\tdirectDiffuse = nodeVar68;\n\tnodeVar69 = normalize( ( nodeVar62 + positionViewDirection ) );\n\tnodeVar70 = clamp( dot( positionViewDirection, nodeVar69 ), 0.0, 1.0 );\n\tnodeVar71 = exp2( ( ( ( nodeVar70 * -5.55473 ) - 6.98316 ) * nodeVar70 ) );\n\tnodeVar72 = ( Roughness * Roughness );\n\tnodeVar73 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar74 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar62 ), 0.0, 1.0 ) ) );\n\tnodeVar75 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar76 = ( 1.0 - ( nodeVar73.xy.x + nodeVar73.xy.y ) );\n\tnodeVar77 = ( 1.0 - ( nodeVar74.xy.x + nodeVar74.xy.y ) );\n\tnodeVar78 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar71 ) ) ) + vec3<f32>( ( 1.0 * nodeVar71 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar72, clamp( dot( normalView, nodeVar62 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar72, clamp( dot( normalView, nodeVar69 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar73.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar73.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar74.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar74.xy.y ) ) ) ) * nodeVar75 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar76 * nodeVar77 ) ) * nodeVar75 ) * nodeVar75 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar76 * nodeVar77 ) ) ) );\n\tnodeVar79 = ( nodeVar65 * nodeVar78 );\n\tnodeVar80 = ( directSpecular + nodeVar79 );\n\tdirectSpecular = nodeVar80;\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar81 = ( irradiance + render.nodeUniform26 );\n\tirradiance = nodeVar81;\n\tnodeVar82 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar83 = ( irradiance * nodeVar82 );\n\tnodeVar84 = nodeVar83;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar85 = ( indirectDiffuse + nodeVar84 );\n\tindirectDiffuse = nodeVar85;\n\tsingleScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tsingleScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar86 = dot( normalView, positionViewDirection );\n\tnodeVar87 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar86, 0.0, 1.0 ) ) );\n\tnodeVar88 = ( SpecularColor * vec3<f32>( nodeVar87.xy.x ) );\n\tnodeVar89 = ( SpecularF90 * nodeVar87.xy.y );\n\tnodeVar90 = ( nodeVar88 + vec3<f32>( nodeVar89 ) );\n\tnodeVar91 = ( singleScatteringDielectric + nodeVar90 );\n\tsingleScatteringDielectric = nodeVar91;\n\tnodeVar92 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar93 = nodeVar92;\n\tnodeVar94 = ( nodeVar93 * vec3<f32>( 0.047619 ) );\n\tnodeVar95 = ( SpecularColor + nodeVar94 );\n\tnodeVar96 = ( nodeVar90 * nodeVar95 );\n\tnodeVar97 = ( nodeVar87.xy.x + nodeVar87.xy.y );\n\tnodeVar98 = ( 1.0 - nodeVar97 );\n\tnodeVar99 = nodeVar98;\n\tnodeVar100 = ( vec3<f32>( nodeVar99 ) * nodeVar95 );\n\tnodeVar101 = ( vec3<f32>( 1.0 ) - nodeVar100 );\n\tnodeVar102 = nodeVar101;\n\tnodeVar103 = ( nodeVar96 / nodeVar102 );\n\tnodeVar104 = ( nodeVar103 * vec3<f32>( nodeVar99 ) );\n\tnodeVar105 = ( multiScatteringDielectric + nodeVar104 );\n\tmultiScatteringDielectric = nodeVar105;\n\tnodeVar106 = dot( normalView, positionViewDirection );\n\tnodeVar107 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar106, 0.0, 1.0 ) ) );\n\tnodeVar108 = ( DiffuseColor.xyz * vec3<f32>( nodeVar107.xy.x ) );\n\tnodeVar109 = ( SpecularF90 * nodeVar107.xy.y );\n\tnodeVar110 = ( nodeVar108 + vec3<f32>( nodeVar109 ) );\n\tnodeVar111 = ( singleScatteringMetallic + nodeVar110 );\n\tsingleScatteringMetallic = nodeVar111;\n\tnodeVar112 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar113 = nodeVar112;\n\tnodeVar114 = ( nodeVar113 * vec3<f32>( 0.047619 ) );\n\tnodeVar115 = ( DiffuseColor.xyz + nodeVar114 );\n\tnodeVar116 = ( nodeVar110 * nodeVar115 );\n\tnodeVar117 = ( nodeVar107.xy.x + nodeVar107.xy.y );\n\tnodeVar118 = ( 1.0 - nodeVar117 );\n\tnodeVar119 = nodeVar118;\n\tnodeVar120 = ( vec3<f32>( nodeVar119 ) * nodeVar115 );\n\tnodeVar121 = ( vec3<f32>( 1.0 ) - nodeVar120 );\n\tnodeVar122 = nodeVar121;\n\tnodeVar123 = ( nodeVar116 / nodeVar122 );\n\tnodeVar124 = ( nodeVar123 * vec3<f32>( nodeVar119 ) );\n\tnodeVar125 = ( multiScatteringMetallic + nodeVar124 );\n\tmultiScatteringMetallic = nodeVar125;\n\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar126 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar127 = ( radiance * nodeVar126 );\n\tnodeVar128 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar129 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar130 = ( nodeVar128 * nodeVar129 );\n\tnodeVar131 = ( nodeVar127 + nodeVar130 );\n\tnodeVar132 = nodeVar131;\n\tnodeVar133 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar134 = ( vec3<f32>( 1.0 ) - nodeVar133 );\n\tnodeVar135 = nodeVar134;\n\tnodeVar136 = ( DiffuseContribution * nodeVar135 );\n\tnodeVar137 = ( nodeVar136 * nodeVar129 );\n\tnodeVar138 = nodeVar137;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar139 = ( indirectSpecular + nodeVar132 );\n\tindirectSpecular = nodeVar139;\n\tnodeVar140 = ( indirectDiffuse + nodeVar138 );\n\tindirectDiffuse = nodeVar140;\n\tambientOcclusion = 1.0;\n\tnodeVar141 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar141;\n\tnodeVar142 = dot( normalView, positionViewDirection );\n\tnodeVar143 = ( clamp( nodeVar142, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar144 = ( Roughness * -16.0 );\n\tnodeVar145 = ( 1.0 - nodeVar144 );\n\tnodeVar146 = nodeVar145;\n\tnodeVar147 = ( - nodeVar146 );\n\tnodeVar148 = exp2( nodeVar147 );\n\tnodeVar149 = pow( nodeVar143, nodeVar148 );\n\tnodeVar150 = ( 1.0 - nodeVar149 );\n\tnodeVar151 = nodeVar150;\n\tnodeVar152 = ( ambientOcclusion - nodeVar151 );\n\tnodeVar153 = ( indirectSpecular * vec3<f32>( clamp( nodeVar152, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar153;\n\tnodeVar154 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar154;\n\tnodeVar155 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar155;\n\tnodeVar156 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar156;\n\tnodeVar157 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar157;\n\n\t// result\n\n\toutput.color = nodeVar157;\n\n\treturn output;\n\n}\n"],
|
|
761
|
+
"modules": ["// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform1 : vec2<f32>,\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar2 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform4 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar2 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar2;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0_sampler : sampler;\n@binding( 1 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : vec2<f32>,\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec4<f32>;\n\n// codes\nfn fn1 ( color : vec4<f32> ) -> vec4<f32> {\n\n\tvar nodeVar0 : vec4<f32>;\n\n\n\tif ( ( color.w == 0.0 ) ) {\n\n\t\tnodeVar0 = vec4<f32>( 0.0, 0.0, 0.0, 0.0 );\n\n\t} else {\n\n\t\tnodeVar0 = vec4<f32>( ( color.xyz / vec3<f32>( color.w ) ), color.w );\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn sRGBTransferOETF ( color : vec3<f32> ) -> vec3<f32> {\n\n\t\n\n\n\treturn mix( ( ( pow( color, vec3<f32>( 0.41666 ) ) * vec3<f32>( 1.055 ) ) - vec3<f32>( 0.055 ) ), ( color * vec3<f32>( 12.92 ) ), vec3<f32>( ( color <= vec3<f32>( 0.0031308 ) ) ) );\n\n}\n\nfn fn0 ( color : vec4<f32> ) -> vec4<f32> {\n\n\t\n\n\n\treturn vec4<f32>( ( color.xyz * vec3<f32>( color.w ) ), color.w );\n\n}\n\n\n\n@fragment\nfn main( @builtin( position ) fragCoord : vec4<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( fragCoord.xy / object.nodeUniform1 ) );\n\tnodeVar1 = fn1( vec4<f32>( nodeVar0.xyz, clamp( nodeVar0.w, 0.0, 1.0 ) ) );\n\n\t// result\n\n\toutput.color = fn0( vec4<f32>( sRGBTransferOETF( nodeVar1.xyz ), nodeVar1.w ) );\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar1 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform3 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar1 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar1;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> nodeVar0 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( 0.0, 0.0, 0.0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform0 );\n\tnodeVar0 = max( vec4<f32>( DiffuseColor.xyz, DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar0;\n\n\t// result\n\n\toutput.color = nodeVar0;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform16 : vec3<f32>,\n\tnodeUniform19 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform14 : vec3<f32>,\n\tnodeUniform15 : vec3<f32>,\n\tnodeUniform17 : vec3<f32>,\n\tnodeUniform18 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionViewDirection : vec3<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> normalLocal : vec3<f32>;\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar147 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) normal : vec3<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tnormalLocal = normal;\n\tvaryings.v_normalViewGeometry = normalize( ( render.cameraViewMatrix * vec4<f32>( ( object.nodeUniform5 * normalLocal ), 0.0 ) ).xyz );\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tvaryings.v_positionViewDirection = ( - v_positionView );\n\tVERTEX_nodeVar147 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar147;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform13_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform13 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform16 : vec3<f32>,\n\tnodeUniform19 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform14 : vec3<f32>,\n\tnodeUniform15 : vec3<f32>,\n\tnodeUniform17 : vec3<f32>,\n\tnodeUniform18 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Metalness : f32;\nvar<private> Roughness : f32;\nvar<private> normalViewGeometry : vec3<f32>;\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> SpecularColor : vec3<f32>;\nvar<private> SpecularColorBlended : vec3<f32>;\nvar<private> SpecularF90 : f32;\nvar<private> DiffuseContribution : vec3<f32>;\nvar<private> EmissiveColor : vec3<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> NORMAL_normalView : vec3<f32>;\nvar<private> normalView : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> nodeVar6 : f32;\nvar<private> nodeVar7 : vec3<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar9 : vec3<f32>;\nvar<private> nodeVar10 : vec3<f32>;\nvar<private> nodeVar11 : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> positionViewDirection : vec3<f32>;\nvar<private> nodeVar12 : vec3<f32>;\nvar<private> nodeVar13 : f32;\nvar<private> nodeVar14 : f32;\nvar<private> nodeVar15 : f32;\nvar<private> nodeVar16 : vec4<f32>;\nvar<private> nodeVar17 : vec4<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : f32;\nvar<private> nodeVar20 : f32;\nvar<private> nodeVar21 : vec3<f32>;\nvar<private> nodeVar22 : vec3<f32>;\nvar<private> nodeVar23 : vec3<f32>;\nvar<private> nodeVar24 : vec3<f32>;\nvar<private> nodeVar25 : vec4<f32>;\nvar<private> nodeVar26 : vec4<f32>;\nvar<private> nodeVar27 : vec3<f32>;\nvar<private> nodeVar28 : vec3<f32>;\nvar<private> nodeVar29 : f32;\nvar<private> nodeVar30 : vec3<f32>;\nvar<private> nodeVar31 : vec3<f32>;\nvar<private> nodeVar32 : vec3<f32>;\nvar<private> nodeVar33 : vec3<f32>;\nvar<private> nodeVar34 : vec3<f32>;\nvar<private> nodeVar35 : vec3<f32>;\nvar<private> nodeVar36 : f32;\nvar<private> nodeVar37 : f32;\nvar<private> nodeVar38 : f32;\nvar<private> nodeVar39 : vec4<f32>;\nvar<private> nodeVar40 : vec4<f32>;\nvar<private> nodeVar41 : vec3<f32>;\nvar<private> nodeVar42 : f32;\nvar<private> nodeVar43 : f32;\nvar<private> nodeVar44 : vec3<f32>;\nvar<private> nodeVar45 : vec3<f32>;\nvar<private> nodeVar46 : vec3<f32>;\nvar<private> nodeVar47 : vec3<f32>;\nvar<private> nodeVar48 : vec4<f32>;\nvar<private> nodeVar49 : vec4<f32>;\nvar<private> nodeVar50 : vec3<f32>;\nvar<private> nodeVar51 : vec3<f32>;\nvar<private> nodeVar52 : f32;\nvar<private> nodeVar53 : vec3<f32>;\nvar<private> nodeVar54 : vec3<f32>;\nvar<private> nodeVar55 : vec3<f32>;\nvar<private> nodeVar56 : vec3<f32>;\nvar<private> nodeVar57 : vec3<f32>;\nvar<private> nodeVar58 : vec3<f32>;\nvar<private> nodeVar59 : f32;\nvar<private> nodeVar60 : f32;\nvar<private> nodeVar61 : f32;\nvar<private> nodeVar62 : vec4<f32>;\nvar<private> nodeVar63 : vec4<f32>;\nvar<private> nodeVar64 : vec3<f32>;\nvar<private> nodeVar65 : f32;\nvar<private> nodeVar66 : f32;\nvar<private> nodeVar67 : vec3<f32>;\nvar<private> nodeVar68 : vec3<f32>;\nvar<private> nodeVar69 : vec3<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar70 : vec3<f32>;\nvar<private> nodeVar71 : vec3<f32>;\nvar<private> nodeVar72 : vec3<f32>;\nvar<private> nodeVar73 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar74 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar75 : f32;\nvar<private> nodeVar76 : vec4<f32>;\nvar<private> nodeVar77 : vec3<f32>;\nvar<private> nodeVar78 : f32;\nvar<private> nodeVar79 : vec3<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> nodeVar81 : vec3<f32>;\nvar<private> nodeVar82 : vec3<f32>;\nvar<private> nodeVar83 : vec3<f32>;\nvar<private> nodeVar84 : vec3<f32>;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : f32;\nvar<private> nodeVar88 : f32;\nvar<private> nodeVar89 : vec3<f32>;\nvar<private> nodeVar90 : vec3<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : vec3<f32>;\nvar<private> nodeVar93 : vec3<f32>;\nvar<private> nodeVar94 : vec3<f32>;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : vec4<f32>;\nvar<private> nodeVar97 : vec3<f32>;\nvar<private> nodeVar98 : f32;\nvar<private> nodeVar99 : vec3<f32>;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> nodeVar101 : vec3<f32>;\nvar<private> nodeVar102 : vec3<f32>;\nvar<private> nodeVar103 : vec3<f32>;\nvar<private> nodeVar104 : vec3<f32>;\nvar<private> nodeVar105 : vec3<f32>;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : f32;\nvar<private> nodeVar108 : f32;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> nodeVar112 : vec3<f32>;\nvar<private> nodeVar113 : vec3<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> radiance : vec3<f32>;\nvar<private> nodeVar115 : vec3<f32>;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar118 : vec3<f32>;\nvar<private> nodeVar119 : vec3<f32>;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> nodeVar123 : vec3<f32>;\nvar<private> nodeVar124 : vec3<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : f32;\nvar<private> nodeVar132 : f32;\nvar<private> nodeVar133 : f32;\nvar<private> nodeVar134 : f32;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : f32;\nvar<private> nodeVar137 : f32;\nvar<private> nodeVar138 : f32;\nvar<private> nodeVar139 : f32;\nvar<private> nodeVar140 : f32;\nvar<private> nodeVar141 : f32;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar143 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar144 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar145 : vec3<f32>;\nvar<private> nodeVar146 : vec4<f32>;\n\n// codes\nfn V_GGX_SmithCorrelated ( alpha : f32, dotNL : f32, dotNV : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\n\treturn ( 0.5 / max( ( ( dotNL * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNV * dotNV ) ) ) ) ) + ( dotNV * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNL * dotNL ) ) ) ) ) ), 0.000001 ) );\n\n}\n\nfn D_GGX ( alpha : f32, dotNH : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\tvar nodeVar1 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\tnodeVar1 = ( 1.0 - ( ( dotNH * dotNH ) * ( 1.0 - nodeVar0 ) ) );\n\n\treturn ( ( nodeVar0 / ( nodeVar1 * nodeVar1 ) ) * 0.3183098861837907 );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionViewDirection : vec3<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( object.nodeUniform0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform1 );\n\tDiffuseColor.w = 1.0;\n\tMetalness = object.nodeUniform2;\n\tnormalViewGeometry = normalize( v_normalViewGeometry );\n\tnodeVar0 = max( abs( dpdx( normalViewGeometry ) ), abs( - dpdy( normalViewGeometry ) ) );\n\tRoughness = min( ( max( object.nodeUniform3, 0.0525 ) + max( max( nodeVar0.x, nodeVar0.y ), nodeVar0.z ) ), 1.0 );\n\tSpecularColor = vec3<f32>( 0.04, 0.04, 0.04 );\n\tSpecularColorBlended = mix( vec3<f32>( 0.04, 0.04, 0.04 ), DiffuseColor.xyz, Metalness );\n\tSpecularF90 = 1.0;\n\tDiffuseContribution = ( DiffuseColor.xyz * vec3<f32>( ( 1.0 - object.nodeUniform2 ) ) );\n\tEmissiveColor = ( object.nodeUniform6 * vec3<f32>( object.nodeUniform7 ) );\n\tNORMAL_normalView = normalViewGeometry;\n\tnormalView = NORMAL_normalView;\n\tnodeVar1 = ( render.nodeUniform9 - render.nodeUniform10 );\n\tnodeVar2 = vec4<f32>( nodeVar1, 0.0 );\n\tnodeVar3 = ( render.cameraViewMatrix * nodeVar2 );\n\tnodeVar4 = normalize( nodeVar3.xyz );\n\tnodeVar5 = nodeVar4;\n\tnodeVar6 = dot( normalView, nodeVar5 );\n\tnodeVar7 = ( vec3<f32>( clamp( nodeVar6, 0.0, 1.0 ) ) * render.nodeUniform11 );\n\tnodeVar8 = nodeVar7;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar9 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar10 = ( nodeVar8 * nodeVar9 );\n\tnodeVar11 = ( directDiffuse + nodeVar10 );\n\tdirectDiffuse = nodeVar11;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tpositionViewDirection = normalize( v_positionViewDirection );\n\tnodeVar12 = normalize( ( nodeVar5 + positionViewDirection ) );\n\tnodeVar13 = clamp( dot( positionViewDirection, nodeVar12 ), 0.0, 1.0 );\n\tnodeVar14 = exp2( ( ( ( nodeVar13 * -5.55473 ) - 6.98316 ) * nodeVar13 ) );\n\tnodeVar15 = ( Roughness * Roughness );\n\tnodeVar16 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar17 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ) ) );\n\tnodeVar18 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar19 = ( 1.0 - ( nodeVar16.xy.x + nodeVar16.xy.y ) );\n\tnodeVar20 = ( 1.0 - ( nodeVar17.xy.x + nodeVar17.xy.y ) );\n\tnodeVar21 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar14 ) ) ) + vec3<f32>( ( 1.0 * nodeVar14 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar15, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar15, clamp( dot( normalView, nodeVar12 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar16.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar16.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar17.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar17.xy.y ) ) ) ) * nodeVar18 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar19 * nodeVar20 ) ) * nodeVar18 ) * nodeVar18 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar19 * nodeVar20 ) ) ) );\n\tnodeVar22 = ( nodeVar8 * nodeVar21 );\n\tnodeVar23 = ( directSpecular + nodeVar22 );\n\tdirectSpecular = nodeVar23;\n\tnodeVar24 = ( render.nodeUniform14 - render.nodeUniform15 );\n\tnodeVar25 = vec4<f32>( nodeVar24, 0.0 );\n\tnodeVar26 = ( render.cameraViewMatrix * nodeVar25 );\n\tnodeVar27 = normalize( nodeVar26.xyz );\n\tnodeVar28 = nodeVar27;\n\tnodeVar29 = dot( normalView, nodeVar28 );\n\tnodeVar30 = ( vec3<f32>( clamp( nodeVar29, 0.0, 1.0 ) ) * render.nodeUniform16 );\n\tnodeVar31 = nodeVar30;\n\tnodeVar32 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar33 = ( nodeVar31 * nodeVar32 );\n\tnodeVar34 = ( directDiffuse + nodeVar33 );\n\tdirectDiffuse = nodeVar34;\n\tnodeVar35 = normalize( ( nodeVar28 + positionViewDirection ) );\n\tnodeVar36 = clamp( dot( positionViewDirection, nodeVar35 ), 0.0, 1.0 );\n\tnodeVar37 = exp2( ( ( ( nodeVar36 * -5.55473 ) - 6.98316 ) * nodeVar36 ) );\n\tnodeVar38 = ( Roughness * Roughness );\n\tnodeVar39 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar40 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar28 ), 0.0, 1.0 ) ) );\n\tnodeVar41 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar42 = ( 1.0 - ( nodeVar39.xy.x + nodeVar39.xy.y ) );\n\tnodeVar43 = ( 1.0 - ( nodeVar40.xy.x + nodeVar40.xy.y ) );\n\tnodeVar44 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar37 ) ) ) + vec3<f32>( ( 1.0 * nodeVar37 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar38, clamp( dot( normalView, nodeVar28 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar38, clamp( dot( normalView, nodeVar35 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar39.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar39.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar40.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar40.xy.y ) ) ) ) * nodeVar41 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar42 * nodeVar43 ) ) * nodeVar41 ) * nodeVar41 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar42 * nodeVar43 ) ) ) );\n\tnodeVar45 = ( nodeVar31 * nodeVar44 );\n\tnodeVar46 = ( directSpecular + nodeVar45 );\n\tdirectSpecular = nodeVar46;\n\tnodeVar47 = ( render.nodeUniform17 - render.nodeUniform18 );\n\tnodeVar48 = vec4<f32>( nodeVar47, 0.0 );\n\tnodeVar49 = ( render.cameraViewMatrix * nodeVar48 );\n\tnodeVar50 = normalize( nodeVar49.xyz );\n\tnodeVar51 = nodeVar50;\n\tnodeVar52 = dot( normalView, nodeVar51 );\n\tnodeVar53 = ( vec3<f32>( clamp( nodeVar52, 0.0, 1.0 ) ) * render.nodeUniform19 );\n\tnodeVar54 = nodeVar53;\n\tnodeVar55 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar56 = ( nodeVar54 * nodeVar55 );\n\tnodeVar57 = ( directDiffuse + nodeVar56 );\n\tdirectDiffuse = nodeVar57;\n\tnodeVar58 = normalize( ( nodeVar51 + positionViewDirection ) );\n\tnodeVar59 = clamp( dot( positionViewDirection, nodeVar58 ), 0.0, 1.0 );\n\tnodeVar60 = exp2( ( ( ( nodeVar59 * -5.55473 ) - 6.98316 ) * nodeVar59 ) );\n\tnodeVar61 = ( Roughness * Roughness );\n\tnodeVar62 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar63 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar51 ), 0.0, 1.0 ) ) );\n\tnodeVar64 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar65 = ( 1.0 - ( nodeVar62.xy.x + nodeVar62.xy.y ) );\n\tnodeVar66 = ( 1.0 - ( nodeVar63.xy.x + nodeVar63.xy.y ) );\n\tnodeVar67 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar60 ) ) ) + vec3<f32>( ( 1.0 * nodeVar60 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar61, clamp( dot( normalView, nodeVar51 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar61, clamp( dot( normalView, nodeVar58 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar62.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar62.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar63.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar63.xy.y ) ) ) ) * nodeVar64 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar65 * nodeVar66 ) ) * nodeVar64 ) * nodeVar64 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar65 * nodeVar66 ) ) ) );\n\tnodeVar68 = ( nodeVar54 * nodeVar67 );\n\tnodeVar69 = ( directSpecular + nodeVar68 );\n\tdirectSpecular = nodeVar69;\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar70 = ( irradiance + render.nodeUniform20 );\n\tirradiance = nodeVar70;\n\tnodeVar71 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar72 = ( irradiance * nodeVar71 );\n\tnodeVar73 = nodeVar72;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar74 = ( indirectDiffuse + nodeVar73 );\n\tindirectDiffuse = nodeVar74;\n\tsingleScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tsingleScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar75 = dot( normalView, positionViewDirection );\n\tnodeVar76 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar75, 0.0, 1.0 ) ) );\n\tnodeVar77 = ( SpecularColor * vec3<f32>( nodeVar76.xy.x ) );\n\tnodeVar78 = ( SpecularF90 * nodeVar76.xy.y );\n\tnodeVar79 = ( nodeVar77 + vec3<f32>( nodeVar78 ) );\n\tnodeVar80 = ( singleScatteringDielectric + nodeVar79 );\n\tsingleScatteringDielectric = nodeVar80;\n\tnodeVar81 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar82 = nodeVar81;\n\tnodeVar83 = ( nodeVar82 * vec3<f32>( 0.047619 ) );\n\tnodeVar84 = ( SpecularColor + nodeVar83 );\n\tnodeVar85 = ( nodeVar79 * nodeVar84 );\n\tnodeVar86 = ( nodeVar76.xy.x + nodeVar76.xy.y );\n\tnodeVar87 = ( 1.0 - nodeVar86 );\n\tnodeVar88 = nodeVar87;\n\tnodeVar89 = ( vec3<f32>( nodeVar88 ) * nodeVar84 );\n\tnodeVar90 = ( vec3<f32>( 1.0 ) - nodeVar89 );\n\tnodeVar91 = nodeVar90;\n\tnodeVar92 = ( nodeVar85 / nodeVar91 );\n\tnodeVar93 = ( nodeVar92 * vec3<f32>( nodeVar88 ) );\n\tnodeVar94 = ( multiScatteringDielectric + nodeVar93 );\n\tmultiScatteringDielectric = nodeVar94;\n\tnodeVar95 = dot( normalView, positionViewDirection );\n\tnodeVar96 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar95, 0.0, 1.0 ) ) );\n\tnodeVar97 = ( DiffuseColor.xyz * vec3<f32>( nodeVar96.xy.x ) );\n\tnodeVar98 = ( SpecularF90 * nodeVar96.xy.y );\n\tnodeVar99 = ( nodeVar97 + vec3<f32>( nodeVar98 ) );\n\tnodeVar100 = ( singleScatteringMetallic + nodeVar99 );\n\tsingleScatteringMetallic = nodeVar100;\n\tnodeVar101 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar102 = nodeVar101;\n\tnodeVar103 = ( nodeVar102 * vec3<f32>( 0.047619 ) );\n\tnodeVar104 = ( DiffuseColor.xyz + nodeVar103 );\n\tnodeVar105 = ( nodeVar99 * nodeVar104 );\n\tnodeVar106 = ( nodeVar96.xy.x + nodeVar96.xy.y );\n\tnodeVar107 = ( 1.0 - nodeVar106 );\n\tnodeVar108 = nodeVar107;\n\tnodeVar109 = ( vec3<f32>( nodeVar108 ) * nodeVar104 );\n\tnodeVar110 = ( vec3<f32>( 1.0 ) - nodeVar109 );\n\tnodeVar111 = nodeVar110;\n\tnodeVar112 = ( nodeVar105 / nodeVar111 );\n\tnodeVar113 = ( nodeVar112 * vec3<f32>( nodeVar108 ) );\n\tnodeVar114 = ( multiScatteringMetallic + nodeVar113 );\n\tmultiScatteringMetallic = nodeVar114;\n\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar115 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar116 = ( radiance * nodeVar115 );\n\tnodeVar117 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar118 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar119 = ( nodeVar117 * nodeVar118 );\n\tnodeVar120 = ( nodeVar116 + nodeVar119 );\n\tnodeVar121 = nodeVar120;\n\tnodeVar122 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar123 = ( vec3<f32>( 1.0 ) - nodeVar122 );\n\tnodeVar124 = nodeVar123;\n\tnodeVar125 = ( DiffuseContribution * nodeVar124 );\n\tnodeVar126 = ( nodeVar125 * nodeVar118 );\n\tnodeVar127 = nodeVar126;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar128 = ( indirectSpecular + nodeVar121 );\n\tindirectSpecular = nodeVar128;\n\tnodeVar129 = ( indirectDiffuse + nodeVar127 );\n\tindirectDiffuse = nodeVar129;\n\tambientOcclusion = 1.0;\n\tnodeVar130 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar130;\n\tnodeVar131 = dot( normalView, positionViewDirection );\n\tnodeVar132 = ( clamp( nodeVar131, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar133 = ( Roughness * -16.0 );\n\tnodeVar134 = ( 1.0 - nodeVar133 );\n\tnodeVar135 = nodeVar134;\n\tnodeVar136 = ( - nodeVar135 );\n\tnodeVar137 = exp2( nodeVar136 );\n\tnodeVar138 = pow( nodeVar132, nodeVar137 );\n\tnodeVar139 = ( 1.0 - nodeVar138 );\n\tnodeVar140 = nodeVar139;\n\tnodeVar141 = ( ambientOcclusion - nodeVar140 );\n\tnodeVar142 = ( indirectSpecular * vec3<f32>( clamp( nodeVar141, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar142;\n\tnodeVar143 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar143;\n\tnodeVar144 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar144;\n\tnodeVar145 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar145;\n\tnodeVar146 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar146;\n\n\t// result\n\n\toutput.color = nodeVar146;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3536Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3536 : NodeBuffer_3536Struct;\n\nstruct NodeBuffer_3517Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3517 : NodeBuffer_3517Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : vec2<f32>,\n\tnodeUniform13 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : mat4x4<f32>;\nvar<private> nodeVar12 : vec2<f32>;\nvar<private> nodeVar13 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3536.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_3517.value[ nodeVar10 ], NodeBuffer_3517.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3517.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.y ) ) * nodeVar12 ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform13, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar13;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform1_sampler : sampler;\n@binding( 1 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : vec2<f32>,\n\tnodeUniform13 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tnodeUniform8 : vec3<f32>\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec4<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar2 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar6 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar7 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> nodeVar9 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = vec2<f32>( mix( nodeVarying1.x, nodeVarying1.z, nodeVarying2.x ), mix( nodeVarying1.w, nodeVarying1.y, nodeVarying2.y ) );\n\tnodeVar1 = textureSample( nodeUniform1, nodeUniform1_sampler, ( object.nodeUniform2 * vec3<f32>( nodeVar0, 1.0 ) ).xy );\n\tDiffuseColor = vec4<f32>( nodeVarying0.xyz, ( ( clamp( ( ( ( ( max( min( nodeVar1.x, nodeVar1.y ), min( max( nodeVar1.x, nodeVar1.y ), nodeVar1.z ) ) - 0.5 ) + object.nodeUniform3 ) * max( ( dot( ( vec2<f32>( object.nodeUniform4 ) / vec2<f32>( textureDimensions( nodeUniform1, 0 ) ) ), ( vec2<f32>( 1.0, 1.0 ) / fwidth( nodeVar0 ) ) ) * 0.5 ), 1.0 ) ) + 0.5 ), 0.0, 1.0 ) * nodeVarying0.w ) * object.nodeUniform5 ) );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform6 );\n\n\tif ( ( DiffuseColor.w <= object.nodeUniform7 ) ) {\n\n\t\tdiscard;\n\t\t\n\n\t}\n\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar2 = ( irradiance + render.nodeUniform8 );\n\tirradiance = nodeVar2;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tindirectDiffuse = vec4<f32>( 0.0, 0.0, 0.0, 0.0 ).xyz;\n\tnodeVar3 = ( vec4<f32>( indirectDiffuse, 1.0 ) + vec4<f32>( 1.0, 1.0, 1.0, 0.0 ) );\n\tindirectDiffuse = nodeVar3.xyz;\n\tambientOcclusion = 1.0;\n\tnodeVar4 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar4;\n\tnodeVar5 = ( indirectDiffuse * DiffuseColor.xyz );\n\tindirectDiffuse = nodeVar5;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar6 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar6;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar7 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar7;\n\tnodeVar8 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar8;\n\tnodeVar9 = max( vec4<f32>( outgoingLight, DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar9;\n\n\t// result\n\n\toutput.color = nodeVar9;\n\n\treturn output;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3708Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3708 : NodeBuffer_3708Struct;\n\nstruct NodeBuffer_3689Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3689 : NodeBuffer_3689Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : vec2<f32>,\n\tnodeUniform13 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : mat4x4<f32>;\nvar<private> nodeVar12 : vec2<f32>;\nvar<private> nodeVar13 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3708.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_3689.value[ nodeVar10 ], NodeBuffer_3689.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3689.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3689.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.y ) ) * nodeVar12 ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform13, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar13;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_4050Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_4050 : NodeBuffer_4050Struct;\n\nstruct NodeBuffer_4031Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_4031 : NodeBuffer_4031Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : vec2<f32>,\n\tnodeUniform13 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : mat4x4<f32>;\nvar<private> nodeVar12 : vec2<f32>;\nvar<private> nodeVar13 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_4050.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_4031.value[ nodeVar10 ], NodeBuffer_4031.value[ ( nodeVar10 + 1u ) ], NodeBuffer_4031.value[ ( nodeVar10 + 2u ) ], NodeBuffer_4031.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.y ) ) * nodeVar12 ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform13, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar13;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct NodeBuffer_3879Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_3879 : NodeBuffer_3879Struct;\n\nstruct NodeBuffer_3860Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_3860 : NodeBuffer_3860Struct;\n\nstruct objectStruct {\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : f32,\n\tnodeUniform7 : f32,\n\tnodeUniform9 : vec2<f32>,\n\tnodeUniform11 : vec2<f32>,\n\tnodeUniform12 : vec2<f32>,\n\tnodeUniform13 : f32\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying0 : vec4<f32>,\n\t@location( 1 ) nodeVarying1 : vec4<f32>,\n\t@location( 2 ) nodeVarying2 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> nodeVar10 : u32;\nvar<private> nodeVar11 : mat4x4<f32>;\nvar<private> nodeVar12 : vec2<f32>;\nvar<private> nodeVar13 : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) msdfMember : f32,\n\t@location( 1 ) msdfUvRect : vec4<f32>,\n\t@location( 2 ) uv : vec2<f32>,\n\t@location( 3 ) msdfRect : vec4<f32>,\n\t@location( 4 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_3879.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_3860.value[ nodeVar10 ], NodeBuffer_3860.value[ ( nodeVar10 + 1u ) ], NodeBuffer_3860.value[ ( nodeVar10 + 2u ) ], NodeBuffer_3860.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfRect.xy, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( position.xy * msdfRect.zw ), 0.0, 0.0 ) ).xy.y ) ) * nodeVar12 ) ) / object.nodeUniform11 ) * vec2<f32>( 2.0, -2.0 ) ) + vec2<f32>( -1.0, 1.0 ) ), object.nodeUniform13, 1.0 );\n\n\t// result\n\n\tvaryings.builtinClipSpace = nodeVar13;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// directives\n\n\n// structs\n\n\n// uniforms\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform22 : vec3<f32>,\n\tnodeUniform25 : vec3<f32>,\n\tnodeUniform26 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform21 : vec3<f32>,\n\tnodeUniform23 : vec3<f32>,\n\tnodeUniform24 : vec3<f32>,\n\tnodeUniform13 : mat4x4<f32>,\n\tnodeUniform14 : f32,\n\tnodeUniform15 : f32,\n\tnodeUniform16 : vec2<f32>,\n\tnodeUniform18 : f32\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionWorld : vec3<f32>,\n\t@location( 2 ) v_positionViewDirection : vec3<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> normalLocal : vec3<f32>;\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar158 : vec4<f32>;\nvar<private> v_modelViewProjection : vec4<f32>;\nvar<private> v_positionView : vec3<f32>;\nvar<private> positionLocal : vec3<f32>;\nvar<private> VERTEX_v_modelViewProjection : vec4<f32>;\n\n// codes\n\n\n@vertex\nfn main( @location( 0 ) normal : vec3<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tnormalLocal = normal;\n\tvaryings.v_normalViewGeometry = normalize( ( render.cameraViewMatrix * vec4<f32>( ( object.nodeUniform5 * normalLocal ), 0.0 ) ).xyz );\n\tpositionLocal = position;\n\tvaryings.v_positionWorld = ( object.nodeUniform12 * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tvaryings.v_positionViewDirection = ( - v_positionView );\n\tVERTEX_nodeVar158 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar158;\n\n\t// result\n\n\tvaryings.builtinClipSpace = VERTEX_v_modelViewProjection;\n\n\treturn varyings;\n\n}\n","// Three.js r185 - Node System\n\n// global\ndiagnostic( off, derivative_uniformity );\n\n\n// structs\n\nstruct OutputStruct {\n\t@location( 0 ) color: vec4<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform17_sampler : sampler_comparison;\n@binding( 2 ) @group( 1 ) var nodeUniform17 : texture_depth_2d;\n@binding( 3 ) @group( 1 ) var nodeUniform19_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform19 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec3<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : vec3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\nstruct renderStruct {\n\tcameraProjectionMatrix : mat4x4<f32>,\n\tcameraViewMatrix : mat4x4<f32>,\n\tnodeUniform11 : vec3<f32>,\n\tnodeUniform22 : vec3<f32>,\n\tnodeUniform25 : vec3<f32>,\n\tnodeUniform26 : vec3<f32>,\n\tnodeUniform9 : vec3<f32>,\n\tnodeUniform10 : vec3<f32>,\n\tnodeUniform20 : vec3<f32>,\n\tnodeUniform21 : vec3<f32>,\n\tnodeUniform23 : vec3<f32>,\n\tnodeUniform24 : vec3<f32>,\n\tnodeUniform13 : mat4x4<f32>,\n\tnodeUniform14 : f32,\n\tnodeUniform15 : f32,\n\tnodeUniform16 : vec2<f32>,\n\tnodeUniform18 : f32\n};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\n// vars\nvar<private> DiffuseColor : vec4<f32>;\nvar<private> Metalness : f32;\nvar<private> Roughness : f32;\nvar<private> normalViewGeometry : vec3<f32>;\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> SpecularColor : vec3<f32>;\nvar<private> SpecularColorBlended : vec3<f32>;\nvar<private> SpecularF90 : f32;\nvar<private> DiffuseContribution : vec3<f32>;\nvar<private> EmissiveColor : vec3<f32>;\nvar<private> Output : vec4<f32>;\nvar<private> NORMAL_normalView : vec3<f32>;\nvar<private> normalView : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec3<f32>;\nvar<private> nodeVar5 : vec3<f32>;\nvar<private> nodeVar6 : f32;\nvar<private> shadowPositionWorld : vec3<f32>;\nvar<private> normalWorld : vec3<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec3<f32>;\nvar<private> nodeVar9 : vec3<f32>;\nvar<private> nodeVar10 : f32;\nvar<private> nodeVar11 : vec2<f32>;\nvar<private> nodeVar12 : vec4<f32>;\nvar<private> nodeVar13 : vec4<f32>;\nvar<private> nodeVar14 : vec4<f32>;\nvar<private> nodeVar15 : vec4<f32>;\nvar<private> nodeVar16 : f32;\nvar<private> nodeVar17 : vec3<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : vec3<f32>;\nvar<private> directDiffuse : vec3<f32>;\nvar<private> nodeVar20 : vec3<f32>;\nvar<private> nodeVar21 : vec3<f32>;\nvar<private> nodeVar22 : vec3<f32>;\nvar<private> directSpecular : vec3<f32>;\nvar<private> positionViewDirection : vec3<f32>;\nvar<private> nodeVar23 : vec3<f32>;\nvar<private> nodeVar24 : f32;\nvar<private> nodeVar25 : f32;\nvar<private> nodeVar26 : f32;\nvar<private> nodeVar27 : vec4<f32>;\nvar<private> nodeVar28 : vec4<f32>;\nvar<private> nodeVar29 : vec3<f32>;\nvar<private> nodeVar30 : f32;\nvar<private> nodeVar31 : f32;\nvar<private> nodeVar32 : vec3<f32>;\nvar<private> nodeVar33 : vec3<f32>;\nvar<private> nodeVar34 : vec3<f32>;\nvar<private> nodeVar35 : vec3<f32>;\nvar<private> nodeVar36 : vec4<f32>;\nvar<private> nodeVar37 : vec4<f32>;\nvar<private> nodeVar38 : vec3<f32>;\nvar<private> nodeVar39 : vec3<f32>;\nvar<private> nodeVar40 : f32;\nvar<private> nodeVar41 : vec3<f32>;\nvar<private> nodeVar42 : vec3<f32>;\nvar<private> nodeVar43 : vec3<f32>;\nvar<private> nodeVar44 : vec3<f32>;\nvar<private> nodeVar45 : vec3<f32>;\nvar<private> nodeVar46 : vec3<f32>;\nvar<private> nodeVar47 : f32;\nvar<private> nodeVar48 : f32;\nvar<private> nodeVar49 : f32;\nvar<private> nodeVar50 : vec4<f32>;\nvar<private> nodeVar51 : vec4<f32>;\nvar<private> nodeVar52 : vec3<f32>;\nvar<private> nodeVar53 : f32;\nvar<private> nodeVar54 : f32;\nvar<private> nodeVar55 : vec3<f32>;\nvar<private> nodeVar56 : vec3<f32>;\nvar<private> nodeVar57 : vec3<f32>;\nvar<private> nodeVar58 : vec3<f32>;\nvar<private> nodeVar59 : vec4<f32>;\nvar<private> nodeVar60 : vec4<f32>;\nvar<private> nodeVar61 : vec3<f32>;\nvar<private> nodeVar62 : vec3<f32>;\nvar<private> nodeVar63 : f32;\nvar<private> nodeVar64 : vec3<f32>;\nvar<private> nodeVar65 : vec3<f32>;\nvar<private> nodeVar66 : vec3<f32>;\nvar<private> nodeVar67 : vec3<f32>;\nvar<private> nodeVar68 : vec3<f32>;\nvar<private> nodeVar69 : vec3<f32>;\nvar<private> nodeVar70 : f32;\nvar<private> nodeVar71 : f32;\nvar<private> nodeVar72 : f32;\nvar<private> nodeVar73 : vec4<f32>;\nvar<private> nodeVar74 : vec4<f32>;\nvar<private> nodeVar75 : vec3<f32>;\nvar<private> nodeVar76 : f32;\nvar<private> nodeVar77 : f32;\nvar<private> nodeVar78 : vec3<f32>;\nvar<private> nodeVar79 : vec3<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> irradiance : vec3<f32>;\nvar<private> nodeVar81 : vec3<f32>;\nvar<private> nodeVar82 : vec3<f32>;\nvar<private> nodeVar83 : vec3<f32>;\nvar<private> nodeVar84 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : vec4<f32>;\nvar<private> nodeVar88 : vec3<f32>;\nvar<private> nodeVar89 : f32;\nvar<private> nodeVar90 : vec3<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : vec3<f32>;\nvar<private> nodeVar93 : vec3<f32>;\nvar<private> nodeVar94 : vec3<f32>;\nvar<private> nodeVar95 : vec3<f32>;\nvar<private> nodeVar96 : vec3<f32>;\nvar<private> nodeVar97 : f32;\nvar<private> nodeVar98 : f32;\nvar<private> nodeVar99 : f32;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> nodeVar101 : vec3<f32>;\nvar<private> nodeVar102 : vec3<f32>;\nvar<private> nodeVar103 : vec3<f32>;\nvar<private> nodeVar104 : vec3<f32>;\nvar<private> nodeVar105 : vec3<f32>;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : vec4<f32>;\nvar<private> nodeVar108 : vec3<f32>;\nvar<private> nodeVar109 : f32;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> nodeVar112 : vec3<f32>;\nvar<private> nodeVar113 : vec3<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> nodeVar115 : vec3<f32>;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : f32;\nvar<private> nodeVar118 : f32;\nvar<private> nodeVar119 : f32;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> nodeVar123 : vec3<f32>;\nvar<private> nodeVar124 : vec3<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> radiance : vec3<f32>;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : vec3<f32>;\nvar<private> nodeVar132 : vec3<f32>;\nvar<private> nodeVar133 : vec3<f32>;\nvar<private> nodeVar134 : vec3<f32>;\nvar<private> nodeVar135 : vec3<f32>;\nvar<private> nodeVar136 : vec3<f32>;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : f32;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : f32;\nvar<private> nodeVar145 : f32;\nvar<private> nodeVar146 : f32;\nvar<private> nodeVar147 : f32;\nvar<private> nodeVar148 : f32;\nvar<private> nodeVar149 : f32;\nvar<private> nodeVar150 : f32;\nvar<private> nodeVar151 : f32;\nvar<private> nodeVar152 : f32;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar154 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar155 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar156 : vec3<f32>;\nvar<private> nodeVar157 : vec4<f32>;\n\n// codes\nfn V_GGX_SmithCorrelated ( alpha : f32, dotNL : f32, dotNV : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\n\treturn ( 0.5 / max( ( ( dotNL * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNV * dotNV ) ) ) ) ) + ( dotNV * sqrt( ( nodeVar0 + ( ( 1.0 - nodeVar0 ) * ( dotNL * dotNL ) ) ) ) ) ), 0.000001 ) );\n\n}\n\nfn D_GGX ( alpha : f32, dotNH : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\tvar nodeVar1 : f32;\n\n\tnodeVar0 = ( alpha * alpha );\n\tnodeVar1 = ( 1.0 - ( ( dotNH * dotNH ) * ( 1.0 - nodeVar0 ) ) );\n\n\treturn ( ( nodeVar0 / ( nodeVar1 * nodeVar1 ) ) * 0.3183098861837907 );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) v_normalViewGeometry : vec3<f32>,\n\t@location( 1 ) v_positionWorld : vec3<f32>,\n\t@location( 2 ) v_positionViewDirection : vec3<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tDiffuseColor = vec4<f32>( object.nodeUniform0, 1.0 );\n\tDiffuseColor.w = ( DiffuseColor.w * object.nodeUniform1 );\n\tDiffuseColor.w = 1.0;\n\tMetalness = object.nodeUniform2;\n\tnormalViewGeometry = normalize( v_normalViewGeometry );\n\tnodeVar0 = max( abs( dpdx( normalViewGeometry ) ), abs( - dpdy( normalViewGeometry ) ) );\n\tRoughness = min( ( max( object.nodeUniform3, 0.0525 ) + max( max( nodeVar0.x, nodeVar0.y ), nodeVar0.z ) ), 1.0 );\n\tSpecularColor = vec3<f32>( 0.04, 0.04, 0.04 );\n\tSpecularColorBlended = mix( vec3<f32>( 0.04, 0.04, 0.04 ), DiffuseColor.xyz, Metalness );\n\tSpecularF90 = 1.0;\n\tDiffuseContribution = ( DiffuseColor.xyz * vec3<f32>( ( 1.0 - object.nodeUniform2 ) ) );\n\tEmissiveColor = ( object.nodeUniform6 * vec3<f32>( object.nodeUniform7 ) );\n\tNORMAL_normalView = normalViewGeometry;\n\tnormalView = NORMAL_normalView;\n\tnodeVar1 = ( render.nodeUniform9 - render.nodeUniform10 );\n\tnodeVar2 = vec4<f32>( nodeVar1, 0.0 );\n\tnodeVar3 = ( render.cameraViewMatrix * nodeVar2 );\n\tnodeVar4 = normalize( nodeVar3.xyz );\n\tnodeVar5 = nodeVar4;\n\tnodeVar6 = dot( normalView, nodeVar5 );\n\tshadowPositionWorld = v_positionWorld;\n\tnormalWorld = normalize( ( vec4<f32>( normalView, 0.0 ) * render.cameraViewMatrix ).xyz );\n\tnodeVar7 = ( render.nodeUniform13 * vec4<f32>( ( shadowPositionWorld + ( normalWorld * vec3<f32>( render.nodeUniform14 ) ) ), 1.0 ) );\n\tnodeVar8 = ( nodeVar7.xyz / vec3<f32>( nodeVar7.w ) );\n\tnodeVar9 = vec3<f32>( nodeVar8.x, ( 1.0 - nodeVar8.y ), ( nodeVar8.z + render.nodeUniform15 ) );\n\n\tif ( ( ( ( ( ( nodeVar9.x >= 0.0 ) && ( nodeVar9.x <= 1.0 ) ) && ( nodeVar9.y >= 0.0 ) ) && ( nodeVar9.y <= 1.0 ) ) && ( nodeVar9.z <= 1.0 ) ) ) {\n\n\t\tlet nodeConst0 = fract( ( ( nodeVar9.xy * render.nodeUniform16 ) + vec2<f32>( 0.5 ) ) );\n\t\tnodeVar11 = ( nodeVar9.xy - ( ( nodeConst0 - vec2<f32>( 0.5 ) ) * ( vec2<f32>( 1.0, 1.0 ) / render.nodeUniform16 ) ) );\n\t\tnodeVar9.x = nodeVar11[ 0 ];\n\t\tnodeVar9.y = nodeVar11[ 1 ];\n\t\tnodeVar12 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( -1, 1 ) );\n\t\tlet nodeConst1 = nodeVar12;\n\t\tnodeVar13 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( 1, 1 ) );\n\t\tlet nodeConst2 = nodeVar13;\n\t\tnodeVar14 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( -1, -1 ) );\n\t\tlet nodeConst3 = nodeVar14;\n\t\tnodeVar15 = textureGatherCompare( nodeUniform17, nodeUniform17_sampler, nodeVar9.xy, nodeVar9.z, vec2<i32>( 1, -1 ) );\n\t\tlet nodeConst4 = nodeVar15;\n\t\tnodeVar10 = ( ( ( ( ( ( ( mix( nodeConst1.x, nodeConst2.y, nodeConst0.x ) + nodeConst1.y ) + nodeConst2.x ) * nodeConst0.y ) + ( ( mix( nodeConst1.w, nodeConst2.z, nodeConst0.x ) + nodeConst1.z ) + nodeConst2.w ) ) + ( ( mix( nodeConst3.x, nodeConst4.y, nodeConst0.x ) + nodeConst3.y ) + nodeConst4.x ) ) + ( ( ( mix( nodeConst3.w, nodeConst4.z, nodeConst0.x ) + nodeConst3.z ) + nodeConst4.w ) * ( 1.0 - nodeConst0.y ) ) ) * 0.1111111111111111 );\n\n\t} else {\n\n\t\tnodeVar10 = 1.0;\n\n\t}\n\n\tnodeVar16 = mix( 1.0, nodeVar10, render.nodeUniform18 );\n\tnodeVar17 = ( render.nodeUniform11 * vec3<f32>( nodeVar16 ) );\n\tnodeVar18 = ( vec3<f32>( clamp( nodeVar6, 0.0, 1.0 ) ) * nodeVar17 );\n\tnodeVar19 = nodeVar18;\n\tdirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar20 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar21 = ( nodeVar19 * nodeVar20 );\n\tnodeVar22 = ( directDiffuse + nodeVar21 );\n\tdirectDiffuse = nodeVar22;\n\tdirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tpositionViewDirection = normalize( v_positionViewDirection );\n\tnodeVar23 = normalize( ( nodeVar5 + positionViewDirection ) );\n\tnodeVar24 = clamp( dot( positionViewDirection, nodeVar23 ), 0.0, 1.0 );\n\tnodeVar25 = exp2( ( ( ( nodeVar24 * -5.55473 ) - 6.98316 ) * nodeVar24 ) );\n\tnodeVar26 = ( Roughness * Roughness );\n\tnodeVar27 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar28 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ) ) );\n\tnodeVar29 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar30 = ( 1.0 - ( nodeVar27.xy.x + nodeVar27.xy.y ) );\n\tnodeVar31 = ( 1.0 - ( nodeVar28.xy.x + nodeVar28.xy.y ) );\n\tnodeVar32 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar25 ) ) ) + vec3<f32>( ( 1.0 * nodeVar25 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar26, clamp( dot( normalView, nodeVar5 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar26, clamp( dot( normalView, nodeVar23 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar27.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar27.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar28.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar28.xy.y ) ) ) ) * nodeVar29 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar30 * nodeVar31 ) ) * nodeVar29 ) * nodeVar29 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar30 * nodeVar31 ) ) ) );\n\tnodeVar33 = ( nodeVar19 * nodeVar32 );\n\tnodeVar34 = ( directSpecular + nodeVar33 );\n\tdirectSpecular = nodeVar34;\n\tnodeVar35 = ( render.nodeUniform20 - render.nodeUniform21 );\n\tnodeVar36 = vec4<f32>( nodeVar35, 0.0 );\n\tnodeVar37 = ( render.cameraViewMatrix * nodeVar36 );\n\tnodeVar38 = normalize( nodeVar37.xyz );\n\tnodeVar39 = nodeVar38;\n\tnodeVar40 = dot( normalView, nodeVar39 );\n\tnodeVar41 = ( vec3<f32>( clamp( nodeVar40, 0.0, 1.0 ) ) * render.nodeUniform22 );\n\tnodeVar42 = nodeVar41;\n\tnodeVar43 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar44 = ( nodeVar42 * nodeVar43 );\n\tnodeVar45 = ( directDiffuse + nodeVar44 );\n\tdirectDiffuse = nodeVar45;\n\tnodeVar46 = normalize( ( nodeVar39 + positionViewDirection ) );\n\tnodeVar47 = clamp( dot( positionViewDirection, nodeVar46 ), 0.0, 1.0 );\n\tnodeVar48 = exp2( ( ( ( nodeVar47 * -5.55473 ) - 6.98316 ) * nodeVar47 ) );\n\tnodeVar49 = ( Roughness * Roughness );\n\tnodeVar50 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar51 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar39 ), 0.0, 1.0 ) ) );\n\tnodeVar52 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar53 = ( 1.0 - ( nodeVar50.xy.x + nodeVar50.xy.y ) );\n\tnodeVar54 = ( 1.0 - ( nodeVar51.xy.x + nodeVar51.xy.y ) );\n\tnodeVar55 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar48 ) ) ) + vec3<f32>( ( 1.0 * nodeVar48 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar49, clamp( dot( normalView, nodeVar39 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar49, clamp( dot( normalView, nodeVar46 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar50.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar50.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar51.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar51.xy.y ) ) ) ) * nodeVar52 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar53 * nodeVar54 ) ) * nodeVar52 ) * nodeVar52 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar53 * nodeVar54 ) ) ) );\n\tnodeVar56 = ( nodeVar42 * nodeVar55 );\n\tnodeVar57 = ( directSpecular + nodeVar56 );\n\tdirectSpecular = nodeVar57;\n\tnodeVar58 = ( render.nodeUniform23 - render.nodeUniform24 );\n\tnodeVar59 = vec4<f32>( nodeVar58, 0.0 );\n\tnodeVar60 = ( render.cameraViewMatrix * nodeVar59 );\n\tnodeVar61 = normalize( nodeVar60.xyz );\n\tnodeVar62 = nodeVar61;\n\tnodeVar63 = dot( normalView, nodeVar62 );\n\tnodeVar64 = ( vec3<f32>( clamp( nodeVar63, 0.0, 1.0 ) ) * render.nodeUniform25 );\n\tnodeVar65 = nodeVar64;\n\tnodeVar66 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar67 = ( nodeVar65 * nodeVar66 );\n\tnodeVar68 = ( directDiffuse + nodeVar67 );\n\tdirectDiffuse = nodeVar68;\n\tnodeVar69 = normalize( ( nodeVar62 + positionViewDirection ) );\n\tnodeVar70 = clamp( dot( positionViewDirection, nodeVar69 ), 0.0, 1.0 );\n\tnodeVar71 = exp2( ( ( ( nodeVar70 * -5.55473 ) - 6.98316 ) * nodeVar70 ) );\n\tnodeVar72 = ( Roughness * Roughness );\n\tnodeVar73 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) );\n\tnodeVar74 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( dot( normalView, nodeVar62 ), 0.0, 1.0 ) ) );\n\tnodeVar75 = ( SpecularColorBlended + ( ( vec3<f32>( 1.0 ) - SpecularColorBlended ) * vec3<f32>( 0.047619 ) ) );\n\tnodeVar76 = ( 1.0 - ( nodeVar73.xy.x + nodeVar73.xy.y ) );\n\tnodeVar77 = ( 1.0 - ( nodeVar74.xy.x + nodeVar74.xy.y ) );\n\tnodeVar78 = ( ( ( ( ( SpecularColorBlended * vec3<f32>( ( 1.0 - nodeVar71 ) ) ) + vec3<f32>( ( 1.0 * nodeVar71 ) ) ) * vec3<f32>( V_GGX_SmithCorrelated( nodeVar72, clamp( dot( normalView, nodeVar62 ), 0.0, 1.0 ), clamp( dot( normalView, positionViewDirection ), 0.0, 1.0 ) ) ) ) * vec3<f32>( D_GGX( nodeVar72, clamp( dot( normalView, nodeVar69 ), 0.0, 1.0 ) ) ) ) + ( ( ( ( ( ( SpecularColorBlended * vec3<f32>( nodeVar73.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar73.xy.y ) ) ) * ( ( SpecularColorBlended * vec3<f32>( nodeVar74.xy.x ) ) + vec3<f32>( ( 1.0 * nodeVar74.xy.y ) ) ) ) * nodeVar75 ) / ( ( vec3<f32>( 1.0 ) - ( ( vec3<f32>( ( nodeVar76 * nodeVar77 ) ) * nodeVar75 ) * nodeVar75 ) ) + vec3<f32>( 0.000001 ) ) ) * vec3<f32>( ( nodeVar76 * nodeVar77 ) ) ) );\n\tnodeVar79 = ( nodeVar65 * nodeVar78 );\n\tnodeVar80 = ( directSpecular + nodeVar79 );\n\tdirectSpecular = nodeVar80;\n\tirradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar81 = ( irradiance + render.nodeUniform26 );\n\tirradiance = nodeVar81;\n\tnodeVar82 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar83 = ( irradiance * nodeVar82 );\n\tnodeVar84 = nodeVar83;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar85 = ( indirectDiffuse + nodeVar84 );\n\tindirectDiffuse = nodeVar85;\n\tsingleScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringDielectric = vec3<f32>( 0.0, 0.0, 0.0 );\n\tsingleScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tmultiScatteringMetallic = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar86 = dot( normalView, positionViewDirection );\n\tnodeVar87 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar86, 0.0, 1.0 ) ) );\n\tnodeVar88 = ( SpecularColor * vec3<f32>( nodeVar87.xy.x ) );\n\tnodeVar89 = ( SpecularF90 * nodeVar87.xy.y );\n\tnodeVar90 = ( nodeVar88 + vec3<f32>( nodeVar89 ) );\n\tnodeVar91 = ( singleScatteringDielectric + nodeVar90 );\n\tsingleScatteringDielectric = nodeVar91;\n\tnodeVar92 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar93 = nodeVar92;\n\tnodeVar94 = ( nodeVar93 * vec3<f32>( 0.047619 ) );\n\tnodeVar95 = ( SpecularColor + nodeVar94 );\n\tnodeVar96 = ( nodeVar90 * nodeVar95 );\n\tnodeVar97 = ( nodeVar87.xy.x + nodeVar87.xy.y );\n\tnodeVar98 = ( 1.0 - nodeVar97 );\n\tnodeVar99 = nodeVar98;\n\tnodeVar100 = ( vec3<f32>( nodeVar99 ) * nodeVar95 );\n\tnodeVar101 = ( vec3<f32>( 1.0 ) - nodeVar100 );\n\tnodeVar102 = nodeVar101;\n\tnodeVar103 = ( nodeVar96 / nodeVar102 );\n\tnodeVar104 = ( nodeVar103 * vec3<f32>( nodeVar99 ) );\n\tnodeVar105 = ( multiScatteringDielectric + nodeVar104 );\n\tmultiScatteringDielectric = nodeVar105;\n\tnodeVar106 = dot( normalView, positionViewDirection );\n\tnodeVar107 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar106, 0.0, 1.0 ) ) );\n\tnodeVar108 = ( DiffuseColor.xyz * vec3<f32>( nodeVar107.xy.x ) );\n\tnodeVar109 = ( SpecularF90 * nodeVar107.xy.y );\n\tnodeVar110 = ( nodeVar108 + vec3<f32>( nodeVar109 ) );\n\tnodeVar111 = ( singleScatteringMetallic + nodeVar110 );\n\tsingleScatteringMetallic = nodeVar111;\n\tnodeVar112 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar113 = nodeVar112;\n\tnodeVar114 = ( nodeVar113 * vec3<f32>( 0.047619 ) );\n\tnodeVar115 = ( DiffuseColor.xyz + nodeVar114 );\n\tnodeVar116 = ( nodeVar110 * nodeVar115 );\n\tnodeVar117 = ( nodeVar107.xy.x + nodeVar107.xy.y );\n\tnodeVar118 = ( 1.0 - nodeVar117 );\n\tnodeVar119 = nodeVar118;\n\tnodeVar120 = ( vec3<f32>( nodeVar119 ) * nodeVar115 );\n\tnodeVar121 = ( vec3<f32>( 1.0 ) - nodeVar120 );\n\tnodeVar122 = nodeVar121;\n\tnodeVar123 = ( nodeVar116 / nodeVar122 );\n\tnodeVar124 = ( nodeVar123 * vec3<f32>( nodeVar119 ) );\n\tnodeVar125 = ( multiScatteringMetallic + nodeVar124 );\n\tmultiScatteringMetallic = nodeVar125;\n\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar126 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar127 = ( radiance * nodeVar126 );\n\tnodeVar128 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar129 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar130 = ( nodeVar128 * nodeVar129 );\n\tnodeVar131 = ( nodeVar127 + nodeVar130 );\n\tnodeVar132 = nodeVar131;\n\tnodeVar133 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar134 = ( vec3<f32>( 1.0 ) - nodeVar133 );\n\tnodeVar135 = nodeVar134;\n\tnodeVar136 = ( DiffuseContribution * nodeVar135 );\n\tnodeVar137 = ( nodeVar136 * nodeVar129 );\n\tnodeVar138 = nodeVar137;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar139 = ( indirectSpecular + nodeVar132 );\n\tindirectSpecular = nodeVar139;\n\tnodeVar140 = ( indirectDiffuse + nodeVar138 );\n\tindirectDiffuse = nodeVar140;\n\tambientOcclusion = 1.0;\n\tnodeVar141 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar141;\n\tnodeVar142 = dot( normalView, positionViewDirection );\n\tnodeVar143 = ( clamp( nodeVar142, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar144 = ( Roughness * -16.0 );\n\tnodeVar145 = ( 1.0 - nodeVar144 );\n\tnodeVar146 = nodeVar145;\n\tnodeVar147 = ( - nodeVar146 );\n\tnodeVar148 = exp2( nodeVar147 );\n\tnodeVar149 = pow( nodeVar143, nodeVar148 );\n\tnodeVar150 = ( 1.0 - nodeVar149 );\n\tnodeVar151 = nodeVar150;\n\tnodeVar152 = ( ambientOcclusion - nodeVar151 );\n\tnodeVar153 = ( indirectSpecular * vec3<f32>( clamp( nodeVar152, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar153;\n\tnodeVar154 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar154;\n\tnodeVar155 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar155;\n\tnodeVar156 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar156;\n\tnodeVar157 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar157;\n\n\t// result\n\n\toutput.color = nodeVar157;\n\n\treturn output;\n\n}\n"],
|
|
746
762
|
"nodes": [
|
|
747
763
|
{
|
|
748
764
|
"k": "owned",
|
|
@@ -1069,7 +1085,7 @@ export default {
|
|
|
1069
1085
|
"path": [],
|
|
1070
1086
|
"slot": "vertexNode"
|
|
1071
1087
|
},
|
|
1072
|
-
"path": [0,0,0,0,0,0,0,0,0,0]
|
|
1088
|
+
"path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
|
1073
1089
|
},
|
|
1074
1090
|
{
|
|
1075
1091
|
"k": "owned",
|
|
@@ -1079,7 +1095,7 @@ export default {
|
|
|
1079
1095
|
"path": [],
|
|
1080
1096
|
"slot": "vertexNode"
|
|
1081
1097
|
},
|
|
1082
|
-
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
|
|
1098
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
|
|
1083
1099
|
},
|
|
1084
1100
|
{
|
|
1085
1101
|
"k": "owned",
|
|
@@ -1089,7 +1105,7 @@ export default {
|
|
|
1089
1105
|
"path": [],
|
|
1090
1106
|
"slot": "vertexNode"
|
|
1091
1107
|
},
|
|
1092
|
-
"path": [0,0,0,0,0,0,0,1]
|
|
1108
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
|
|
1093
1109
|
},
|
|
1094
1110
|
{
|
|
1095
1111
|
"k": "owned",
|
|
@@ -1188,7 +1204,7 @@ export default {
|
|
|
1188
1204
|
"path": [],
|
|
1189
1205
|
"slot": "vertexNode"
|
|
1190
1206
|
},
|
|
1191
|
-
"path": [0,0,0,0,0,0,0,0,0,0]
|
|
1207
|
+
"path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
|
1192
1208
|
},
|
|
1193
1209
|
{
|
|
1194
1210
|
"k": "owned",
|
|
@@ -1198,7 +1214,7 @@ export default {
|
|
|
1198
1214
|
"path": [],
|
|
1199
1215
|
"slot": "vertexNode"
|
|
1200
1216
|
},
|
|
1201
|
-
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
|
|
1217
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
|
|
1202
1218
|
},
|
|
1203
1219
|
{
|
|
1204
1220
|
"k": "owned",
|
|
@@ -1208,7 +1224,7 @@ export default {
|
|
|
1208
1224
|
"path": [],
|
|
1209
1225
|
"slot": "vertexNode"
|
|
1210
1226
|
},
|
|
1211
|
-
"path": [0,0,0,0,0,0,0,1]
|
|
1227
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
|
|
1212
1228
|
},
|
|
1213
1229
|
{
|
|
1214
1230
|
"k": "owned",
|
|
@@ -1302,7 +1318,7 @@ export default {
|
|
|
1302
1318
|
"path": [],
|
|
1303
1319
|
"slot": "vertexNode"
|
|
1304
1320
|
},
|
|
1305
|
-
"path": [0,0,0,0,0,0,0,0,0,0]
|
|
1321
|
+
"path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
|
1306
1322
|
},
|
|
1307
1323
|
{
|
|
1308
1324
|
"k": "owned",
|
|
@@ -1312,7 +1328,7 @@ export default {
|
|
|
1312
1328
|
"path": [],
|
|
1313
1329
|
"slot": "vertexNode"
|
|
1314
1330
|
},
|
|
1315
|
-
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
|
|
1331
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
|
|
1316
1332
|
},
|
|
1317
1333
|
{
|
|
1318
1334
|
"k": "owned",
|
|
@@ -1322,7 +1338,7 @@ export default {
|
|
|
1322
1338
|
"path": [],
|
|
1323
1339
|
"slot": "vertexNode"
|
|
1324
1340
|
},
|
|
1325
|
-
"path": [0,0,0,0,0,0,0,1]
|
|
1341
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
|
|
1326
1342
|
},
|
|
1327
1343
|
{
|
|
1328
1344
|
"k": "owned",
|
|
@@ -1416,7 +1432,7 @@ export default {
|
|
|
1416
1432
|
"path": [],
|
|
1417
1433
|
"slot": "vertexNode"
|
|
1418
1434
|
},
|
|
1419
|
-
"path": [0,0,0,0,0,0,0,0,0,0]
|
|
1435
|
+
"path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
|
1420
1436
|
},
|
|
1421
1437
|
{
|
|
1422
1438
|
"k": "owned",
|
|
@@ -1426,7 +1442,7 @@ export default {
|
|
|
1426
1442
|
"path": [],
|
|
1427
1443
|
"slot": "vertexNode"
|
|
1428
1444
|
},
|
|
1429
|
-
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
|
|
1445
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
|
|
1430
1446
|
},
|
|
1431
1447
|
{
|
|
1432
1448
|
"k": "owned",
|
|
@@ -1436,7 +1452,7 @@ export default {
|
|
|
1436
1452
|
"path": [],
|
|
1437
1453
|
"slot": "vertexNode"
|
|
1438
1454
|
},
|
|
1439
|
-
"path": [0,0,0,0,0,0,0,1]
|
|
1455
|
+
"path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
|
|
1440
1456
|
},
|
|
1441
1457
|
{
|
|
1442
1458
|
"k": "owned",
|
|
@@ -1685,8 +1701,9 @@ export default {
|
|
|
1685
1701
|
[27,0,"color","fragment","nodeUniform8"],
|
|
1686
1702
|
[44,0,"vec2","vertex","nodeUniform9"],
|
|
1687
1703
|
[45,0,"storageBuffer","vertex","NodeBuffer_3517"],
|
|
1688
|
-
[
|
|
1689
|
-
[
|
|
1704
|
+
[1,0,"vec2","vertex","nodeUniform11"],
|
|
1705
|
+
[46,0,"vec2","vertex","nodeUniform12"],
|
|
1706
|
+
[47,0,"float","vertex","nodeUniform13"]
|
|
1690
1707
|
],
|
|
1691
1708
|
"fragment": 7,
|
|
1692
1709
|
"hardwareClipping": false,
|
|
@@ -1702,7 +1719,7 @@ export default {
|
|
|
1702
1719
|
"attributes": 2,
|
|
1703
1720
|
"compute": null,
|
|
1704
1721
|
"declarations": [
|
|
1705
|
-
[50,0,"storageBuffer","vertex","
|
|
1722
|
+
[50,0,"storageBuffer","vertex","NodeBuffer_3708"],
|
|
1706
1723
|
[51,0,"texture","fragment","nodeUniform1"],
|
|
1707
1724
|
[52,0,"mat3","fragment","nodeUniform2"],
|
|
1708
1725
|
[53,0,"float","fragment","nodeUniform3"],
|
|
@@ -1712,9 +1729,10 @@ export default {
|
|
|
1712
1729
|
[43,0,"float","fragment","nodeUniform7"],
|
|
1713
1730
|
[27,0,"color","fragment","nodeUniform8"],
|
|
1714
1731
|
[56,0,"vec2","vertex","nodeUniform9"],
|
|
1715
|
-
[57,0,"storageBuffer","vertex","
|
|
1716
|
-
[
|
|
1717
|
-
[
|
|
1732
|
+
[57,0,"storageBuffer","vertex","NodeBuffer_3689"],
|
|
1733
|
+
[1,0,"vec2","vertex","nodeUniform11"],
|
|
1734
|
+
[58,0,"vec2","vertex","nodeUniform12"],
|
|
1735
|
+
[59,0,"float","vertex","nodeUniform13"]
|
|
1718
1736
|
],
|
|
1719
1737
|
"fragment": 7,
|
|
1720
1738
|
"hardwareClipping": false,
|
|
@@ -1730,7 +1748,7 @@ export default {
|
|
|
1730
1748
|
"attributes": 2,
|
|
1731
1749
|
"compute": null,
|
|
1732
1750
|
"declarations": [
|
|
1733
|
-
[61,0,"storageBuffer","vertex","
|
|
1751
|
+
[61,0,"storageBuffer","vertex","NodeBuffer_4050"],
|
|
1734
1752
|
[62,0,"texture","fragment","nodeUniform1"],
|
|
1735
1753
|
[63,0,"mat3","fragment","nodeUniform2"],
|
|
1736
1754
|
[64,0,"float","fragment","nodeUniform3"],
|
|
@@ -1740,9 +1758,10 @@ export default {
|
|
|
1740
1758
|
[43,0,"float","fragment","nodeUniform7"],
|
|
1741
1759
|
[27,0,"color","fragment","nodeUniform8"],
|
|
1742
1760
|
[67,0,"vec2","vertex","nodeUniform9"],
|
|
1743
|
-
[68,0,"storageBuffer","vertex","
|
|
1744
|
-
[
|
|
1745
|
-
[
|
|
1761
|
+
[68,0,"storageBuffer","vertex","NodeBuffer_4031"],
|
|
1762
|
+
[1,0,"vec2","vertex","nodeUniform11"],
|
|
1763
|
+
[69,0,"vec2","vertex","nodeUniform12"],
|
|
1764
|
+
[70,0,"float","vertex","nodeUniform13"]
|
|
1746
1765
|
],
|
|
1747
1766
|
"fragment": 7,
|
|
1748
1767
|
"hardwareClipping": false,
|
|
@@ -1758,7 +1777,7 @@ export default {
|
|
|
1758
1777
|
"attributes": 2,
|
|
1759
1778
|
"compute": null,
|
|
1760
1779
|
"declarations": [
|
|
1761
|
-
[72,0,"storageBuffer","vertex","
|
|
1780
|
+
[72,0,"storageBuffer","vertex","NodeBuffer_3879"],
|
|
1762
1781
|
[73,0,"texture","fragment","nodeUniform1"],
|
|
1763
1782
|
[74,0,"mat3","fragment","nodeUniform2"],
|
|
1764
1783
|
[75,0,"float","fragment","nodeUniform3"],
|
|
@@ -1768,9 +1787,10 @@ export default {
|
|
|
1768
1787
|
[43,0,"float","fragment","nodeUniform7"],
|
|
1769
1788
|
[27,0,"color","fragment","nodeUniform8"],
|
|
1770
1789
|
[78,0,"vec2","vertex","nodeUniform9"],
|
|
1771
|
-
[79,0,"storageBuffer","vertex","
|
|
1772
|
-
[
|
|
1773
|
-
[
|
|
1790
|
+
[79,0,"storageBuffer","vertex","NodeBuffer_3860"],
|
|
1791
|
+
[1,0,"vec2","vertex","nodeUniform11"],
|
|
1792
|
+
[80,0,"vec2","vertex","nodeUniform12"],
|
|
1793
|
+
[81,0,"float","vertex","nodeUniform13"]
|
|
1774
1794
|
],
|
|
1775
1795
|
"fragment": 7,
|
|
1776
1796
|
"hardwareClipping": false,
|
|
@@ -1827,16 +1847,16 @@ export default {
|
|
|
1827
1847
|
}
|
|
1828
1848
|
],
|
|
1829
1849
|
"three": "0.185.1",
|
|
1830
|
-
"threeBlocks": "0.
|
|
1850
|
+
"threeBlocks": "0.6.0-alpha.320.g7e6e67cd7214",
|
|
1831
1851
|
"updatePlans": [
|
|
1832
1852
|
[2,5,3,6,7,8],
|
|
1833
1853
|
[],
|
|
1834
1854
|
[2,5,3,6,7,10],
|
|
1835
1855
|
[2,5,3,6,7,28,10,29,30,14,31,32,33,34,35,36,17,18,21,22,24,25],
|
|
1836
|
-
[7,38,48,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1837
|
-
[7,51,60,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1838
|
-
[7,62,71,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1839
|
-
[7,73,82,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1856
|
+
[7,8,38,48,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1857
|
+
[7,8,51,60,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1858
|
+
[7,8,62,71,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1859
|
+
[7,8,73,82,10,49,33,34,35,36,5,17,18,3,21,22,24,25],
|
|
1840
1860
|
[2,5,3,6,7,28,10,29,30,14,31,32,33,34,35,36,17,18,83,89,90,91,92,21,22,24,25],
|
|
1841
1861
|
[93]
|
|
1842
1862
|
],
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
"adapter": "WebGL adapter",
|
|
3
|
+
"measuredAt": "2026-08-05T13:44:22.734Z",
|
|
4
|
+
"platform": "darwin/arm64",
|
|
5
|
+
"receiptHash": "da085a5a5b8ed12d1b193d8b8ebc2edf24d470575e523176783fc8be9ba4a95c",
|
|
6
|
+
"scenes": {
|
|
7
|
+
"text": {
|
|
8
|
+
"avoidedBuildMs": 23.09999990463257,
|
|
9
|
+
"builds": 8,
|
|
10
|
+
"liveBuildMs": 23.09999990463257,
|
|
11
|
+
"precompiledBuildMs": 0,
|
|
12
|
+
"runs": 1,
|
|
13
|
+
"setupMeasured": false,
|
|
14
|
+
"spreadMs": 0
|
|
15
|
+
},
|
|
16
|
+
"text.webgl": {
|
|
17
|
+
"avoidedBuildMs": 23.59999990463257,
|
|
18
|
+
"builds": 4,
|
|
19
|
+
"liveBuildMs": 23.59999990463257,
|
|
20
|
+
"precompiledBuildMs": 0,
|
|
21
|
+
"runs": 1,
|
|
22
|
+
"setupMeasured": false,
|
|
23
|
+
"spreadMs": 0
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"schemaVersion": 3,
|
|
27
|
+
"source": "committed-capture"
|
|
28
28
|
}
|