create-three-blocks-starter 0.5.5 → 0.5.6

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.
@@ -68,6 +68,11 @@ export default {
68
68
  "node": null,
69
69
  "type": "vec2"
70
70
  },
71
+ {
72
+ "name": "msdfOrigin",
73
+ "node": null,
74
+ "type": "vec2"
75
+ },
71
76
  {
72
77
  "name": "msdfRect",
73
78
  "node": null,
@@ -98,11 +103,9 @@ export default {
98
103
  "auto/render-hzp0fdw-smokenodertt.gradient": 10,
99
104
  "text/accent": 11,
100
105
  "text/dom-geist|z:0|w:400": 12,
101
- "text/dom-geist|z:0|w:700": 13,
102
- "text/dom-noto|z:0|w:400": 14,
103
- "text/dom-noto|z:0|w:700": 15,
104
- "text/fluid-output": 16,
105
- "text/ground": 17
106
+ "text/dom-noto|z:0|w:400": 13,
107
+ "text/fluid-output": 14,
108
+ "text/ground": 15
106
109
  },
107
110
  "layouts": [
108
111
  [
@@ -961,93 +964,6 @@ export default {
961
964
  "name": "object"
962
965
  }
963
966
  ],
964
- [
965
- {
966
- "bindings": [
967
- {
968
- "kind": "NodeUniformsGroup",
969
- "name": "render",
970
- "uniforms": [
971
- {
972
- "name": "nodeUniform8",
973
- "type": "color"
974
- }
975
- ]
976
- }
977
- ],
978
- "name": "render"
979
- },
980
- {
981
- "bindings": [
982
- {
983
- "kind": "NodeSampler",
984
- "name": "nodeUniform1_sampler"
985
- },
986
- {
987
- "kind": "NodeSampledTexture",
988
- "name": "nodeUniform1",
989
- "store": false
990
- },
991
- {
992
- "kind": "NodeUniformsGroup",
993
- "name": "object",
994
- "uniforms": [
995
- {
996
- "name": "nodeUniform2",
997
- "type": "mat3"
998
- },
999
- {
1000
- "name": "nodeUniform3",
1001
- "type": "float"
1002
- },
1003
- {
1004
- "name": "nodeUniform4",
1005
- "type": "float"
1006
- },
1007
- {
1008
- "name": "nodeUniform5",
1009
- "type": "float"
1010
- },
1011
- {
1012
- "name": "nodeUniform6",
1013
- "type": "float"
1014
- },
1015
- {
1016
- "name": "nodeUniform7",
1017
- "type": "float"
1018
- },
1019
- {
1020
- "name": "nodeUniform9",
1021
- "type": "vec2"
1022
- },
1023
- {
1024
- "name": "nodeUniform11",
1025
- "type": "vec2"
1026
- },
1027
- {
1028
- "name": "nodeUniform12",
1029
- "type": "vec2"
1030
- },
1031
- {
1032
- "name": "nodeUniform13",
1033
- "type": "float"
1034
- }
1035
- ]
1036
- },
1037
- {
1038
- "access": "readWrite",
1039
- "kind": "NodeStorageBuffer",
1040
- "name": "StorageBuffer_4"
1041
- },
1042
- {
1043
- "access": "readWrite",
1044
- "kind": "NodeStorageBuffer",
1045
- "name": "StorageBuffer_5"
1046
- }
1047
- ],
1048
- "name": "object"
1049
- }
1050
- ],
1051
967
  [
1052
968
  {
1053
969
  "bindings": [
@@ -1211,99 +1127,12 @@ export default {
1211
1127
  {
1212
1128
  "access": "readWrite",
1213
1129
  "kind": "NodeStorageBuffer",
1214
- "name": "StorageBuffer_12"
1215
- },
1216
- {
1217
- "access": "readWrite",
1218
- "kind": "NodeStorageBuffer",
1219
- "name": "StorageBuffer_13"
1220
- }
1221
- ],
1222
- "name": "object"
1223
- }
1224
- ],
1225
- [
1226
- {
1227
- "bindings": [
1228
- {
1229
- "kind": "NodeUniformsGroup",
1230
- "name": "render",
1231
- "uniforms": [
1232
- {
1233
- "name": "nodeUniform8",
1234
- "type": "color"
1235
- }
1236
- ]
1237
- }
1238
- ],
1239
- "name": "render"
1240
- },
1241
- {
1242
- "bindings": [
1243
- {
1244
- "kind": "NodeSampler",
1245
- "name": "nodeUniform1_sampler"
1246
- },
1247
- {
1248
- "kind": "NodeSampledTexture",
1249
- "name": "nodeUniform1",
1250
- "store": false
1251
- },
1252
- {
1253
- "kind": "NodeUniformsGroup",
1254
- "name": "object",
1255
- "uniforms": [
1256
- {
1257
- "name": "nodeUniform2",
1258
- "type": "mat3"
1259
- },
1260
- {
1261
- "name": "nodeUniform3",
1262
- "type": "float"
1263
- },
1264
- {
1265
- "name": "nodeUniform4",
1266
- "type": "float"
1267
- },
1268
- {
1269
- "name": "nodeUniform5",
1270
- "type": "float"
1271
- },
1272
- {
1273
- "name": "nodeUniform6",
1274
- "type": "float"
1275
- },
1276
- {
1277
- "name": "nodeUniform7",
1278
- "type": "float"
1279
- },
1280
- {
1281
- "name": "nodeUniform9",
1282
- "type": "vec2"
1283
- },
1284
- {
1285
- "name": "nodeUniform11",
1286
- "type": "vec2"
1287
- },
1288
- {
1289
- "name": "nodeUniform12",
1290
- "type": "vec2"
1291
- },
1292
- {
1293
- "name": "nodeUniform13",
1294
- "type": "float"
1295
- }
1296
- ]
1297
- },
1298
- {
1299
- "access": "readWrite",
1300
- "kind": "NodeStorageBuffer",
1301
- "name": "StorageBuffer_8"
1130
+ "name": "StorageBuffer_4"
1302
1131
  },
1303
1132
  {
1304
1133
  "access": "readWrite",
1305
1134
  "kind": "NodeStorageBuffer",
1306
- "name": "StorageBuffer_9"
1135
+ "name": "StorageBuffer_5"
1307
1136
  }
1308
1137
  ],
1309
1138
  "name": "object"
@@ -1539,7 +1368,7 @@ export default {
1539
1368
  }
1540
1369
  ]
1541
1370
  ],
1542
- "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\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar3 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) faceIndex : f32,\n\t@location( 2 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tvaryings.nodeVarying5 = faceIndex;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform3 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar3 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar3;\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\n// vars\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\n\n// codes\nfn getDirection ( uv : vec2<f32>, face : f32 ) -> vec3<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\tvar nodeVar1 : vec3<f32>;\n\tvar nodeVar2 : vec2<f32>;\n\tvar nodeVar3 : vec2<f32>;\n\tvar nodeVar4 : vec2<f32>;\n\n\tnodeVar0 = uv;\n\tnodeVar0 = ( ( vec2<f32>( 2.0 ) * nodeVar0 ) - vec2<f32>( 1.0 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0, 1.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\tnodeVar2 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\tnodeVar1.x = nodeVar2[ 0 ];\n\t\t\tnodeVar1.z = nodeVar2[ 1 ];\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar1.x = ( nodeVar1.x * -1.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\t\t\tnodeVar3 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\t\t\tnodeVar1.x = nodeVar3[ 0 ];\n\t\t\t\t\tnodeVar1.z = nodeVar3[ 1 ];\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\t\t\t\tnodeVar4 = ( nodeVar1.xy * vec2<f32>( -1.0 ) );\n\t\t\t\t\t\tnodeVar1.x = nodeVar4[ 0 ];\n\t\t\t\t\t\tnodeVar1.y = nodeVar4[ 1 ];\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\tif ( ( face == 5.0 ) ) {\n\n\t\t\t\t\t\t\tnodeVar1.z = ( nodeVar1.z * -1.0 );\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32 ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = normalize( getDirection( nodeVarying4, nodeVarying5 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0.x, nodeVar0.y, nodeVar0.z );\n\tnodeVar2 = textureSampleLevel( nodeUniform0, nodeUniform0_sampler, vec2<f32>( ( ( atan2( nodeVar1.z, nodeVar1.x ) * 0.15915494309189535 ) + 0.5 ), ( ( asin( clamp( nodeVar1.y, -1.0, 1.0 ) ) * 0.3183098861837907 ) + 0.5 ) ), 0.0 );\n\n\t// result\n\n\toutput.color = nodeVar2;\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\tnodeUniform1 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar27 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) faceIndex : f32,\n\t@location( 2 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tvaryings.nodeVarying5 = faceIndex;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform5 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar27 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar27;\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 nodeUniform2_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform1 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec3<f32>;\nvar<private> nodeVar3 : f32;\nvar<private> nodeVar4 : f32;\nvar<private> nodeVar5 : f32;\nvar<private> nodeVar6 : f32;\nvar<private> nodeVar7 : f32;\nvar<private> nodeVar8 : vec2<f32>;\nvar<private> nodeVar9 : vec4<f32>;\nvar<private> nodeVar10 : vec3<f32>;\nvar<private> nodeVar11 : vec3<f32>;\nvar<private> nodeVar12 : vec3<f32>;\nvar<private> nodeVar13 : u32;\nvar<private> nodeVar14 : vec2<f32>;\nvar<private> nodeVar15 : f32;\nvar<private> nodeVar16 : vec3<f32>;\nvar<private> nodeVar17 : vec3<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : vec3<f32>;\nvar<private> nodeVar20 : f32;\nvar<private> nodeVar21 : f32;\nvar<private> nodeVar22 : f32;\nvar<private> nodeVar23 : f32;\nvar<private> nodeVar24 : f32;\nvar<private> nodeVar25 : vec2<f32>;\nvar<private> nodeVar26 : vec4<f32>;\n\n// codes\nfn getDirection ( uv : vec2<f32>, face : f32 ) -> vec3<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\tvar nodeVar1 : vec3<f32>;\n\tvar nodeVar2 : vec2<f32>;\n\tvar nodeVar3 : vec2<f32>;\n\tvar nodeVar4 : vec2<f32>;\n\n\tnodeVar0 = uv;\n\tnodeVar0 = ( ( vec2<f32>( 2.0 ) * nodeVar0 ) - vec2<f32>( 1.0 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0, 1.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\tnodeVar2 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\tnodeVar1.x = nodeVar2[ 0 ];\n\t\t\tnodeVar1.z = nodeVar2[ 1 ];\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar1.x = ( nodeVar1.x * -1.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\t\t\tnodeVar3 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\t\t\tnodeVar1.x = nodeVar3[ 0 ];\n\t\t\t\t\tnodeVar1.z = nodeVar3[ 1 ];\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\t\t\t\tnodeVar4 = ( nodeVar1.xy * vec2<f32>( -1.0 ) );\n\t\t\t\t\t\tnodeVar1.x = nodeVar4[ 0 ];\n\t\t\t\t\t\tnodeVar1.y = nodeVar4[ 1 ];\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\tif ( ( face == 5.0 ) ) {\n\n\t\t\t\t\t\t\tnodeVar1.z = ( nodeVar1.z * -1.0 );\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32 ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = normalize( getDirection( nodeVarying4, nodeVarying5 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0.x, nodeVar0.y, nodeVar0.z );\n\tnodeVar2 = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar3 = 0.0;\n\n\tif ( ( object.nodeUniform0 < 0.001 ) ) {\n\n\t\tnodeVar4 = object.nodeUniform1;\n\t\tnodeVar5 = getFace( nodeVar1 );\n\t\tnodeVar6 = max( ( 4.0 - nodeVar4 ), 0.0 );\n\t\tnodeVar4 = max( nodeVar4, 4.0 );\n\t\tnodeVar7 = exp2( nodeVar4 );\n\t\tnodeVar8 = ( ( getUV( nodeVar1, nodeVar5 ) * vec2<f32>( ( nodeVar7 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar5 > 2.0 ) ) {\n\n\t\t\tnodeVar8.y = ( nodeVar8.y + nodeVar7 );\n\t\t\tnodeVar5 = ( nodeVar5 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar8.x = ( nodeVar8.x + ( nodeVar5 * nodeVar7 ) );\n\t\tnodeVar8.x = ( nodeVar8.x + ( nodeVar6 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar8.y = ( nodeVar8.y + ( 4.0 * ( exp2( 9.0 ) - nodeVar7 ) ) );\n\t\tnodeVar8.x = ( nodeVar8.x * 0.0006510416666666666 );\n\t\tnodeVar8.y = ( nodeVar8.y * 0.00048828125 );\n\t\tnodeVar9 = textureSampleGrad( nodeUniform2, nodeUniform2_sampler, nodeVar8, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar2 = nodeVar9.xyz;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( abs( nodeVar1.z ) < 0.999 ) ) {\n\n\t\t\tnodeVar10 = vec3<f32>( 0.0, 0.0, 1.0 );\n\n\t\t} else {\n\n\t\t\tnodeVar10 = vec3<f32>( 1.0, 0.0, 0.0 );\n\n\t\t}\n\n\t\tnodeVar11 = normalize( cross( nodeVar10, nodeVar1 ) );\n\t\tnodeVar12 = cross( nodeVar1, nodeVar11 );\n\n\t\tfor ( var i : i32 = 0; i < 512; i ++ ) {\n\n\t\t\tlet nodeConst0 = ( object.nodeUniform0 * object.nodeUniform0 );\n\t\t\tlet nodeConst1 = vec3<f32>( 1.0, 0.0, 0.0 );\n\t\t\tlet nodeConst2 = cross( vec3<f32>( 0.0, 0.0, 1.0 ), nodeConst1 );\n\t\t\tnodeVar13 = u32( i );\n\t\t\tnodeVar13 = ( ( nodeVar13 << 16u ) | ( nodeVar13 >> 16u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 1431655765u ) << 1u ) | ( ( nodeVar13 & 2863311530u ) >> 1u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 858993459u ) << 2u ) | ( ( nodeVar13 & 3435973836u ) >> 2u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 252645135u ) << 4u ) | ( ( nodeVar13 & 4042322160u ) >> 4u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 16711935u ) << 8u ) | ( ( nodeVar13 & 4278255360u ) >> 8u ) );\n\t\t\tnodeVar14 = vec2<f32>( ( f32( i ) / 512.0 ), ( f32( nodeVar13 ) * 2.3283064365386963e-10 ) );\n\t\t\tlet nodeConst3 = sqrt( nodeVar14.x );\n\t\t\tlet nodeConst4 = ( ( 2.0 * 3.14159265359 ) * nodeVar14.y );\n\t\t\tlet nodeConst5 = ( nodeConst3 * cos( nodeConst4 ) );\n\t\t\tnodeVar15 = ( nodeConst3 * sin( nodeConst4 ) );\n\t\t\tlet nodeConst6 = ( 0.5 * ( vec3<f32>( 0.0, 0.0, 1.0 ).z + 1.0 ) );\n\t\t\tnodeVar15 = ( ( ( 1.0 - nodeConst6 ) * sqrt( ( 1.0 - ( nodeConst5 * nodeConst5 ) ) ) ) + ( nodeConst6 * nodeVar15 ) );\n\t\t\tnodeVar16 = ( ( ( nodeConst1 * vec3<f32>( nodeConst5 ) ) + ( nodeConst2 * vec3<f32>( nodeVar15 ) ) ) + ( vec3<f32>( 0.0, 0.0, 1.0 ) * vec3<f32>( sqrt( max( 0.0, ( 1.0 - ( ( nodeConst5 * nodeConst5 ) + ( nodeVar15 * nodeVar15 ) ) ) ) ) ) ) );\n\t\t\tnodeVar17 = normalize( vec3<f32>( ( nodeConst0 * nodeVar16.x ), ( nodeConst0 * nodeVar16.y ), max( 0.0, nodeVar16.z ) ) );\n\t\t\tnodeVar18 = normalize( ( ( ( nodeVar11 * vec3<f32>( nodeVar17.x ) ) + ( nodeVar12 * vec3<f32>( nodeVar17.y ) ) ) + ( nodeVar1 * vec3<f32>( nodeVar17.z ) ) ) );\n\t\t\tnodeVar19 = normalize( ( ( nodeVar18 * vec3<f32>( ( dot( nodeVar1, nodeVar18 ) * 2.0 ) ) ) - nodeVar1 ) );\n\t\t\tnodeVar20 = max( dot( nodeVar1, nodeVar19 ), 0.0 );\n\n\t\t\tif ( ( nodeVar20 > 0.0 ) ) {\n\n\t\t\t\tnodeVar21 = object.nodeUniform1;\n\t\t\t\tnodeVar22 = getFace( nodeVar19 );\n\t\t\t\tnodeVar23 = max( ( 4.0 - nodeVar21 ), 0.0 );\n\t\t\t\tnodeVar21 = max( nodeVar21, 4.0 );\n\t\t\t\tnodeVar24 = exp2( nodeVar21 );\n\t\t\t\tnodeVar25 = ( ( getUV( nodeVar19, nodeVar22 ) * vec2<f32>( ( nodeVar24 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\t\t\tif ( ( nodeVar22 > 2.0 ) ) {\n\n\t\t\t\t\tnodeVar25.y = ( nodeVar25.y + nodeVar24 );\n\t\t\t\t\tnodeVar22 = ( nodeVar22 - 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\tnodeVar25.x = ( nodeVar25.x + ( nodeVar22 * nodeVar24 ) );\n\t\t\t\tnodeVar25.x = ( nodeVar25.x + ( nodeVar23 * ( 3.0 * 16.0 ) ) );\n\t\t\t\tnodeVar25.y = ( nodeVar25.y + ( 4.0 * ( exp2( 9.0 ) - nodeVar24 ) ) );\n\t\t\t\tnodeVar25.x = ( nodeVar25.x * 0.0006510416666666666 );\n\t\t\t\tnodeVar25.y = ( nodeVar25.y * 0.00048828125 );\n\t\t\t\tnodeVar26 = textureSampleGrad( nodeUniform2, nodeUniform2_sampler, nodeVar25, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\t\t\tnodeVar2 = ( vec4<f32>( nodeVar2, 1.0 ) + ( nodeVar26 * vec4<f32>( nodeVar20 ) ) ).xyz;\n\t\t\t\tnodeVar3 = ( nodeVar3 + nodeVar20 );\n\t\t\t\t\n\n\t\t\t}\n\n\n\t\t}\n\n\n\t\tif ( ( nodeVar3 > 0.0 ) ) {\n\n\t\t\tnodeVar2 = ( nodeVar2 / vec3<f32>( nodeVar3 ) );\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\t// result\n\n\toutput.color = vec4<f32>( nodeVar2, 1.0 );\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};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform5 );\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec2<u32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar1 = textureDimensions( nodeUniform0, u32( 0 ) );\n\tnodeVar0 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform1 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar1 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar1 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\n\t// result\n\n\toutput.color = ( nodeVar0 * vec4<f32>( object.nodeUniform2 ) ).x;\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 : vec2<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar14 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar14 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar14;\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform2_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec2<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec2<f32>;\nvar<private> nodeVar3 : vec2<f32>;\nvar<private> nodeVar4 : vec2<f32>;\nvar<private> nodeVar5 : vec2<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : f32;\nvar<private> nodeVar8 : vec4<f32>;\nvar<private> nodeVar9 : f32;\nvar<private> nodeVar10 : vec4<f32>;\nvar<private> nodeVar11 : f32;\nvar<private> nodeVar12 : vec4<f32>;\nvar<private> nodeVar13 : f32;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform0 ) * vec2<f32>( object.nodeUniform1 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform0 );\n\tnodeVar2 = clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar3 = clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar4 = clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar5 = clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar6 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform3 * vec3<f32>( nodeVar2, 1.0 ) ).xy );\n\tnodeVar7 = nodeVar6.x;\n\tnodeVar8 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform4 * vec3<f32>( nodeVar3, 1.0 ) ).xy );\n\tnodeVar9 = nodeVar8.x;\n\tnodeVar10 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform5 * vec3<f32>( nodeVar5, 1.0 ) ).xy );\n\tnodeVar11 = nodeVar10.y;\n\tnodeVar12 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform6 * vec3<f32>( nodeVar4, 1.0 ) ).xy );\n\tnodeVar13 = nodeVar12.y;\n\n\t// result\n\n\toutput.color = vec4<f32>( ( 0.5 * ( ( ( nodeVar9 - nodeVar7 ) + nodeVar11 ) - nodeVar13 ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : vec2<f32>,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform9 : mat3x3<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 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar9 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar9 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar9;\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n@binding( 2 ) @group( 1 ) var nodeUniform8 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : vec2<f32>,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform9 : mat3x3<f32>,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec2<u32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec2<u32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform3 ) * vec2<f32>( object.nodeUniform4 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform3 );\n\tnodeVar3 = textureDimensions( nodeUniform1, u32( 0 ) );\n\tnodeVar2 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform2 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar5 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform7 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar8 = textureDimensions( nodeUniform8, u32( 0 ) );\n\tnodeVar7 = textureLoad( nodeUniform8, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform9 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar8 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar8 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( object.nodeUniform0 * ( ( ( ( nodeVar2.x + nodeVar4.x ) + nodeVar5.x ) + nodeVar6.x ) - nodeVar7.x ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform10 : mat3x3<f32>,\n\tnodeUniform11 : f32,\n\tnodeUniform14 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar10 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform14 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar10 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar10;\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: vec2<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n@binding( 2 ) @group( 1 ) var nodeUniform9_sampler : sampler;\n@binding( 3 ) @group( 1 ) var nodeUniform9 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform10 : mat3x3<f32>,\n\tnodeUniform11 : f32,\n\tnodeUniform14 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec2<u32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec2<f32>;\nvar<private> nodeVar8 : vec4<f32>;\nvar<private> nodeVar9 : vec4<f32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform2 ) * vec2<f32>( object.nodeUniform3 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform2 );\n\tnodeVar3 = textureDimensions( nodeUniform0, u32( 0 ) );\n\tnodeVar2 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform4 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar5 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = ( vec2<f32>( ( abs( nodeVar2.x ) - abs( nodeVar4.x ) ), ( abs( nodeVar5.x ) - abs( nodeVar6.x ) ) ) * vec2<f32>( 0.5 ) );\n\tnodeVar7 = ( nodeVar7 / vec2<f32>( ( length( nodeVar7 ) + 0.0001 ) ) );\n\tnodeVar8 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform8 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = ( nodeVar7 * vec2<f32>( ( object.nodeUniform7 * clamp( nodeVar8.x, -100.0, 100.0 ) ) ) );\n\tnodeVar7.y = ( - nodeVar7.y );\n\tnodeVar9 = textureSample( nodeUniform9, nodeUniform9_sampler, ( object.nodeUniform10 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar9.xy + ( nodeVar7 * vec2<f32>( object.nodeUniform11 ) ) ), 0.0, 1.0 ).xy;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : vec2<f32>,\n\tnodeUniform6 : f32,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\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@binding( 3 ) @group( 1 ) var nodeUniform3_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform3 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : vec2<f32>,\n\tnodeUniform6 : f32,\n\tnodeUniform9 : 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\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform3, nodeUniform3_sampler, ( object.nodeUniform4 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 - ( vec2<f32>( object.nodeUniform2 ) * ( ( nodeVar0.xy * vec2<f32>( clamp( ( 500.0 / max( length( nodeVar0.xy ), 500.0 ) ), 0.0, 1.0 ) ) ) * ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform5 ) ) ) ), vec2<f32>( 0.0 ), vec2<f32>( 1.0 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar1 * vec4<f32>( object.nodeUniform6 ) ).xyz, 1.0 );\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar6 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar6 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar6;\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: 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 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform2 ) * vec2<f32>( object.nodeUniform3 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform2 );\n\tnodeVar2 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar3 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform4 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar4 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar5 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( 0.5 * ( ( ( nodeVar2.y - nodeVar3.y ) - nodeVar4.x ) + nodeVar5.x ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform8 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform8 );\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: vec2<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 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform8 : 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\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform3 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 - ( vec2<f32>( object.nodeUniform2 ) * ( ( nodeVar0.xy * vec2<f32>( clamp( ( 500.0 / max( length( nodeVar0.xy ), 500.0 ) ), 0.0, 1.0 ) ) ) * ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform4 ) ) ) ), vec2<f32>( 0.0 ), vec2<f32>( 1.0 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar1 * vec4<f32>( object.nodeUniform5 ) ).xy, 0.0, 1.0 ).xy;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform11 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar9 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform11 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar9 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar9;\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: vec2<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@binding( 3 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform11 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec2<f32>;\nvar<private> nodeVar3 : vec2<f32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec2<u32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec4<f32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = nodeVar0.xy;\n\tnodeVar2 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform4 ) * vec2<f32>( object.nodeUniform5 ) );\n\tnodeVar3 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform4 );\n\tnodeVar5 = textureDimensions( nodeUniform2, u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform3 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar2.x, 0.0 ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar2.x, 0.0 ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform7 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar2.y ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar8 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform8 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar2.y ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar1 = ( nodeVar1 - ( vec2<f32>( ( nodeVar4.x - nodeVar6.x ), ( nodeVar7.x - nodeVar8.x ) ) * vec2<f32>( 0.5 ) ) );\n\n\t// result\n\n\toutput.color = vec4<f32>( nodeVar1, 0.0, 1.0 ).xy;\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\tcameraWorldMatrix : mat4x4<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\tnodeUniform21 : f32,\n\tnodeUniform22 : mat4x4<f32>,\n\tnodeUniform24 : f32,\n\tnodeUniform25 : f32,\n\tnodeUniform27 : 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_nodeVar184 : 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_nodeVar184 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar184;\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@binding( 3 ) @group( 1 ) var nodeUniform26_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform26 : 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\tnodeUniform21 : f32,\n\tnodeUniform22 : mat4x4<f32>,\n\tnodeUniform24 : f32,\n\tnodeUniform25 : f32,\n\tnodeUniform27 : 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\tcameraWorldMatrix : mat4x4<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> radiance : vec3<f32>;\nvar<private> nodeVar71 : f32;\nvar<private> nodeVar72 : f32;\nvar<private> nodeVar73 : f32;\nvar<private> nodeVar74 : vec3<f32>;\nvar<private> nodeVar75 : f32;\nvar<private> nodeVar76 : f32;\nvar<private> nodeVar77 : f32;\nvar<private> nodeVar78 : vec2<f32>;\nvar<private> nodeVar79 : vec4<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> nodeVar81 : f32;\nvar<private> nodeVar82 : f32;\nvar<private> nodeVar83 : f32;\nvar<private> nodeVar84 : f32;\nvar<private> nodeVar85 : f32;\nvar<private> nodeVar86 : vec2<f32>;\nvar<private> nodeVar87 : vec4<f32>;\nvar<private> nodeVar88 : vec3<f32>;\nvar<private> nodeVar89 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar90 : f32;\nvar<private> nodeVar91 : f32;\nvar<private> nodeVar92 : f32;\nvar<private> normalWorld : vec3<f32>;\nvar<private> nodeVar93 : f32;\nvar<private> nodeVar94 : f32;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : vec2<f32>;\nvar<private> nodeVar97 : vec4<f32>;\nvar<private> nodeVar98 : vec3<f32>;\nvar<private> nodeVar99 : f32;\nvar<private> nodeVar100 : f32;\nvar<private> nodeVar101 : f32;\nvar<private> nodeVar102 : f32;\nvar<private> nodeVar103 : f32;\nvar<private> nodeVar104 : vec2<f32>;\nvar<private> nodeVar105 : vec4<f32>;\nvar<private> nodeVar106 : vec3<f32>;\nvar<private> nodeVar107 : vec3<f32>;\nvar<private> nodeVar108 : vec3<f32>;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar112 : f32;\nvar<private> nodeVar113 : vec4<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> nodeVar115 : f32;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : 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 : f32;\nvar<private> nodeVar124 : f32;\nvar<private> nodeVar125 : f32;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : vec3<f32>;\nvar<private> nodeVar132 : f32;\nvar<private> nodeVar133 : vec4<f32>;\nvar<private> nodeVar134 : vec3<f32>;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : vec3<f32>;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : f32;\nvar<private> nodeVar145 : f32;\nvar<private> nodeVar146 : vec3<f32>;\nvar<private> nodeVar147 : vec3<f32>;\nvar<private> nodeVar148 : vec3<f32>;\nvar<private> nodeVar149 : vec3<f32>;\nvar<private> nodeVar150 : vec3<f32>;\nvar<private> nodeVar151 : vec3<f32>;\nvar<private> nodeVar152 : vec3<f32>;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> nodeVar154 : vec3<f32>;\nvar<private> nodeVar155 : vec3<f32>;\nvar<private> nodeVar156 : vec3<f32>;\nvar<private> nodeVar157 : vec3<f32>;\nvar<private> nodeVar158 : vec3<f32>;\nvar<private> nodeVar159 : vec3<f32>;\nvar<private> nodeVar160 : vec3<f32>;\nvar<private> nodeVar161 : vec3<f32>;\nvar<private> nodeVar162 : vec3<f32>;\nvar<private> nodeVar163 : vec3<f32>;\nvar<private> nodeVar164 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar165 : vec3<f32>;\nvar<private> nodeVar166 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar167 : vec3<f32>;\nvar<private> nodeVar168 : f32;\nvar<private> nodeVar169 : f32;\nvar<private> nodeVar170 : f32;\nvar<private> nodeVar171 : f32;\nvar<private> nodeVar172 : f32;\nvar<private> nodeVar173 : f32;\nvar<private> nodeVar174 : f32;\nvar<private> nodeVar175 : f32;\nvar<private> nodeVar176 : f32;\nvar<private> nodeVar177 : f32;\nvar<private> nodeVar178 : f32;\nvar<private> nodeVar179 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar180 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar181 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar182 : vec3<f32>;\nvar<private> nodeVar183 : 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\nfn roughnessToMip ( roughness : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = 0.0;\n\n\tif ( ( roughness >= 0.8 ) ) {\n\n\t\tnodeVar0 = ( ( ( ( 1.0 - roughness ) * ( -1.0 - -2.0 ) ) / ( 1.0 - 0.8 ) ) + -2.0 );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( roughness >= 0.4 ) ) {\n\n\t\t\tnodeVar0 = ( ( ( ( 0.8 - roughness ) * ( 2.0 - -1.0 ) ) / ( 0.8 - 0.4 ) ) + -1.0 );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( roughness >= 0.305 ) ) {\n\n\t\t\t\tnodeVar0 = ( ( ( ( 0.4 - roughness ) * ( 3.0 - 2.0 ) ) / ( 0.4 - 0.305 ) ) + 2.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( roughness >= 0.21 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( ( ( ( 0.305 - roughness ) * ( 4.0 - 3.0 ) ) / ( 0.305 - 0.21 ) ) + 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnodeVar0 = ( -2.0 * log2( ( 1.16 * roughness ) ) );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\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\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar71 = clamp( roughnessToMip( Roughness ), -2.0, object.nodeUniform21 );\n\tnodeVar72 = floor( nodeVar71 );\n\tnodeVar73 = nodeVar72;\n\tnodeVar74 = normalize( ( render.cameraWorldMatrix * vec4<f32>( normalize( mix( reflect( ( - positionViewDirection ), normalView ), normalView, ( ( ( Roughness * Roughness ) * Roughness ) * Roughness ) ) ), 0.0 ) ).xyz );\n\tnodeVar75 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz );\n\tnodeVar76 = max( ( 4.0 - nodeVar73 ), 0.0 );\n\tnodeVar73 = max( nodeVar73, 4.0 );\n\tnodeVar77 = exp2( nodeVar73 );\n\tnodeVar78 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz, nodeVar75 ) * vec2<f32>( ( nodeVar77 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar75 > 2.0 ) ) {\n\n\t\tnodeVar78.y = ( nodeVar78.y + nodeVar77 );\n\t\tnodeVar75 = ( nodeVar75 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar78.x = ( nodeVar78.x + ( nodeVar75 * nodeVar77 ) );\n\tnodeVar78.x = ( nodeVar78.x + ( nodeVar76 * ( 3.0 * 16.0 ) ) );\n\tnodeVar78.y = ( nodeVar78.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar77 ) ) );\n\tnodeVar78.x = ( nodeVar78.x * object.nodeUniform24 );\n\tnodeVar78.y = ( nodeVar78.y * object.nodeUniform25 );\n\tnodeVar79 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar78, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar80 = nodeVar79.xyz;\n\tnodeVar81 = fract( nodeVar71 );\n\n\tif ( ( nodeVar81 != 0.0 ) ) {\n\n\t\tnodeVar82 = ( nodeVar72 + 1.0 );\n\t\tnodeVar83 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz );\n\t\tnodeVar84 = max( ( 4.0 - nodeVar82 ), 0.0 );\n\t\tnodeVar82 = max( nodeVar82, 4.0 );\n\t\tnodeVar85 = exp2( nodeVar82 );\n\t\tnodeVar86 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz, nodeVar83 ) * vec2<f32>( ( nodeVar85 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar83 > 2.0 ) ) {\n\n\t\t\tnodeVar86.y = ( nodeVar86.y + nodeVar85 );\n\t\t\tnodeVar83 = ( nodeVar83 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar86.x = ( nodeVar86.x + ( nodeVar83 * nodeVar85 ) );\n\t\tnodeVar86.x = ( nodeVar86.x + ( nodeVar84 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar86.y = ( nodeVar86.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar85 ) ) );\n\t\tnodeVar86.x = ( nodeVar86.x * object.nodeUniform24 );\n\t\tnodeVar86.y = ( nodeVar86.y * object.nodeUniform25 );\n\t\tnodeVar87 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar86, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar88 = nodeVar87.xyz;\n\t\tnodeVar80 = mix( nodeVar80, nodeVar88, nodeVar81 );\n\t\t\n\n\t}\n\n\tnodeVar89 = ( radiance + ( nodeVar80 * vec3<f32>( object.nodeUniform27 ) ) );\n\tradiance = nodeVar89;\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar90 = clamp( roughnessToMip( 1.0 ), -2.0, object.nodeUniform21 );\n\tnodeVar91 = floor( nodeVar90 );\n\tnodeVar92 = nodeVar91;\n\tnormalWorld = normalize( ( vec4<f32>( normalView, 0.0 ) * render.cameraViewMatrix ).xyz );\n\tnodeVar93 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\tnodeVar94 = max( ( 4.0 - nodeVar92 ), 0.0 );\n\tnodeVar92 = max( nodeVar92, 4.0 );\n\tnodeVar95 = exp2( nodeVar92 );\n\tnodeVar96 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar93 ) * vec2<f32>( ( nodeVar95 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar93 > 2.0 ) ) {\n\n\t\tnodeVar96.y = ( nodeVar96.y + nodeVar95 );\n\t\tnodeVar93 = ( nodeVar93 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar96.x = ( nodeVar96.x + ( nodeVar93 * nodeVar95 ) );\n\tnodeVar96.x = ( nodeVar96.x + ( nodeVar94 * ( 3.0 * 16.0 ) ) );\n\tnodeVar96.y = ( nodeVar96.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar95 ) ) );\n\tnodeVar96.x = ( nodeVar96.x * object.nodeUniform24 );\n\tnodeVar96.y = ( nodeVar96.y * object.nodeUniform25 );\n\tnodeVar97 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar96, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar98 = nodeVar97.xyz;\n\tnodeVar99 = fract( nodeVar90 );\n\n\tif ( ( nodeVar99 != 0.0 ) ) {\n\n\t\tnodeVar100 = ( nodeVar91 + 1.0 );\n\t\tnodeVar101 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\t\tnodeVar102 = max( ( 4.0 - nodeVar100 ), 0.0 );\n\t\tnodeVar100 = max( nodeVar100, 4.0 );\n\t\tnodeVar103 = exp2( nodeVar100 );\n\t\tnodeVar104 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar101 ) * vec2<f32>( ( nodeVar103 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar101 > 2.0 ) ) {\n\n\t\t\tnodeVar104.y = ( nodeVar104.y + nodeVar103 );\n\t\t\tnodeVar101 = ( nodeVar101 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar104.x = ( nodeVar104.x + ( nodeVar101 * nodeVar103 ) );\n\t\tnodeVar104.x = ( nodeVar104.x + ( nodeVar102 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar104.y = ( nodeVar104.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar103 ) ) );\n\t\tnodeVar104.x = ( nodeVar104.x * object.nodeUniform24 );\n\t\tnodeVar104.y = ( nodeVar104.y * object.nodeUniform25 );\n\t\tnodeVar105 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar104, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar106 = nodeVar105.xyz;\n\t\tnodeVar98 = mix( nodeVar98, nodeVar106, nodeVar99 );\n\t\t\n\n\t}\n\n\tnodeVar107 = ( iblIrradiance + ( ( nodeVar98 * vec3<f32>( 3.141592653589793 ) ) * vec3<f32>( object.nodeUniform27 ) ) );\n\tiblIrradiance = nodeVar107;\n\tnodeVar108 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar109 = ( irradiance * nodeVar108 );\n\tnodeVar110 = nodeVar109;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar111 = ( indirectDiffuse + nodeVar110 );\n\tindirectDiffuse = nodeVar111;\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\tnodeVar112 = dot( normalView, positionViewDirection );\n\tnodeVar113 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar112, 0.0, 1.0 ) ) );\n\tnodeVar114 = ( SpecularColor * vec3<f32>( nodeVar113.xy.x ) );\n\tnodeVar115 = ( SpecularF90 * nodeVar113.xy.y );\n\tnodeVar116 = ( nodeVar114 + vec3<f32>( nodeVar115 ) );\n\tnodeVar117 = ( singleScatteringDielectric + nodeVar116 );\n\tsingleScatteringDielectric = nodeVar117;\n\tnodeVar118 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar119 = nodeVar118;\n\tnodeVar120 = ( nodeVar119 * vec3<f32>( 0.047619 ) );\n\tnodeVar121 = ( SpecularColor + nodeVar120 );\n\tnodeVar122 = ( nodeVar116 * nodeVar121 );\n\tnodeVar123 = ( nodeVar113.xy.x + nodeVar113.xy.y );\n\tnodeVar124 = ( 1.0 - nodeVar123 );\n\tnodeVar125 = nodeVar124;\n\tnodeVar126 = ( vec3<f32>( nodeVar125 ) * nodeVar121 );\n\tnodeVar127 = ( vec3<f32>( 1.0 ) - nodeVar126 );\n\tnodeVar128 = nodeVar127;\n\tnodeVar129 = ( nodeVar122 / nodeVar128 );\n\tnodeVar130 = ( nodeVar129 * vec3<f32>( nodeVar125 ) );\n\tnodeVar131 = ( multiScatteringDielectric + nodeVar130 );\n\tmultiScatteringDielectric = nodeVar131;\n\tnodeVar132 = dot( normalView, positionViewDirection );\n\tnodeVar133 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar132, 0.0, 1.0 ) ) );\n\tnodeVar134 = ( DiffuseColor.xyz * vec3<f32>( nodeVar133.xy.x ) );\n\tnodeVar135 = ( SpecularF90 * nodeVar133.xy.y );\n\tnodeVar136 = ( nodeVar134 + vec3<f32>( nodeVar135 ) );\n\tnodeVar137 = ( singleScatteringMetallic + nodeVar136 );\n\tsingleScatteringMetallic = nodeVar137;\n\tnodeVar138 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar139 = nodeVar138;\n\tnodeVar140 = ( nodeVar139 * vec3<f32>( 0.047619 ) );\n\tnodeVar141 = ( DiffuseColor.xyz + nodeVar140 );\n\tnodeVar142 = ( nodeVar136 * nodeVar141 );\n\tnodeVar143 = ( nodeVar133.xy.x + nodeVar133.xy.y );\n\tnodeVar144 = ( 1.0 - nodeVar143 );\n\tnodeVar145 = nodeVar144;\n\tnodeVar146 = ( vec3<f32>( nodeVar145 ) * nodeVar141 );\n\tnodeVar147 = ( vec3<f32>( 1.0 ) - nodeVar146 );\n\tnodeVar148 = nodeVar147;\n\tnodeVar149 = ( nodeVar142 / nodeVar148 );\n\tnodeVar150 = ( nodeVar149 * vec3<f32>( nodeVar145 ) );\n\tnodeVar151 = ( multiScatteringMetallic + nodeVar150 );\n\tmultiScatteringMetallic = nodeVar151;\n\tnodeVar152 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar153 = ( radiance * nodeVar152 );\n\tnodeVar154 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tnodeVar155 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar156 = ( nodeVar154 * nodeVar155 );\n\tnodeVar157 = ( nodeVar153 + nodeVar156 );\n\tnodeVar158 = nodeVar157;\n\tnodeVar159 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar160 = ( vec3<f32>( 1.0 ) - nodeVar159 );\n\tnodeVar161 = nodeVar160;\n\tnodeVar162 = ( DiffuseContribution * nodeVar161 );\n\tnodeVar163 = ( nodeVar162 * nodeVar155 );\n\tnodeVar164 = nodeVar163;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar165 = ( indirectSpecular + nodeVar158 );\n\tindirectSpecular = nodeVar165;\n\tnodeVar166 = ( indirectDiffuse + nodeVar164 );\n\tindirectDiffuse = nodeVar166;\n\tambientOcclusion = 1.0;\n\tnodeVar167 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar167;\n\tnodeVar168 = dot( normalView, positionViewDirection );\n\tnodeVar169 = ( clamp( nodeVar168, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar170 = ( Roughness * -16.0 );\n\tnodeVar171 = ( 1.0 - nodeVar170 );\n\tnodeVar172 = nodeVar171;\n\tnodeVar173 = ( - nodeVar172 );\n\tnodeVar174 = exp2( nodeVar173 );\n\tnodeVar175 = pow( nodeVar169, nodeVar174 );\n\tnodeVar176 = ( 1.0 - nodeVar175 );\n\tnodeVar177 = nodeVar176;\n\tnodeVar178 = ( ambientOcclusion - nodeVar177 );\n\tnodeVar179 = ( indirectSpecular * vec3<f32>( clamp( nodeVar178, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar179;\n\tnodeVar180 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar180;\n\tnodeVar181 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar181;\n\tnodeVar182 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar182;\n\tnodeVar183 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar183;\n\n\t// result\n\n\toutput.color = nodeVar183;\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_1227Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1227 : NodeBuffer_1227Struct;\n\nstruct NodeBuffer_1208Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1208 : NodeBuffer_1208Struct;\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_1227.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1208.value[ nodeVar10 ], NodeBuffer_1208.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1208.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1208.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_1055Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1055 : NodeBuffer_1055Struct;\n\nstruct NodeBuffer_1036Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1036 : NodeBuffer_1036Struct;\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_1055.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1036.value[ nodeVar10 ], NodeBuffer_1036.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1036.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1036.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_1569Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1569 : NodeBuffer_1569Struct;\n\nstruct NodeBuffer_1550Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1550 : NodeBuffer_1550Struct;\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_1569.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1550.value[ nodeVar10 ], NodeBuffer_1550.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1550.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1550.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_1398Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1398 : NodeBuffer_1398Struct;\n\nstruct NodeBuffer_1379Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1379 : NodeBuffer_1379Struct;\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_1398.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1379.value[ nodeVar10 ], NodeBuffer_1379.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1379.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1379.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};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 4 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar3 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform4 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar3 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar3;\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@binding( 2 ) @group( 1 ) var nodeUniform1_sampler : sampler;\n@binding( 3 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec4<f32>;\nvar<private> nodeVar2 : 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( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform1, nodeUniform1_sampler, nodeVarying4 );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( nodeVarying4 - ( nodeVar0.xy * vec2<f32>( 0.00003 ) ) ) );\n\tnodeVar2 = fn1( vec4<f32>( nodeVar1.xyz, clamp( nodeVar1.w, 0.0, 1.0 ) ) );\n\n\t// result\n\n\toutput.color = fn0( vec4<f32>( sRGBTransferOETF( nodeVar2.xyz ), nodeVar2.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\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\tcameraWorldMatrix : mat4x4<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\tnodeUniform27 : f32,\n\tnodeUniform28 : mat4x4<f32>,\n\tnodeUniform30 : f32,\n\tnodeUniform31 : f32,\n\tnodeUniform33 : 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_nodeVar195 : 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_nodeVar195 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar195;\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@binding( 5 ) @group( 1 ) var nodeUniform32_sampler : sampler;\n@binding( 6 ) @group( 1 ) var nodeUniform32 : 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\tnodeUniform27 : f32,\n\tnodeUniform28 : mat4x4<f32>,\n\tnodeUniform30 : f32,\n\tnodeUniform31 : f32,\n\tnodeUniform33 : 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\tcameraWorldMatrix : mat4x4<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> radiance : vec3<f32>;\nvar<private> nodeVar82 : f32;\nvar<private> nodeVar83 : f32;\nvar<private> nodeVar84 : f32;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : f32;\nvar<private> nodeVar88 : f32;\nvar<private> nodeVar89 : vec2<f32>;\nvar<private> nodeVar90 : vec4<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : f32;\nvar<private> nodeVar93 : f32;\nvar<private> nodeVar94 : f32;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : f32;\nvar<private> nodeVar97 : vec2<f32>;\nvar<private> nodeVar98 : vec4<f32>;\nvar<private> nodeVar99 : vec3<f32>;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar101 : f32;\nvar<private> nodeVar102 : f32;\nvar<private> nodeVar103 : f32;\nvar<private> nodeVar104 : f32;\nvar<private> nodeVar105 : f32;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : vec2<f32>;\nvar<private> nodeVar108 : vec4<f32>;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : f32;\nvar<private> nodeVar111 : f32;\nvar<private> nodeVar112 : f32;\nvar<private> nodeVar113 : f32;\nvar<private> nodeVar114 : f32;\nvar<private> nodeVar115 : vec2<f32>;\nvar<private> nodeVar116 : vec4<f32>;\nvar<private> nodeVar117 : vec3<f32>;\nvar<private> nodeVar118 : vec3<f32>;\nvar<private> nodeVar119 : vec3<f32>;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar123 : f32;\nvar<private> nodeVar124 : vec4<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> nodeVar126 : f32;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : 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 : f32;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : f32;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : vec4<f32>;\nvar<private> nodeVar145 : vec3<f32>;\nvar<private> nodeVar146 : f32;\nvar<private> nodeVar147 : vec3<f32>;\nvar<private> nodeVar148 : vec3<f32>;\nvar<private> nodeVar149 : vec3<f32>;\nvar<private> nodeVar150 : vec3<f32>;\nvar<private> nodeVar151 : vec3<f32>;\nvar<private> nodeVar152 : vec3<f32>;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> nodeVar154 : f32;\nvar<private> nodeVar155 : f32;\nvar<private> nodeVar156 : f32;\nvar<private> nodeVar157 : vec3<f32>;\nvar<private> nodeVar158 : vec3<f32>;\nvar<private> nodeVar159 : vec3<f32>;\nvar<private> nodeVar160 : vec3<f32>;\nvar<private> nodeVar161 : vec3<f32>;\nvar<private> nodeVar162 : vec3<f32>;\nvar<private> nodeVar163 : vec3<f32>;\nvar<private> nodeVar164 : vec3<f32>;\nvar<private> nodeVar165 : vec3<f32>;\nvar<private> nodeVar166 : vec3<f32>;\nvar<private> nodeVar167 : vec3<f32>;\nvar<private> nodeVar168 : vec3<f32>;\nvar<private> nodeVar169 : vec3<f32>;\nvar<private> nodeVar170 : vec3<f32>;\nvar<private> nodeVar171 : vec3<f32>;\nvar<private> nodeVar172 : vec3<f32>;\nvar<private> nodeVar173 : vec3<f32>;\nvar<private> nodeVar174 : vec3<f32>;\nvar<private> nodeVar175 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar176 : vec3<f32>;\nvar<private> nodeVar177 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar178 : vec3<f32>;\nvar<private> nodeVar179 : f32;\nvar<private> nodeVar180 : f32;\nvar<private> nodeVar181 : f32;\nvar<private> nodeVar182 : f32;\nvar<private> nodeVar183 : f32;\nvar<private> nodeVar184 : f32;\nvar<private> nodeVar185 : f32;\nvar<private> nodeVar186 : f32;\nvar<private> nodeVar187 : f32;\nvar<private> nodeVar188 : f32;\nvar<private> nodeVar189 : f32;\nvar<private> nodeVar190 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar191 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar192 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar193 : vec3<f32>;\nvar<private> nodeVar194 : 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\nfn roughnessToMip ( roughness : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = 0.0;\n\n\tif ( ( roughness >= 0.8 ) ) {\n\n\t\tnodeVar0 = ( ( ( ( 1.0 - roughness ) * ( -1.0 - -2.0 ) ) / ( 1.0 - 0.8 ) ) + -2.0 );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( roughness >= 0.4 ) ) {\n\n\t\t\tnodeVar0 = ( ( ( ( 0.8 - roughness ) * ( 2.0 - -1.0 ) ) / ( 0.8 - 0.4 ) ) + -1.0 );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( roughness >= 0.305 ) ) {\n\n\t\t\t\tnodeVar0 = ( ( ( ( 0.4 - roughness ) * ( 3.0 - 2.0 ) ) / ( 0.4 - 0.305 ) ) + 2.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( roughness >= 0.21 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( ( ( ( 0.305 - roughness ) * ( 4.0 - 3.0 ) ) / ( 0.305 - 0.21 ) ) + 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnodeVar0 = ( -2.0 * log2( ( 1.16 * roughness ) ) );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\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\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar82 = clamp( roughnessToMip( Roughness ), -2.0, object.nodeUniform27 );\n\tnodeVar83 = floor( nodeVar82 );\n\tnodeVar84 = nodeVar83;\n\tnodeVar85 = normalize( ( render.cameraWorldMatrix * vec4<f32>( normalize( mix( reflect( ( - positionViewDirection ), normalView ), normalView, ( ( ( Roughness * Roughness ) * Roughness ) * Roughness ) ) ), 0.0 ) ).xyz );\n\tnodeVar86 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz );\n\tnodeVar87 = max( ( 4.0 - nodeVar84 ), 0.0 );\n\tnodeVar84 = max( nodeVar84, 4.0 );\n\tnodeVar88 = exp2( nodeVar84 );\n\tnodeVar89 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz, nodeVar86 ) * vec2<f32>( ( nodeVar88 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar86 > 2.0 ) ) {\n\n\t\tnodeVar89.y = ( nodeVar89.y + nodeVar88 );\n\t\tnodeVar86 = ( nodeVar86 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar89.x = ( nodeVar89.x + ( nodeVar86 * nodeVar88 ) );\n\tnodeVar89.x = ( nodeVar89.x + ( nodeVar87 * ( 3.0 * 16.0 ) ) );\n\tnodeVar89.y = ( nodeVar89.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar88 ) ) );\n\tnodeVar89.x = ( nodeVar89.x * object.nodeUniform30 );\n\tnodeVar89.y = ( nodeVar89.y * object.nodeUniform31 );\n\tnodeVar90 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar89, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar91 = nodeVar90.xyz;\n\tnodeVar92 = fract( nodeVar82 );\n\n\tif ( ( nodeVar92 != 0.0 ) ) {\n\n\t\tnodeVar93 = ( nodeVar83 + 1.0 );\n\t\tnodeVar94 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz );\n\t\tnodeVar95 = max( ( 4.0 - nodeVar93 ), 0.0 );\n\t\tnodeVar93 = max( nodeVar93, 4.0 );\n\t\tnodeVar96 = exp2( nodeVar93 );\n\t\tnodeVar97 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz, nodeVar94 ) * vec2<f32>( ( nodeVar96 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar94 > 2.0 ) ) {\n\n\t\t\tnodeVar97.y = ( nodeVar97.y + nodeVar96 );\n\t\t\tnodeVar94 = ( nodeVar94 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar97.x = ( nodeVar97.x + ( nodeVar94 * nodeVar96 ) );\n\t\tnodeVar97.x = ( nodeVar97.x + ( nodeVar95 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar97.y = ( nodeVar97.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar96 ) ) );\n\t\tnodeVar97.x = ( nodeVar97.x * object.nodeUniform30 );\n\t\tnodeVar97.y = ( nodeVar97.y * object.nodeUniform31 );\n\t\tnodeVar98 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar97, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar99 = nodeVar98.xyz;\n\t\tnodeVar91 = mix( nodeVar91, nodeVar99, nodeVar92 );\n\t\t\n\n\t}\n\n\tnodeVar100 = ( radiance + ( nodeVar91 * vec3<f32>( object.nodeUniform33 ) ) );\n\tradiance = nodeVar100;\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar101 = clamp( roughnessToMip( 1.0 ), -2.0, object.nodeUniform27 );\n\tnodeVar102 = floor( nodeVar101 );\n\tnodeVar103 = nodeVar102;\n\tnodeVar104 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\tnodeVar105 = max( ( 4.0 - nodeVar103 ), 0.0 );\n\tnodeVar103 = max( nodeVar103, 4.0 );\n\tnodeVar106 = exp2( nodeVar103 );\n\tnodeVar107 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar104 ) * vec2<f32>( ( nodeVar106 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar104 > 2.0 ) ) {\n\n\t\tnodeVar107.y = ( nodeVar107.y + nodeVar106 );\n\t\tnodeVar104 = ( nodeVar104 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar107.x = ( nodeVar107.x + ( nodeVar104 * nodeVar106 ) );\n\tnodeVar107.x = ( nodeVar107.x + ( nodeVar105 * ( 3.0 * 16.0 ) ) );\n\tnodeVar107.y = ( nodeVar107.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar106 ) ) );\n\tnodeVar107.x = ( nodeVar107.x * object.nodeUniform30 );\n\tnodeVar107.y = ( nodeVar107.y * object.nodeUniform31 );\n\tnodeVar108 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar107, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar109 = nodeVar108.xyz;\n\tnodeVar110 = fract( nodeVar101 );\n\n\tif ( ( nodeVar110 != 0.0 ) ) {\n\n\t\tnodeVar111 = ( nodeVar102 + 1.0 );\n\t\tnodeVar112 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\t\tnodeVar113 = max( ( 4.0 - nodeVar111 ), 0.0 );\n\t\tnodeVar111 = max( nodeVar111, 4.0 );\n\t\tnodeVar114 = exp2( nodeVar111 );\n\t\tnodeVar115 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar112 ) * vec2<f32>( ( nodeVar114 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar112 > 2.0 ) ) {\n\n\t\t\tnodeVar115.y = ( nodeVar115.y + nodeVar114 );\n\t\t\tnodeVar112 = ( nodeVar112 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar115.x = ( nodeVar115.x + ( nodeVar112 * nodeVar114 ) );\n\t\tnodeVar115.x = ( nodeVar115.x + ( nodeVar113 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar115.y = ( nodeVar115.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar114 ) ) );\n\t\tnodeVar115.x = ( nodeVar115.x * object.nodeUniform30 );\n\t\tnodeVar115.y = ( nodeVar115.y * object.nodeUniform31 );\n\t\tnodeVar116 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar115, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar117 = nodeVar116.xyz;\n\t\tnodeVar109 = mix( nodeVar109, nodeVar117, nodeVar110 );\n\t\t\n\n\t}\n\n\tnodeVar118 = ( iblIrradiance + ( ( nodeVar109 * vec3<f32>( 3.141592653589793 ) ) * vec3<f32>( object.nodeUniform33 ) ) );\n\tiblIrradiance = nodeVar118;\n\tnodeVar119 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar120 = ( irradiance * nodeVar119 );\n\tnodeVar121 = nodeVar120;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar122 = ( indirectDiffuse + nodeVar121 );\n\tindirectDiffuse = nodeVar122;\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\tnodeVar123 = dot( normalView, positionViewDirection );\n\tnodeVar124 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar123, 0.0, 1.0 ) ) );\n\tnodeVar125 = ( SpecularColor * vec3<f32>( nodeVar124.xy.x ) );\n\tnodeVar126 = ( SpecularF90 * nodeVar124.xy.y );\n\tnodeVar127 = ( nodeVar125 + vec3<f32>( nodeVar126 ) );\n\tnodeVar128 = ( singleScatteringDielectric + nodeVar127 );\n\tsingleScatteringDielectric = nodeVar128;\n\tnodeVar129 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar130 = nodeVar129;\n\tnodeVar131 = ( nodeVar130 * vec3<f32>( 0.047619 ) );\n\tnodeVar132 = ( SpecularColor + nodeVar131 );\n\tnodeVar133 = ( nodeVar127 * nodeVar132 );\n\tnodeVar134 = ( nodeVar124.xy.x + nodeVar124.xy.y );\n\tnodeVar135 = ( 1.0 - nodeVar134 );\n\tnodeVar136 = nodeVar135;\n\tnodeVar137 = ( vec3<f32>( nodeVar136 ) * nodeVar132 );\n\tnodeVar138 = ( vec3<f32>( 1.0 ) - nodeVar137 );\n\tnodeVar139 = nodeVar138;\n\tnodeVar140 = ( nodeVar133 / nodeVar139 );\n\tnodeVar141 = ( nodeVar140 * vec3<f32>( nodeVar136 ) );\n\tnodeVar142 = ( multiScatteringDielectric + nodeVar141 );\n\tmultiScatteringDielectric = nodeVar142;\n\tnodeVar143 = dot( normalView, positionViewDirection );\n\tnodeVar144 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar143, 0.0, 1.0 ) ) );\n\tnodeVar145 = ( DiffuseColor.xyz * vec3<f32>( nodeVar144.xy.x ) );\n\tnodeVar146 = ( SpecularF90 * nodeVar144.xy.y );\n\tnodeVar147 = ( nodeVar145 + vec3<f32>( nodeVar146 ) );\n\tnodeVar148 = ( singleScatteringMetallic + nodeVar147 );\n\tsingleScatteringMetallic = nodeVar148;\n\tnodeVar149 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar150 = nodeVar149;\n\tnodeVar151 = ( nodeVar150 * vec3<f32>( 0.047619 ) );\n\tnodeVar152 = ( DiffuseColor.xyz + nodeVar151 );\n\tnodeVar153 = ( nodeVar147 * nodeVar152 );\n\tnodeVar154 = ( nodeVar144.xy.x + nodeVar144.xy.y );\n\tnodeVar155 = ( 1.0 - nodeVar154 );\n\tnodeVar156 = nodeVar155;\n\tnodeVar157 = ( vec3<f32>( nodeVar156 ) * nodeVar152 );\n\tnodeVar158 = ( vec3<f32>( 1.0 ) - nodeVar157 );\n\tnodeVar159 = nodeVar158;\n\tnodeVar160 = ( nodeVar153 / nodeVar159 );\n\tnodeVar161 = ( nodeVar160 * vec3<f32>( nodeVar156 ) );\n\tnodeVar162 = ( multiScatteringMetallic + nodeVar161 );\n\tmultiScatteringMetallic = nodeVar162;\n\tnodeVar163 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar164 = ( radiance * nodeVar163 );\n\tnodeVar165 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tnodeVar166 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar167 = ( nodeVar165 * nodeVar166 );\n\tnodeVar168 = ( nodeVar164 + nodeVar167 );\n\tnodeVar169 = nodeVar168;\n\tnodeVar170 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar171 = ( vec3<f32>( 1.0 ) - nodeVar170 );\n\tnodeVar172 = nodeVar171;\n\tnodeVar173 = ( DiffuseContribution * nodeVar172 );\n\tnodeVar174 = ( nodeVar173 * nodeVar166 );\n\tnodeVar175 = nodeVar174;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar176 = ( indirectSpecular + nodeVar169 );\n\tindirectSpecular = nodeVar176;\n\tnodeVar177 = ( indirectDiffuse + nodeVar175 );\n\tindirectDiffuse = nodeVar177;\n\tambientOcclusion = 1.0;\n\tnodeVar178 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar178;\n\tnodeVar179 = dot( normalView, positionViewDirection );\n\tnodeVar180 = ( clamp( nodeVar179, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar181 = ( Roughness * -16.0 );\n\tnodeVar182 = ( 1.0 - nodeVar181 );\n\tnodeVar183 = nodeVar182;\n\tnodeVar184 = ( - nodeVar183 );\n\tnodeVar185 = exp2( nodeVar184 );\n\tnodeVar186 = pow( nodeVar180, nodeVar185 );\n\tnodeVar187 = ( 1.0 - nodeVar186 );\n\tnodeVar188 = nodeVar187;\n\tnodeVar189 = ( ambientOcclusion - nodeVar188 );\n\tnodeVar190 = ( indirectSpecular * vec3<f32>( clamp( nodeVar189, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar190;\n\tnodeVar191 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar191;\n\tnodeVar192 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar192;\n\tnodeVar193 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar193;\n\tnodeVar194 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar194;\n\n\t// result\n\n\toutput.color = nodeVar194;\n\n\treturn output;\n\n}\n"],
1371
+ "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\tnodeUniform3 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar3 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) faceIndex : f32,\n\t@location( 2 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tvaryings.nodeVarying5 = faceIndex;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform3 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar3 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar3;\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\n// vars\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec4<f32>;\n\n// codes\nfn getDirection ( uv : vec2<f32>, face : f32 ) -> vec3<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\tvar nodeVar1 : vec3<f32>;\n\tvar nodeVar2 : vec2<f32>;\n\tvar nodeVar3 : vec2<f32>;\n\tvar nodeVar4 : vec2<f32>;\n\n\tnodeVar0 = uv;\n\tnodeVar0 = ( ( vec2<f32>( 2.0 ) * nodeVar0 ) - vec2<f32>( 1.0 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0, 1.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\tnodeVar2 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\tnodeVar1.x = nodeVar2[ 0 ];\n\t\t\tnodeVar1.z = nodeVar2[ 1 ];\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar1.x = ( nodeVar1.x * -1.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\t\t\tnodeVar3 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\t\t\tnodeVar1.x = nodeVar3[ 0 ];\n\t\t\t\t\tnodeVar1.z = nodeVar3[ 1 ];\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\t\t\t\tnodeVar4 = ( nodeVar1.xy * vec2<f32>( -1.0 ) );\n\t\t\t\t\t\tnodeVar1.x = nodeVar4[ 0 ];\n\t\t\t\t\t\tnodeVar1.y = nodeVar4[ 1 ];\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\tif ( ( face == 5.0 ) ) {\n\n\t\t\t\t\t\t\tnodeVar1.z = ( nodeVar1.z * -1.0 );\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32 ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = normalize( getDirection( nodeVarying4, nodeVarying5 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0.x, nodeVar0.y, nodeVar0.z );\n\tnodeVar2 = textureSampleLevel( nodeUniform0, nodeUniform0_sampler, vec2<f32>( ( ( atan2( nodeVar1.z, nodeVar1.x ) * 0.15915494309189535 ) + 0.5 ), ( ( asin( clamp( nodeVar1.y, -1.0, 1.0 ) ) * 0.3183098861837907 ) + 0.5 ) ), 0.0 );\n\n\t// result\n\n\toutput.color = nodeVar2;\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\tnodeUniform1 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar27 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) faceIndex : f32,\n\t@location( 2 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tvaryings.nodeVarying5 = faceIndex;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform5 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar27 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar27;\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 nodeUniform2_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform1 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec3<f32>;\nvar<private> nodeVar1 : vec3<f32>;\nvar<private> nodeVar2 : vec3<f32>;\nvar<private> nodeVar3 : f32;\nvar<private> nodeVar4 : f32;\nvar<private> nodeVar5 : f32;\nvar<private> nodeVar6 : f32;\nvar<private> nodeVar7 : f32;\nvar<private> nodeVar8 : vec2<f32>;\nvar<private> nodeVar9 : vec4<f32>;\nvar<private> nodeVar10 : vec3<f32>;\nvar<private> nodeVar11 : vec3<f32>;\nvar<private> nodeVar12 : vec3<f32>;\nvar<private> nodeVar13 : u32;\nvar<private> nodeVar14 : vec2<f32>;\nvar<private> nodeVar15 : f32;\nvar<private> nodeVar16 : vec3<f32>;\nvar<private> nodeVar17 : vec3<f32>;\nvar<private> nodeVar18 : vec3<f32>;\nvar<private> nodeVar19 : vec3<f32>;\nvar<private> nodeVar20 : f32;\nvar<private> nodeVar21 : f32;\nvar<private> nodeVar22 : f32;\nvar<private> nodeVar23 : f32;\nvar<private> nodeVar24 : f32;\nvar<private> nodeVar25 : vec2<f32>;\nvar<private> nodeVar26 : vec4<f32>;\n\n// codes\nfn getDirection ( uv : vec2<f32>, face : f32 ) -> vec3<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\tvar nodeVar1 : vec3<f32>;\n\tvar nodeVar2 : vec2<f32>;\n\tvar nodeVar3 : vec2<f32>;\n\tvar nodeVar4 : vec2<f32>;\n\n\tnodeVar0 = uv;\n\tnodeVar0 = ( ( vec2<f32>( 2.0 ) * nodeVar0 ) - vec2<f32>( 1.0 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0, 1.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\tnodeVar2 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\tnodeVar1.x = nodeVar2[ 0 ];\n\t\t\tnodeVar1.z = nodeVar2[ 1 ];\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar1.x = ( nodeVar1.x * -1.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar1 = nodeVar1.zyx;\n\t\t\t\t\tnodeVar3 = ( nodeVar1.xz * vec2<f32>( -1.0 ) );\n\t\t\t\t\tnodeVar1.x = nodeVar3[ 0 ];\n\t\t\t\t\tnodeVar1.z = nodeVar3[ 1 ];\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar1 = nodeVar1.xzy;\n\t\t\t\t\t\tnodeVar4 = ( nodeVar1.xy * vec2<f32>( -1.0 ) );\n\t\t\t\t\t\tnodeVar1.x = nodeVar4[ 0 ];\n\t\t\t\t\t\tnodeVar1.y = nodeVar4[ 1 ];\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\tif ( ( face == 5.0 ) ) {\n\n\t\t\t\t\t\t\tnodeVar1.z = ( nodeVar1.z * -1.0 );\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32>,\n\t@location( 1 ) nodeVarying5 : f32 ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = normalize( getDirection( nodeVarying4, nodeVarying5 ) );\n\tnodeVar1 = vec3<f32>( nodeVar0.x, nodeVar0.y, nodeVar0.z );\n\tnodeVar2 = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar3 = 0.0;\n\n\tif ( ( object.nodeUniform0 < 0.001 ) ) {\n\n\t\tnodeVar4 = object.nodeUniform1;\n\t\tnodeVar5 = getFace( nodeVar1 );\n\t\tnodeVar6 = max( ( 4.0 - nodeVar4 ), 0.0 );\n\t\tnodeVar4 = max( nodeVar4, 4.0 );\n\t\tnodeVar7 = exp2( nodeVar4 );\n\t\tnodeVar8 = ( ( getUV( nodeVar1, nodeVar5 ) * vec2<f32>( ( nodeVar7 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar5 > 2.0 ) ) {\n\n\t\t\tnodeVar8.y = ( nodeVar8.y + nodeVar7 );\n\t\t\tnodeVar5 = ( nodeVar5 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar8.x = ( nodeVar8.x + ( nodeVar5 * nodeVar7 ) );\n\t\tnodeVar8.x = ( nodeVar8.x + ( nodeVar6 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar8.y = ( nodeVar8.y + ( 4.0 * ( exp2( 9.0 ) - nodeVar7 ) ) );\n\t\tnodeVar8.x = ( nodeVar8.x * 0.0006510416666666666 );\n\t\tnodeVar8.y = ( nodeVar8.y * 0.00048828125 );\n\t\tnodeVar9 = textureSampleGrad( nodeUniform2, nodeUniform2_sampler, nodeVar8, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar2 = nodeVar9.xyz;\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( abs( nodeVar1.z ) < 0.999 ) ) {\n\n\t\t\tnodeVar10 = vec3<f32>( 0.0, 0.0, 1.0 );\n\n\t\t} else {\n\n\t\t\tnodeVar10 = vec3<f32>( 1.0, 0.0, 0.0 );\n\n\t\t}\n\n\t\tnodeVar11 = normalize( cross( nodeVar10, nodeVar1 ) );\n\t\tnodeVar12 = cross( nodeVar1, nodeVar11 );\n\n\t\tfor ( var i : i32 = 0; i < 512; i ++ ) {\n\n\t\t\tlet nodeConst0 = ( object.nodeUniform0 * object.nodeUniform0 );\n\t\t\tlet nodeConst1 = vec3<f32>( 1.0, 0.0, 0.0 );\n\t\t\tlet nodeConst2 = cross( vec3<f32>( 0.0, 0.0, 1.0 ), nodeConst1 );\n\t\t\tnodeVar13 = u32( i );\n\t\t\tnodeVar13 = ( ( nodeVar13 << 16u ) | ( nodeVar13 >> 16u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 1431655765u ) << 1u ) | ( ( nodeVar13 & 2863311530u ) >> 1u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 858993459u ) << 2u ) | ( ( nodeVar13 & 3435973836u ) >> 2u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 252645135u ) << 4u ) | ( ( nodeVar13 & 4042322160u ) >> 4u ) );\n\t\t\tnodeVar13 = ( ( ( nodeVar13 & 16711935u ) << 8u ) | ( ( nodeVar13 & 4278255360u ) >> 8u ) );\n\t\t\tnodeVar14 = vec2<f32>( ( f32( i ) / 512.0 ), ( f32( nodeVar13 ) * 2.3283064365386963e-10 ) );\n\t\t\tlet nodeConst3 = sqrt( nodeVar14.x );\n\t\t\tlet nodeConst4 = ( ( 2.0 * 3.14159265359 ) * nodeVar14.y );\n\t\t\tlet nodeConst5 = ( nodeConst3 * cos( nodeConst4 ) );\n\t\t\tnodeVar15 = ( nodeConst3 * sin( nodeConst4 ) );\n\t\t\tlet nodeConst6 = ( 0.5 * ( vec3<f32>( 0.0, 0.0, 1.0 ).z + 1.0 ) );\n\t\t\tnodeVar15 = ( ( ( 1.0 - nodeConst6 ) * sqrt( ( 1.0 - ( nodeConst5 * nodeConst5 ) ) ) ) + ( nodeConst6 * nodeVar15 ) );\n\t\t\tnodeVar16 = ( ( ( nodeConst1 * vec3<f32>( nodeConst5 ) ) + ( nodeConst2 * vec3<f32>( nodeVar15 ) ) ) + ( vec3<f32>( 0.0, 0.0, 1.0 ) * vec3<f32>( sqrt( max( 0.0, ( 1.0 - ( ( nodeConst5 * nodeConst5 ) + ( nodeVar15 * nodeVar15 ) ) ) ) ) ) ) );\n\t\t\tnodeVar17 = normalize( vec3<f32>( ( nodeConst0 * nodeVar16.x ), ( nodeConst0 * nodeVar16.y ), max( 0.0, nodeVar16.z ) ) );\n\t\t\tnodeVar18 = normalize( ( ( ( nodeVar11 * vec3<f32>( nodeVar17.x ) ) + ( nodeVar12 * vec3<f32>( nodeVar17.y ) ) ) + ( nodeVar1 * vec3<f32>( nodeVar17.z ) ) ) );\n\t\t\tnodeVar19 = normalize( ( ( nodeVar18 * vec3<f32>( ( dot( nodeVar1, nodeVar18 ) * 2.0 ) ) ) - nodeVar1 ) );\n\t\t\tnodeVar20 = max( dot( nodeVar1, nodeVar19 ), 0.0 );\n\n\t\t\tif ( ( nodeVar20 > 0.0 ) ) {\n\n\t\t\t\tnodeVar21 = object.nodeUniform1;\n\t\t\t\tnodeVar22 = getFace( nodeVar19 );\n\t\t\t\tnodeVar23 = max( ( 4.0 - nodeVar21 ), 0.0 );\n\t\t\t\tnodeVar21 = max( nodeVar21, 4.0 );\n\t\t\t\tnodeVar24 = exp2( nodeVar21 );\n\t\t\t\tnodeVar25 = ( ( getUV( nodeVar19, nodeVar22 ) * vec2<f32>( ( nodeVar24 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\t\t\tif ( ( nodeVar22 > 2.0 ) ) {\n\n\t\t\t\t\tnodeVar25.y = ( nodeVar25.y + nodeVar24 );\n\t\t\t\t\tnodeVar22 = ( nodeVar22 - 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\tnodeVar25.x = ( nodeVar25.x + ( nodeVar22 * nodeVar24 ) );\n\t\t\t\tnodeVar25.x = ( nodeVar25.x + ( nodeVar23 * ( 3.0 * 16.0 ) ) );\n\t\t\t\tnodeVar25.y = ( nodeVar25.y + ( 4.0 * ( exp2( 9.0 ) - nodeVar24 ) ) );\n\t\t\t\tnodeVar25.x = ( nodeVar25.x * 0.0006510416666666666 );\n\t\t\t\tnodeVar25.y = ( nodeVar25.y * 0.00048828125 );\n\t\t\t\tnodeVar26 = textureSampleGrad( nodeUniform2, nodeUniform2_sampler, nodeVar25, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\t\t\tnodeVar2 = ( vec4<f32>( nodeVar2, 1.0 ) + ( nodeVar26 * vec4<f32>( nodeVar20 ) ) ).xyz;\n\t\t\t\tnodeVar3 = ( nodeVar3 + nodeVar20 );\n\t\t\t\t\n\n\t\t\t}\n\n\n\t\t}\n\n\n\t\tif ( ( nodeVar3 > 0.0 ) ) {\n\n\t\t\tnodeVar2 = ( nodeVar2 / vec3<f32>( nodeVar3 ) );\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\t// result\n\n\toutput.color = vec4<f32>( nodeVar2, 1.0 );\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};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform5 );\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform5 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec2<u32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar1 = textureDimensions( nodeUniform0, u32( 0 ) );\n\tnodeVar0 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform1 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar1 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar1 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\n\t// result\n\n\toutput.color = ( nodeVar0 * vec4<f32>( object.nodeUniform2 ) ).x;\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 : vec2<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar14 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar14 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar14;\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform2_sampler : sampler;\n@binding( 2 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : vec2<f32>,\n\tnodeUniform1 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec2<f32>;\nvar<private> nodeVar3 : vec2<f32>;\nvar<private> nodeVar4 : vec2<f32>;\nvar<private> nodeVar5 : vec2<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : f32;\nvar<private> nodeVar8 : vec4<f32>;\nvar<private> nodeVar9 : f32;\nvar<private> nodeVar10 : vec4<f32>;\nvar<private> nodeVar11 : f32;\nvar<private> nodeVar12 : vec4<f32>;\nvar<private> nodeVar13 : f32;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform0 ) * vec2<f32>( object.nodeUniform1 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform0 );\n\tnodeVar2 = clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar3 = clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar4 = clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar5 = clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) );\n\tnodeVar6 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform3 * vec3<f32>( nodeVar2, 1.0 ) ).xy );\n\tnodeVar7 = nodeVar6.x;\n\tnodeVar8 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform4 * vec3<f32>( nodeVar3, 1.0 ) ).xy );\n\tnodeVar9 = nodeVar8.x;\n\tnodeVar10 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform5 * vec3<f32>( nodeVar5, 1.0 ) ).xy );\n\tnodeVar11 = nodeVar10.y;\n\tnodeVar12 = textureSample( nodeUniform2, nodeUniform2_sampler, ( object.nodeUniform6 * vec3<f32>( nodeVar4, 1.0 ) ).xy );\n\tnodeVar13 = nodeVar12.y;\n\n\t// result\n\n\toutput.color = vec4<f32>( ( 0.5 * ( ( ( nodeVar9 - nodeVar7 ) + nodeVar11 ) - nodeVar13 ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : vec2<f32>,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform9 : mat3x3<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 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar9 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform12 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar9 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar9;\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: f32\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 1 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n@binding( 2 ) @group( 1 ) var nodeUniform8 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform0 : f32,\n\tnodeUniform2 : mat3x3<f32>,\n\tnodeUniform3 : vec2<f32>,\n\tnodeUniform4 : f32,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform9 : mat3x3<f32>,\n\tnodeUniform12 : mat4x4<f32>\n};\n@binding( 0 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec2<u32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec2<u32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform3 ) * vec2<f32>( object.nodeUniform4 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform3 );\n\tnodeVar3 = textureDimensions( nodeUniform1, u32( 0 ) );\n\tnodeVar2 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform2 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar5 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform1, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform7 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar8 = textureDimensions( nodeUniform8, u32( 0 ) );\n\tnodeVar7 = textureLoad( nodeUniform8, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform9 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar8 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar8 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( object.nodeUniform0 * ( ( ( ( nodeVar2.x + nodeVar4.x ) + nodeVar5.x ) + nodeVar6.x ) - nodeVar7.x ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform10 : mat3x3<f32>,\n\tnodeUniform11 : f32,\n\tnodeUniform14 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar10 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform14 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar10 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar10;\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: vec2<f32>\n};\nvar<private> output : OutputStruct;\n\n// uniforms\n@binding( 0 ) @group( 1 ) var nodeUniform0 : texture_2d<f32>;\n@binding( 2 ) @group( 1 ) var nodeUniform9_sampler : sampler;\n@binding( 3 ) @group( 1 ) var nodeUniform9 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : f32,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform10 : mat3x3<f32>,\n\tnodeUniform11 : f32,\n\tnodeUniform14 : mat4x4<f32>\n};\n@binding( 1 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec2<u32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec2<f32>;\nvar<private> nodeVar8 : vec4<f32>;\nvar<private> nodeVar9 : vec4<f32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform2 ) * vec2<f32>( object.nodeUniform3 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform2 );\n\tnodeVar3 = textureDimensions( nodeUniform0, u32( 0 ) );\n\tnodeVar2 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform4 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar5 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = ( vec2<f32>( ( abs( nodeVar2.x ) - abs( nodeVar4.x ) ), ( abs( nodeVar5.x ) - abs( nodeVar6.x ) ) ) * vec2<f32>( 0.5 ) );\n\tnodeVar7 = ( nodeVar7 / vec2<f32>( ( length( nodeVar7 ) + 0.0001 ) ) );\n\tnodeVar8 = textureLoad( nodeUniform0, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform8 * vec3<f32>( nodeVarying4, 1.0 ) ).xy ) * vec2<f32>( nodeVar3 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar3 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = ( nodeVar7 * vec2<f32>( ( object.nodeUniform7 * clamp( nodeVar8.x, -100.0, 100.0 ) ) ) );\n\tnodeVar7.y = ( - nodeVar7.y );\n\tnodeVar9 = textureSample( nodeUniform9, nodeUniform9_sampler, ( object.nodeUniform10 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar9.xy + ( nodeVar7 * vec2<f32>( object.nodeUniform11 ) ) ), 0.0, 1.0 ).xy;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : vec2<f32>,\n\tnodeUniform6 : f32,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\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@binding( 3 ) @group( 1 ) var nodeUniform3_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform3 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : vec2<f32>,\n\tnodeUniform6 : f32,\n\tnodeUniform9 : 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\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform3, nodeUniform3_sampler, ( object.nodeUniform4 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 - ( vec2<f32>( object.nodeUniform2 ) * ( ( nodeVar0.xy * vec2<f32>( clamp( ( 500.0 / max( length( nodeVar0.xy ), 500.0 ) ), 0.0, 1.0 ) ) ) * ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform5 ) ) ) ), vec2<f32>( 0.0 ), vec2<f32>( 1.0 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar1 * vec4<f32>( object.nodeUniform6 ) ).xyz, 1.0 );\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar6 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform9 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar6 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar6;\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: 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 : mat3x3<f32>,\n\tnodeUniform2 : vec2<f32>,\n\tnodeUniform3 : f32,\n\tnodeUniform4 : mat3x3<f32>,\n\tnodeUniform5 : mat3x3<f32>,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform9 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec2<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec4<f32>;\nvar<private> nodeVar3 : vec4<f32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec4<f32>;\n\n// codes\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform2 ) * vec2<f32>( object.nodeUniform3 ) );\n\tnodeVar1 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform2 );\n\tnodeVar2 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar3 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform4 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar0.x, 0.0 ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar4 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform5 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\tnodeVar5 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar0.y ) ), nodeVar1, ( vec2<f32>( 1.0, 1.0 ) - nodeVar1 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( 0.5 * ( ( ( nodeVar2.y - nodeVar3.y ) - nodeVar4.x ) + nodeVar5.x ) ), 0.0, 0.0, 1.0 ).x;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform8 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform8 );\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: vec2<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 : mat3x3<f32>,\n\tnodeUniform2 : f32,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform8 : 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\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform3 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( clamp( ( nodeVarying4 - ( vec2<f32>( object.nodeUniform2 ) * ( ( nodeVar0.xy * vec2<f32>( clamp( ( 500.0 / max( length( nodeVar0.xy ), 500.0 ) ), 0.0, 1.0 ) ) ) * ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform4 ) ) ) ), vec2<f32>( 0.0 ), vec2<f32>( 1.0 ) ), 1.0 ) ).xy );\n\n\t// result\n\n\toutput.color = vec4<f32>( ( nodeVar1 * vec4<f32>( object.nodeUniform5 ) ).xy, 0.0, 1.0 ).xy;\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\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform11 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar9 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform11 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar9 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar9;\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: vec2<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@binding( 3 ) @group( 1 ) var nodeUniform2 : texture_2d<f32>;\n\nstruct objectStruct {\n\tnodeUniform1 : mat3x3<f32>,\n\tnodeUniform3 : mat3x3<f32>,\n\tnodeUniform4 : vec2<f32>,\n\tnodeUniform5 : f32,\n\tnodeUniform6 : mat3x3<f32>,\n\tnodeUniform7 : mat3x3<f32>,\n\tnodeUniform8 : mat3x3<f32>,\n\tnodeUniform11 : mat4x4<f32>\n};\n@binding( 2 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec2<f32>;\nvar<private> nodeVar2 : vec2<f32>;\nvar<private> nodeVar3 : vec2<f32>;\nvar<private> nodeVar4 : vec4<f32>;\nvar<private> nodeVar5 : vec2<u32>;\nvar<private> nodeVar6 : vec4<f32>;\nvar<private> nodeVar7 : vec4<f32>;\nvar<private> nodeVar8 : vec4<f32>;\n\n// codes\nfn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\nfn tsl_coord_clampS_clampT_2d( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n\t\ttsl_clampWrapping_float( coord.x ),\n\t\ttsl_clampWrapping_float( coord.y )\n\t);\n\n}\n\n\n\n@fragment\nfn main( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform0, nodeUniform0_sampler, ( object.nodeUniform1 * vec3<f32>( nodeVarying4, 1.0 ) ).xy );\n\tnodeVar1 = nodeVar0.xy;\n\tnodeVar2 = ( ( vec2<f32>( 1.0, 1.0 ) / object.nodeUniform4 ) * vec2<f32>( object.nodeUniform5 ) );\n\tnodeVar3 = ( vec2<f32>( 0.5, 0.5 ) / object.nodeUniform4 );\n\tnodeVar5 = textureDimensions( nodeUniform2, u32( 0 ) );\n\tnodeVar4 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform3 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( nodeVar2.x, 0.0 ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar6 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform6 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( nodeVar2.x, 0.0 ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar7 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform7 * vec3<f32>( clamp( ( nodeVarying4 + vec2<f32>( 0.0, nodeVar2.y ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar8 = textureLoad( nodeUniform2, vec2<u32>( clamp( floor( tsl_coord_clampS_clampT_2d( ( object.nodeUniform8 * vec3<f32>( clamp( ( nodeVarying4 - vec2<f32>( 0.0, nodeVar2.y ) ), nodeVar3, ( vec2<f32>( 1.0, 1.0 ) - nodeVar3 ) ), 1.0 ) ).xy ) * vec2<f32>( nodeVar5 ) ), vec2<f32>( 0 ), vec2<f32>( nodeVar5 - vec2<u32>( 1, 1 ) ) ) ), u32( 0 ) );\n\tnodeVar1 = ( nodeVar1 - ( vec2<f32>( ( nodeVar4.x - nodeVar6.x ), ( nodeVar7.x - nodeVar8.x ) ) * vec2<f32>( 0.5 ) ) );\n\n\t// result\n\n\toutput.color = vec4<f32>( nodeVar1, 0.0, 1.0 ).xy;\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\tcameraWorldMatrix : mat4x4<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\tnodeUniform21 : f32,\n\tnodeUniform22 : mat4x4<f32>,\n\tnodeUniform24 : f32,\n\tnodeUniform25 : f32,\n\tnodeUniform27 : 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_nodeVar184 : 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_nodeVar184 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar184;\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@binding( 3 ) @group( 1 ) var nodeUniform26_sampler : sampler;\n@binding( 4 ) @group( 1 ) var nodeUniform26 : 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\tnodeUniform21 : f32,\n\tnodeUniform22 : mat4x4<f32>,\n\tnodeUniform24 : f32,\n\tnodeUniform25 : f32,\n\tnodeUniform27 : 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\tcameraWorldMatrix : mat4x4<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> radiance : vec3<f32>;\nvar<private> nodeVar71 : f32;\nvar<private> nodeVar72 : f32;\nvar<private> nodeVar73 : f32;\nvar<private> nodeVar74 : vec3<f32>;\nvar<private> nodeVar75 : f32;\nvar<private> nodeVar76 : f32;\nvar<private> nodeVar77 : f32;\nvar<private> nodeVar78 : vec2<f32>;\nvar<private> nodeVar79 : vec4<f32>;\nvar<private> nodeVar80 : vec3<f32>;\nvar<private> nodeVar81 : f32;\nvar<private> nodeVar82 : f32;\nvar<private> nodeVar83 : f32;\nvar<private> nodeVar84 : f32;\nvar<private> nodeVar85 : f32;\nvar<private> nodeVar86 : vec2<f32>;\nvar<private> nodeVar87 : vec4<f32>;\nvar<private> nodeVar88 : vec3<f32>;\nvar<private> nodeVar89 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar90 : f32;\nvar<private> nodeVar91 : f32;\nvar<private> nodeVar92 : f32;\nvar<private> normalWorld : vec3<f32>;\nvar<private> nodeVar93 : f32;\nvar<private> nodeVar94 : f32;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : vec2<f32>;\nvar<private> nodeVar97 : vec4<f32>;\nvar<private> nodeVar98 : vec3<f32>;\nvar<private> nodeVar99 : f32;\nvar<private> nodeVar100 : f32;\nvar<private> nodeVar101 : f32;\nvar<private> nodeVar102 : f32;\nvar<private> nodeVar103 : f32;\nvar<private> nodeVar104 : vec2<f32>;\nvar<private> nodeVar105 : vec4<f32>;\nvar<private> nodeVar106 : vec3<f32>;\nvar<private> nodeVar107 : vec3<f32>;\nvar<private> nodeVar108 : vec3<f32>;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar111 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar112 : f32;\nvar<private> nodeVar113 : vec4<f32>;\nvar<private> nodeVar114 : vec3<f32>;\nvar<private> nodeVar115 : f32;\nvar<private> nodeVar116 : vec3<f32>;\nvar<private> nodeVar117 : 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 : f32;\nvar<private> nodeVar124 : f32;\nvar<private> nodeVar125 : f32;\nvar<private> nodeVar126 : vec3<f32>;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : vec3<f32>;\nvar<private> nodeVar129 : vec3<f32>;\nvar<private> nodeVar130 : vec3<f32>;\nvar<private> nodeVar131 : vec3<f32>;\nvar<private> nodeVar132 : f32;\nvar<private> nodeVar133 : vec4<f32>;\nvar<private> nodeVar134 : vec3<f32>;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : vec3<f32>;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : f32;\nvar<private> nodeVar145 : f32;\nvar<private> nodeVar146 : vec3<f32>;\nvar<private> nodeVar147 : vec3<f32>;\nvar<private> nodeVar148 : vec3<f32>;\nvar<private> nodeVar149 : vec3<f32>;\nvar<private> nodeVar150 : vec3<f32>;\nvar<private> nodeVar151 : vec3<f32>;\nvar<private> nodeVar152 : vec3<f32>;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> nodeVar154 : vec3<f32>;\nvar<private> nodeVar155 : vec3<f32>;\nvar<private> nodeVar156 : vec3<f32>;\nvar<private> nodeVar157 : vec3<f32>;\nvar<private> nodeVar158 : vec3<f32>;\nvar<private> nodeVar159 : vec3<f32>;\nvar<private> nodeVar160 : vec3<f32>;\nvar<private> nodeVar161 : vec3<f32>;\nvar<private> nodeVar162 : vec3<f32>;\nvar<private> nodeVar163 : vec3<f32>;\nvar<private> nodeVar164 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar165 : vec3<f32>;\nvar<private> nodeVar166 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar167 : vec3<f32>;\nvar<private> nodeVar168 : f32;\nvar<private> nodeVar169 : f32;\nvar<private> nodeVar170 : f32;\nvar<private> nodeVar171 : f32;\nvar<private> nodeVar172 : f32;\nvar<private> nodeVar173 : f32;\nvar<private> nodeVar174 : f32;\nvar<private> nodeVar175 : f32;\nvar<private> nodeVar176 : f32;\nvar<private> nodeVar177 : f32;\nvar<private> nodeVar178 : f32;\nvar<private> nodeVar179 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar180 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar181 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar182 : vec3<f32>;\nvar<private> nodeVar183 : 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\nfn roughnessToMip ( roughness : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = 0.0;\n\n\tif ( ( roughness >= 0.8 ) ) {\n\n\t\tnodeVar0 = ( ( ( ( 1.0 - roughness ) * ( -1.0 - -2.0 ) ) / ( 1.0 - 0.8 ) ) + -2.0 );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( roughness >= 0.4 ) ) {\n\n\t\t\tnodeVar0 = ( ( ( ( 0.8 - roughness ) * ( 2.0 - -1.0 ) ) / ( 0.8 - 0.4 ) ) + -1.0 );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( roughness >= 0.305 ) ) {\n\n\t\t\t\tnodeVar0 = ( ( ( ( 0.4 - roughness ) * ( 3.0 - 2.0 ) ) / ( 0.4 - 0.305 ) ) + 2.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( roughness >= 0.21 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( ( ( ( 0.305 - roughness ) * ( 4.0 - 3.0 ) ) / ( 0.305 - 0.21 ) ) + 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnodeVar0 = ( -2.0 * log2( ( 1.16 * roughness ) ) );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\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\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar71 = clamp( roughnessToMip( Roughness ), -2.0, object.nodeUniform21 );\n\tnodeVar72 = floor( nodeVar71 );\n\tnodeVar73 = nodeVar72;\n\tnodeVar74 = normalize( ( render.cameraWorldMatrix * vec4<f32>( normalize( mix( reflect( ( - positionViewDirection ), normalView ), normalView, ( ( ( Roughness * Roughness ) * Roughness ) * Roughness ) ) ), 0.0 ) ).xyz );\n\tnodeVar75 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz );\n\tnodeVar76 = max( ( 4.0 - nodeVar73 ), 0.0 );\n\tnodeVar73 = max( nodeVar73, 4.0 );\n\tnodeVar77 = exp2( nodeVar73 );\n\tnodeVar78 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz, nodeVar75 ) * vec2<f32>( ( nodeVar77 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar75 > 2.0 ) ) {\n\n\t\tnodeVar78.y = ( nodeVar78.y + nodeVar77 );\n\t\tnodeVar75 = ( nodeVar75 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar78.x = ( nodeVar78.x + ( nodeVar75 * nodeVar77 ) );\n\tnodeVar78.x = ( nodeVar78.x + ( nodeVar76 * ( 3.0 * 16.0 ) ) );\n\tnodeVar78.y = ( nodeVar78.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar77 ) ) );\n\tnodeVar78.x = ( nodeVar78.x * object.nodeUniform24 );\n\tnodeVar78.y = ( nodeVar78.y * object.nodeUniform25 );\n\tnodeVar79 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar78, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar80 = nodeVar79.xyz;\n\tnodeVar81 = fract( nodeVar71 );\n\n\tif ( ( nodeVar81 != 0.0 ) ) {\n\n\t\tnodeVar82 = ( nodeVar72 + 1.0 );\n\t\tnodeVar83 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz );\n\t\tnodeVar84 = max( ( 4.0 - nodeVar82 ), 0.0 );\n\t\tnodeVar82 = max( nodeVar82, 4.0 );\n\t\tnodeVar85 = exp2( nodeVar82 );\n\t\tnodeVar86 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( nodeVar74.x, ( - nodeVar74.y ), nodeVar74.z ), 1.0 ) ).xyz, nodeVar83 ) * vec2<f32>( ( nodeVar85 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar83 > 2.0 ) ) {\n\n\t\t\tnodeVar86.y = ( nodeVar86.y + nodeVar85 );\n\t\t\tnodeVar83 = ( nodeVar83 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar86.x = ( nodeVar86.x + ( nodeVar83 * nodeVar85 ) );\n\t\tnodeVar86.x = ( nodeVar86.x + ( nodeVar84 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar86.y = ( nodeVar86.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar85 ) ) );\n\t\tnodeVar86.x = ( nodeVar86.x * object.nodeUniform24 );\n\t\tnodeVar86.y = ( nodeVar86.y * object.nodeUniform25 );\n\t\tnodeVar87 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar86, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar88 = nodeVar87.xyz;\n\t\tnodeVar80 = mix( nodeVar80, nodeVar88, nodeVar81 );\n\t\t\n\n\t}\n\n\tnodeVar89 = ( radiance + ( nodeVar80 * vec3<f32>( object.nodeUniform27 ) ) );\n\tradiance = nodeVar89;\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar90 = clamp( roughnessToMip( 1.0 ), -2.0, object.nodeUniform21 );\n\tnodeVar91 = floor( nodeVar90 );\n\tnodeVar92 = nodeVar91;\n\tnormalWorld = normalize( ( vec4<f32>( normalView, 0.0 ) * render.cameraViewMatrix ).xyz );\n\tnodeVar93 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\tnodeVar94 = max( ( 4.0 - nodeVar92 ), 0.0 );\n\tnodeVar92 = max( nodeVar92, 4.0 );\n\tnodeVar95 = exp2( nodeVar92 );\n\tnodeVar96 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar93 ) * vec2<f32>( ( nodeVar95 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar93 > 2.0 ) ) {\n\n\t\tnodeVar96.y = ( nodeVar96.y + nodeVar95 );\n\t\tnodeVar93 = ( nodeVar93 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar96.x = ( nodeVar96.x + ( nodeVar93 * nodeVar95 ) );\n\tnodeVar96.x = ( nodeVar96.x + ( nodeVar94 * ( 3.0 * 16.0 ) ) );\n\tnodeVar96.y = ( nodeVar96.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar95 ) ) );\n\tnodeVar96.x = ( nodeVar96.x * object.nodeUniform24 );\n\tnodeVar96.y = ( nodeVar96.y * object.nodeUniform25 );\n\tnodeVar97 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar96, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar98 = nodeVar97.xyz;\n\tnodeVar99 = fract( nodeVar90 );\n\n\tif ( ( nodeVar99 != 0.0 ) ) {\n\n\t\tnodeVar100 = ( nodeVar91 + 1.0 );\n\t\tnodeVar101 = getFace( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\t\tnodeVar102 = max( ( 4.0 - nodeVar100 ), 0.0 );\n\t\tnodeVar100 = max( nodeVar100, 4.0 );\n\t\tnodeVar103 = exp2( nodeVar100 );\n\t\tnodeVar104 = ( ( getUV( ( object.nodeUniform22 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar101 ) * vec2<f32>( ( nodeVar103 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar101 > 2.0 ) ) {\n\n\t\t\tnodeVar104.y = ( nodeVar104.y + nodeVar103 );\n\t\t\tnodeVar101 = ( nodeVar101 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar104.x = ( nodeVar104.x + ( nodeVar101 * nodeVar103 ) );\n\t\tnodeVar104.x = ( nodeVar104.x + ( nodeVar102 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar104.y = ( nodeVar104.y + ( 4.0 * ( exp2( object.nodeUniform21 ) - nodeVar103 ) ) );\n\t\tnodeVar104.x = ( nodeVar104.x * object.nodeUniform24 );\n\t\tnodeVar104.y = ( nodeVar104.y * object.nodeUniform25 );\n\t\tnodeVar105 = textureSampleGrad( nodeUniform26, nodeUniform26_sampler, nodeVar104, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar106 = nodeVar105.xyz;\n\t\tnodeVar98 = mix( nodeVar98, nodeVar106, nodeVar99 );\n\t\t\n\n\t}\n\n\tnodeVar107 = ( iblIrradiance + ( ( nodeVar98 * vec3<f32>( 3.141592653589793 ) ) * vec3<f32>( object.nodeUniform27 ) ) );\n\tiblIrradiance = nodeVar107;\n\tnodeVar108 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar109 = ( irradiance * nodeVar108 );\n\tnodeVar110 = nodeVar109;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar111 = ( indirectDiffuse + nodeVar110 );\n\tindirectDiffuse = nodeVar111;\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\tnodeVar112 = dot( normalView, positionViewDirection );\n\tnodeVar113 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar112, 0.0, 1.0 ) ) );\n\tnodeVar114 = ( SpecularColor * vec3<f32>( nodeVar113.xy.x ) );\n\tnodeVar115 = ( SpecularF90 * nodeVar113.xy.y );\n\tnodeVar116 = ( nodeVar114 + vec3<f32>( nodeVar115 ) );\n\tnodeVar117 = ( singleScatteringDielectric + nodeVar116 );\n\tsingleScatteringDielectric = nodeVar117;\n\tnodeVar118 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar119 = nodeVar118;\n\tnodeVar120 = ( nodeVar119 * vec3<f32>( 0.047619 ) );\n\tnodeVar121 = ( SpecularColor + nodeVar120 );\n\tnodeVar122 = ( nodeVar116 * nodeVar121 );\n\tnodeVar123 = ( nodeVar113.xy.x + nodeVar113.xy.y );\n\tnodeVar124 = ( 1.0 - nodeVar123 );\n\tnodeVar125 = nodeVar124;\n\tnodeVar126 = ( vec3<f32>( nodeVar125 ) * nodeVar121 );\n\tnodeVar127 = ( vec3<f32>( 1.0 ) - nodeVar126 );\n\tnodeVar128 = nodeVar127;\n\tnodeVar129 = ( nodeVar122 / nodeVar128 );\n\tnodeVar130 = ( nodeVar129 * vec3<f32>( nodeVar125 ) );\n\tnodeVar131 = ( multiScatteringDielectric + nodeVar130 );\n\tmultiScatteringDielectric = nodeVar131;\n\tnodeVar132 = dot( normalView, positionViewDirection );\n\tnodeVar133 = textureSample( nodeUniform13, nodeUniform13_sampler, vec2<f32>( Roughness, clamp( nodeVar132, 0.0, 1.0 ) ) );\n\tnodeVar134 = ( DiffuseColor.xyz * vec3<f32>( nodeVar133.xy.x ) );\n\tnodeVar135 = ( SpecularF90 * nodeVar133.xy.y );\n\tnodeVar136 = ( nodeVar134 + vec3<f32>( nodeVar135 ) );\n\tnodeVar137 = ( singleScatteringMetallic + nodeVar136 );\n\tsingleScatteringMetallic = nodeVar137;\n\tnodeVar138 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar139 = nodeVar138;\n\tnodeVar140 = ( nodeVar139 * vec3<f32>( 0.047619 ) );\n\tnodeVar141 = ( DiffuseColor.xyz + nodeVar140 );\n\tnodeVar142 = ( nodeVar136 * nodeVar141 );\n\tnodeVar143 = ( nodeVar133.xy.x + nodeVar133.xy.y );\n\tnodeVar144 = ( 1.0 - nodeVar143 );\n\tnodeVar145 = nodeVar144;\n\tnodeVar146 = ( vec3<f32>( nodeVar145 ) * nodeVar141 );\n\tnodeVar147 = ( vec3<f32>( 1.0 ) - nodeVar146 );\n\tnodeVar148 = nodeVar147;\n\tnodeVar149 = ( nodeVar142 / nodeVar148 );\n\tnodeVar150 = ( nodeVar149 * vec3<f32>( nodeVar145 ) );\n\tnodeVar151 = ( multiScatteringMetallic + nodeVar150 );\n\tmultiScatteringMetallic = nodeVar151;\n\tnodeVar152 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar153 = ( radiance * nodeVar152 );\n\tnodeVar154 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tnodeVar155 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar156 = ( nodeVar154 * nodeVar155 );\n\tnodeVar157 = ( nodeVar153 + nodeVar156 );\n\tnodeVar158 = nodeVar157;\n\tnodeVar159 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar160 = ( vec3<f32>( 1.0 ) - nodeVar159 );\n\tnodeVar161 = nodeVar160;\n\tnodeVar162 = ( DiffuseContribution * nodeVar161 );\n\tnodeVar163 = ( nodeVar162 * nodeVar155 );\n\tnodeVar164 = nodeVar163;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar165 = ( indirectSpecular + nodeVar158 );\n\tindirectSpecular = nodeVar165;\n\tnodeVar166 = ( indirectDiffuse + nodeVar164 );\n\tindirectDiffuse = nodeVar166;\n\tambientOcclusion = 1.0;\n\tnodeVar167 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar167;\n\tnodeVar168 = dot( normalView, positionViewDirection );\n\tnodeVar169 = ( clamp( nodeVar168, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar170 = ( Roughness * -16.0 );\n\tnodeVar171 = ( 1.0 - nodeVar170 );\n\tnodeVar172 = nodeVar171;\n\tnodeVar173 = ( - nodeVar172 );\n\tnodeVar174 = exp2( nodeVar173 );\n\tnodeVar175 = pow( nodeVar169, nodeVar174 );\n\tnodeVar176 = ( 1.0 - nodeVar175 );\n\tnodeVar177 = nodeVar176;\n\tnodeVar178 = ( ambientOcclusion - nodeVar177 );\n\tnodeVar179 = ( indirectSpecular * vec3<f32>( clamp( nodeVar178, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar179;\n\tnodeVar180 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar180;\n\tnodeVar181 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar181;\n\tnodeVar182 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar182;\n\tnodeVar183 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar183;\n\n\t// result\n\n\toutput.color = nodeVar183;\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_1056Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1056 : NodeBuffer_1056Struct;\n\nstruct NodeBuffer_1037Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1037 : NodeBuffer_1037Struct;\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 ) msdfOrigin : vec2<f32>,\n\t@location( 4 ) msdfRect : vec4<f32>,\n\t@location( 5 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_1056.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1037.value[ nodeVar10 ], NodeBuffer_1037.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1037.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1037.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfOrigin, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfOrigin, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( ( msdfRect.xy - msdfOrigin ) + ( position.xy * msdfRect.zw ) ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( ( msdfRect.xy - msdfOrigin ) + ( 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_1233Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 3 ) @group( 1 )\nvar<storage, read> NodeBuffer_1233 : NodeBuffer_1233Struct;\n\nstruct NodeBuffer_1214Struct {\n\tvalue : array< vec4<f32> >\n};\n@binding( 4 ) @group( 1 )\nvar<storage, read> NodeBuffer_1214 : NodeBuffer_1214Struct;\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 ) msdfOrigin : vec2<f32>,\n\t@location( 4 ) msdfRect : vec4<f32>,\n\t@location( 5 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying0 = NodeBuffer_1233.value[ u32( msdfMember ) ];\n\tvaryings.nodeVarying1 = msdfUvRect;\n\tvaryings.nodeVarying2 = uv;\n\tnodeVar10 = ( u32( msdfMember ) * 4u );\n\tnodeVar11 = mat4x4<f32>( NodeBuffer_1214.value[ nodeVar10 ], NodeBuffer_1214.value[ ( nodeVar10 + 1u ) ], NodeBuffer_1214.value[ ( nodeVar10 + 2u ) ], NodeBuffer_1214.value[ ( nodeVar10 + 3u ) ] );\n\tnodeVar12 = ( object.nodeUniform11 / object.nodeUniform12 );\n\tnodeVar13 = vec4<f32>( ( ( ( ( floor( ( ( ( object.nodeUniform9 + vec2<f32>( ( nodeVar11 * vec4<f32>( msdfOrigin, 0.0, 1.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( msdfOrigin, 0.0, 1.0 ) ).xy.y ) ) ) * nodeVar12 ) + vec2<f32>( 0.5 ) ) ) + ( vec2<f32>( ( nodeVar11 * vec4<f32>( ( ( msdfRect.xy - msdfOrigin ) + ( position.xy * msdfRect.zw ) ), 0.0, 0.0 ) ).xy.x, ( - ( nodeVar11 * vec4<f32>( ( ( msdfRect.xy - msdfOrigin ) + ( 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};\n@binding( 0 ) @group( 0 )\nvar<uniform> render : renderStruct;\n\nstruct objectStruct {\n\tnodeUniform4 : mat4x4<f32>\n};\n@binding( 4 ) @group( 1 )\nvar<uniform> object : objectStruct;\n\n// varyings\n\nstruct VaryingsStruct {\n\t@location( 0 ) nodeVarying4 : vec2<f32>,\n\t@builtin( position ) builtinClipSpace : vec4<f32>\n};\nvar<private> varyings : VaryingsStruct;\n\n// vars\nvar<private> modelViewMatrix : mat4x4<f32>;\nvar<private> VERTEX_nodeVar3 : 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 ) uv : vec2<f32>,\n\t@location( 1 ) position : vec3<f32> ) -> VaryingsStruct {\n\n\t// flow\n\t// code\n\n\tvaryings.nodeVarying4 = uv;\n\tmodelViewMatrix = ( render.cameraViewMatrix * object.nodeUniform4 );\n\tpositionLocal = position;\n\tv_positionView = ( modelViewMatrix * vec4<f32>( positionLocal, 1.0 ) ).xyz;\n\tVERTEX_nodeVar3 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar3;\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@binding( 2 ) @group( 1 ) var nodeUniform1_sampler : sampler;\n@binding( 3 ) @group( 1 ) var nodeUniform1 : texture_2d<f32>;\n\n// vars\nvar<private> nodeVar0 : vec4<f32>;\nvar<private> nodeVar1 : vec4<f32>;\nvar<private> nodeVar2 : 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( @location( 0 ) nodeVarying4 : vec2<f32> ) -> OutputStruct {\n\n\t// flow\n\t// code\n\n\tnodeVar0 = textureSample( nodeUniform1, nodeUniform1_sampler, nodeVarying4 );\n\tnodeVar1 = textureSample( nodeUniform0, nodeUniform0_sampler, ( nodeVarying4 - ( nodeVar0.xy * vec2<f32>( 0.00003 ) ) ) );\n\tnodeVar2 = fn1( vec4<f32>( nodeVar1.xyz, clamp( nodeVar1.w, 0.0, 1.0 ) ) );\n\n\t// result\n\n\toutput.color = fn0( vec4<f32>( sRGBTransferOETF( nodeVar2.xyz ), nodeVar2.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\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\tcameraWorldMatrix : mat4x4<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\tnodeUniform27 : f32,\n\tnodeUniform28 : mat4x4<f32>,\n\tnodeUniform30 : f32,\n\tnodeUniform31 : f32,\n\tnodeUniform33 : 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_nodeVar195 : 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_nodeVar195 = ( render.cameraProjectionMatrix * vec4<f32>( v_positionView, 1.0 ) );\n\tVERTEX_v_modelViewProjection = VERTEX_nodeVar195;\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@binding( 5 ) @group( 1 ) var nodeUniform32_sampler : sampler;\n@binding( 6 ) @group( 1 ) var nodeUniform32 : 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\tnodeUniform27 : f32,\n\tnodeUniform28 : mat4x4<f32>,\n\tnodeUniform30 : f32,\n\tnodeUniform31 : f32,\n\tnodeUniform33 : 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\tcameraWorldMatrix : mat4x4<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> radiance : vec3<f32>;\nvar<private> nodeVar82 : f32;\nvar<private> nodeVar83 : f32;\nvar<private> nodeVar84 : f32;\nvar<private> nodeVar85 : vec3<f32>;\nvar<private> nodeVar86 : f32;\nvar<private> nodeVar87 : f32;\nvar<private> nodeVar88 : f32;\nvar<private> nodeVar89 : vec2<f32>;\nvar<private> nodeVar90 : vec4<f32>;\nvar<private> nodeVar91 : vec3<f32>;\nvar<private> nodeVar92 : f32;\nvar<private> nodeVar93 : f32;\nvar<private> nodeVar94 : f32;\nvar<private> nodeVar95 : f32;\nvar<private> nodeVar96 : f32;\nvar<private> nodeVar97 : vec2<f32>;\nvar<private> nodeVar98 : vec4<f32>;\nvar<private> nodeVar99 : vec3<f32>;\nvar<private> nodeVar100 : vec3<f32>;\nvar<private> iblIrradiance : vec3<f32>;\nvar<private> nodeVar101 : f32;\nvar<private> nodeVar102 : f32;\nvar<private> nodeVar103 : f32;\nvar<private> nodeVar104 : f32;\nvar<private> nodeVar105 : f32;\nvar<private> nodeVar106 : f32;\nvar<private> nodeVar107 : vec2<f32>;\nvar<private> nodeVar108 : vec4<f32>;\nvar<private> nodeVar109 : vec3<f32>;\nvar<private> nodeVar110 : f32;\nvar<private> nodeVar111 : f32;\nvar<private> nodeVar112 : f32;\nvar<private> nodeVar113 : f32;\nvar<private> nodeVar114 : f32;\nvar<private> nodeVar115 : vec2<f32>;\nvar<private> nodeVar116 : vec4<f32>;\nvar<private> nodeVar117 : vec3<f32>;\nvar<private> nodeVar118 : vec3<f32>;\nvar<private> nodeVar119 : vec3<f32>;\nvar<private> nodeVar120 : vec3<f32>;\nvar<private> nodeVar121 : vec3<f32>;\nvar<private> indirectDiffuse : vec3<f32>;\nvar<private> nodeVar122 : vec3<f32>;\nvar<private> singleScatteringDielectric : vec3<f32>;\nvar<private> multiScatteringDielectric : vec3<f32>;\nvar<private> singleScatteringMetallic : vec3<f32>;\nvar<private> multiScatteringMetallic : vec3<f32>;\nvar<private> nodeVar123 : f32;\nvar<private> nodeVar124 : vec4<f32>;\nvar<private> nodeVar125 : vec3<f32>;\nvar<private> nodeVar126 : f32;\nvar<private> nodeVar127 : vec3<f32>;\nvar<private> nodeVar128 : 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 : f32;\nvar<private> nodeVar135 : f32;\nvar<private> nodeVar136 : f32;\nvar<private> nodeVar137 : vec3<f32>;\nvar<private> nodeVar138 : vec3<f32>;\nvar<private> nodeVar139 : vec3<f32>;\nvar<private> nodeVar140 : vec3<f32>;\nvar<private> nodeVar141 : vec3<f32>;\nvar<private> nodeVar142 : vec3<f32>;\nvar<private> nodeVar143 : f32;\nvar<private> nodeVar144 : vec4<f32>;\nvar<private> nodeVar145 : vec3<f32>;\nvar<private> nodeVar146 : f32;\nvar<private> nodeVar147 : vec3<f32>;\nvar<private> nodeVar148 : vec3<f32>;\nvar<private> nodeVar149 : vec3<f32>;\nvar<private> nodeVar150 : vec3<f32>;\nvar<private> nodeVar151 : vec3<f32>;\nvar<private> nodeVar152 : vec3<f32>;\nvar<private> nodeVar153 : vec3<f32>;\nvar<private> nodeVar154 : f32;\nvar<private> nodeVar155 : f32;\nvar<private> nodeVar156 : f32;\nvar<private> nodeVar157 : vec3<f32>;\nvar<private> nodeVar158 : vec3<f32>;\nvar<private> nodeVar159 : vec3<f32>;\nvar<private> nodeVar160 : vec3<f32>;\nvar<private> nodeVar161 : vec3<f32>;\nvar<private> nodeVar162 : vec3<f32>;\nvar<private> nodeVar163 : vec3<f32>;\nvar<private> nodeVar164 : vec3<f32>;\nvar<private> nodeVar165 : vec3<f32>;\nvar<private> nodeVar166 : vec3<f32>;\nvar<private> nodeVar167 : vec3<f32>;\nvar<private> nodeVar168 : vec3<f32>;\nvar<private> nodeVar169 : vec3<f32>;\nvar<private> nodeVar170 : vec3<f32>;\nvar<private> nodeVar171 : vec3<f32>;\nvar<private> nodeVar172 : vec3<f32>;\nvar<private> nodeVar173 : vec3<f32>;\nvar<private> nodeVar174 : vec3<f32>;\nvar<private> nodeVar175 : vec3<f32>;\nvar<private> indirectSpecular : vec3<f32>;\nvar<private> nodeVar176 : vec3<f32>;\nvar<private> nodeVar177 : vec3<f32>;\nvar<private> ambientOcclusion : f32;\nvar<private> nodeVar178 : vec3<f32>;\nvar<private> nodeVar179 : f32;\nvar<private> nodeVar180 : f32;\nvar<private> nodeVar181 : f32;\nvar<private> nodeVar182 : f32;\nvar<private> nodeVar183 : f32;\nvar<private> nodeVar184 : f32;\nvar<private> nodeVar185 : f32;\nvar<private> nodeVar186 : f32;\nvar<private> nodeVar187 : f32;\nvar<private> nodeVar188 : f32;\nvar<private> nodeVar189 : f32;\nvar<private> nodeVar190 : vec3<f32>;\nvar<private> totalDiffuse : vec3<f32>;\nvar<private> nodeVar191 : vec3<f32>;\nvar<private> totalSpecular : vec3<f32>;\nvar<private> nodeVar192 : vec3<f32>;\nvar<private> outgoingLight : vec3<f32>;\nvar<private> nodeVar193 : vec3<f32>;\nvar<private> nodeVar194 : 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\nfn roughnessToMip ( roughness : f32 ) -> f32 {\n\n\tvar nodeVar0 : f32;\n\n\tnodeVar0 = 0.0;\n\n\tif ( ( roughness >= 0.8 ) ) {\n\n\t\tnodeVar0 = ( ( ( ( 1.0 - roughness ) * ( -1.0 - -2.0 ) ) / ( 1.0 - 0.8 ) ) + -2.0 );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( roughness >= 0.4 ) ) {\n\n\t\t\tnodeVar0 = ( ( ( ( 0.8 - roughness ) * ( 2.0 - -1.0 ) ) / ( 0.8 - 0.4 ) ) + -1.0 );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( roughness >= 0.305 ) ) {\n\n\t\t\t\tnodeVar0 = ( ( ( ( 0.4 - roughness ) * ( 3.0 - 2.0 ) ) / ( 0.4 - 0.305 ) ) + 2.0 );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( roughness >= 0.21 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( ( ( ( 0.305 - roughness ) * ( 4.0 - 3.0 ) ) / ( 0.305 - 0.21 ) ) + 3.0 );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnodeVar0 = ( -2.0 * log2( ( 1.16 * roughness ) ) );\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar0;\n\n}\n\nfn getFace ( direction : vec3<f32> ) -> f32 {\n\n\tvar nodeVar0 : vec3<f32>;\n\tvar nodeVar1 : f32;\n\tvar nodeVar2 : f32;\n\tvar nodeVar3 : f32;\n\tvar nodeVar4 : f32;\n\tvar nodeVar5 : f32;\n\n\tnodeVar0 = abs( direction );\n\tnodeVar1 = -1.0;\n\n\tif ( ( nodeVar0.x > nodeVar0.z ) ) {\n\n\n\t\tif ( ( nodeVar0.x > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.x > 0.0 ) ) {\n\n\t\t\t\tnodeVar2 = 0.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar2 = 3.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar2;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar3 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar3 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar3;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( nodeVar0.z > nodeVar0.y ) ) {\n\n\n\t\t\tif ( ( direction.z > 0.0 ) ) {\n\n\t\t\t\tnodeVar4 = 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar4 = 5.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar4;\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( direction.y > 0.0 ) ) {\n\n\t\t\t\tnodeVar5 = 1.0;\n\n\t\t\t} else {\n\n\t\t\t\tnodeVar5 = 4.0;\n\n\t\t\t}\n\n\t\t\tnodeVar1 = nodeVar5;\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn nodeVar1;\n\n}\n\nfn getUV ( direction : vec3<f32>, face : f32 ) -> vec2<f32> {\n\n\tvar nodeVar0 : vec2<f32>;\n\n\tnodeVar0 = vec2<f32>( 0.0, 0.0 );\n\n\tif ( ( face == 0.0 ) ) {\n\n\t\tnodeVar0 = ( vec2<f32>( direction.z, direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\n\n\t} else {\n\n\n\t\tif ( ( face == 1.0 ) ) {\n\n\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), ( - direction.z ) ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\n\n\t\t} else {\n\n\n\t\t\tif ( ( face == 2.0 ) ) {\n\n\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\n\n\t\t\t} else {\n\n\n\t\t\t\tif ( ( face == 3.0 ) ) {\n\n\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.z ), direction.y ) / vec2<f32>( abs( direction.x ) ) );\n\t\t\t\t\t\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tif ( ( face == 4.0 ) ) {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( ( - direction.x ), direction.z ) / vec2<f32>( abs( direction.y ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnodeVar0 = ( vec2<f32>( direction.x, direction.y ) / vec2<f32>( abs( direction.z ) ) );\n\t\t\t\t\t\t\n\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\n\t\t\t\t\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\n\t\t\n\n\t}\n\n\n\treturn ( vec2<f32>( 0.5 ) * ( nodeVar0 + vec2<f32>( 1.0 ) ) );\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\tradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar82 = clamp( roughnessToMip( Roughness ), -2.0, object.nodeUniform27 );\n\tnodeVar83 = floor( nodeVar82 );\n\tnodeVar84 = nodeVar83;\n\tnodeVar85 = normalize( ( render.cameraWorldMatrix * vec4<f32>( normalize( mix( reflect( ( - positionViewDirection ), normalView ), normalView, ( ( ( Roughness * Roughness ) * Roughness ) * Roughness ) ) ), 0.0 ) ).xyz );\n\tnodeVar86 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz );\n\tnodeVar87 = max( ( 4.0 - nodeVar84 ), 0.0 );\n\tnodeVar84 = max( nodeVar84, 4.0 );\n\tnodeVar88 = exp2( nodeVar84 );\n\tnodeVar89 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz, nodeVar86 ) * vec2<f32>( ( nodeVar88 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar86 > 2.0 ) ) {\n\n\t\tnodeVar89.y = ( nodeVar89.y + nodeVar88 );\n\t\tnodeVar86 = ( nodeVar86 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar89.x = ( nodeVar89.x + ( nodeVar86 * nodeVar88 ) );\n\tnodeVar89.x = ( nodeVar89.x + ( nodeVar87 * ( 3.0 * 16.0 ) ) );\n\tnodeVar89.y = ( nodeVar89.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar88 ) ) );\n\tnodeVar89.x = ( nodeVar89.x * object.nodeUniform30 );\n\tnodeVar89.y = ( nodeVar89.y * object.nodeUniform31 );\n\tnodeVar90 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar89, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar91 = nodeVar90.xyz;\n\tnodeVar92 = fract( nodeVar82 );\n\n\tif ( ( nodeVar92 != 0.0 ) ) {\n\n\t\tnodeVar93 = ( nodeVar83 + 1.0 );\n\t\tnodeVar94 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz );\n\t\tnodeVar95 = max( ( 4.0 - nodeVar93 ), 0.0 );\n\t\tnodeVar93 = max( nodeVar93, 4.0 );\n\t\tnodeVar96 = exp2( nodeVar93 );\n\t\tnodeVar97 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( nodeVar85.x, ( - nodeVar85.y ), nodeVar85.z ), 1.0 ) ).xyz, nodeVar94 ) * vec2<f32>( ( nodeVar96 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar94 > 2.0 ) ) {\n\n\t\t\tnodeVar97.y = ( nodeVar97.y + nodeVar96 );\n\t\t\tnodeVar94 = ( nodeVar94 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar97.x = ( nodeVar97.x + ( nodeVar94 * nodeVar96 ) );\n\t\tnodeVar97.x = ( nodeVar97.x + ( nodeVar95 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar97.y = ( nodeVar97.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar96 ) ) );\n\t\tnodeVar97.x = ( nodeVar97.x * object.nodeUniform30 );\n\t\tnodeVar97.y = ( nodeVar97.y * object.nodeUniform31 );\n\t\tnodeVar98 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar97, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar99 = nodeVar98.xyz;\n\t\tnodeVar91 = mix( nodeVar91, nodeVar99, nodeVar92 );\n\t\t\n\n\t}\n\n\tnodeVar100 = ( radiance + ( nodeVar91 * vec3<f32>( object.nodeUniform33 ) ) );\n\tradiance = nodeVar100;\n\tiblIrradiance = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar101 = clamp( roughnessToMip( 1.0 ), -2.0, object.nodeUniform27 );\n\tnodeVar102 = floor( nodeVar101 );\n\tnodeVar103 = nodeVar102;\n\tnodeVar104 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\tnodeVar105 = max( ( 4.0 - nodeVar103 ), 0.0 );\n\tnodeVar103 = max( nodeVar103, 4.0 );\n\tnodeVar106 = exp2( nodeVar103 );\n\tnodeVar107 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar104 ) * vec2<f32>( ( nodeVar106 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\tif ( ( nodeVar104 > 2.0 ) ) {\n\n\t\tnodeVar107.y = ( nodeVar107.y + nodeVar106 );\n\t\tnodeVar104 = ( nodeVar104 - 3.0 );\n\t\t\n\n\t}\n\n\tnodeVar107.x = ( nodeVar107.x + ( nodeVar104 * nodeVar106 ) );\n\tnodeVar107.x = ( nodeVar107.x + ( nodeVar105 * ( 3.0 * 16.0 ) ) );\n\tnodeVar107.y = ( nodeVar107.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar106 ) ) );\n\tnodeVar107.x = ( nodeVar107.x * object.nodeUniform30 );\n\tnodeVar107.y = ( nodeVar107.y * object.nodeUniform31 );\n\tnodeVar108 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar107, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\tnodeVar109 = nodeVar108.xyz;\n\tnodeVar110 = fract( nodeVar101 );\n\n\tif ( ( nodeVar110 != 0.0 ) ) {\n\n\t\tnodeVar111 = ( nodeVar102 + 1.0 );\n\t\tnodeVar112 = getFace( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz );\n\t\tnodeVar113 = max( ( 4.0 - nodeVar111 ), 0.0 );\n\t\tnodeVar111 = max( nodeVar111, 4.0 );\n\t\tnodeVar114 = exp2( nodeVar111 );\n\t\tnodeVar115 = ( ( getUV( ( object.nodeUniform28 * vec4<f32>( vec3<f32>( normalWorld.x, ( - normalWorld.y ), normalWorld.z ), 1.0 ) ).xyz, nodeVar112 ) * vec2<f32>( ( nodeVar114 - 2.0 ) ) ) + vec2<f32>( 1.0 ) );\n\n\t\tif ( ( nodeVar112 > 2.0 ) ) {\n\n\t\t\tnodeVar115.y = ( nodeVar115.y + nodeVar114 );\n\t\t\tnodeVar112 = ( nodeVar112 - 3.0 );\n\t\t\t\n\n\t\t}\n\n\t\tnodeVar115.x = ( nodeVar115.x + ( nodeVar112 * nodeVar114 ) );\n\t\tnodeVar115.x = ( nodeVar115.x + ( nodeVar113 * ( 3.0 * 16.0 ) ) );\n\t\tnodeVar115.y = ( nodeVar115.y + ( 4.0 * ( exp2( object.nodeUniform27 ) - nodeVar114 ) ) );\n\t\tnodeVar115.x = ( nodeVar115.x * object.nodeUniform30 );\n\t\tnodeVar115.y = ( nodeVar115.y * object.nodeUniform31 );\n\t\tnodeVar116 = textureSampleGrad( nodeUniform32, nodeUniform32_sampler, nodeVar115, vec2<f32>( 0.0, 0.0 ), vec2<f32>( 0.0, 0.0 ) );\n\t\tnodeVar117 = nodeVar116.xyz;\n\t\tnodeVar109 = mix( nodeVar109, nodeVar117, nodeVar110 );\n\t\t\n\n\t}\n\n\tnodeVar118 = ( iblIrradiance + ( ( nodeVar109 * vec3<f32>( 3.141592653589793 ) ) * vec3<f32>( object.nodeUniform33 ) ) );\n\tiblIrradiance = nodeVar118;\n\tnodeVar119 = ( DiffuseContribution * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar120 = ( irradiance * nodeVar119 );\n\tnodeVar121 = nodeVar120;\n\tindirectDiffuse = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar122 = ( indirectDiffuse + nodeVar121 );\n\tindirectDiffuse = nodeVar122;\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\tnodeVar123 = dot( normalView, positionViewDirection );\n\tnodeVar124 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar123, 0.0, 1.0 ) ) );\n\tnodeVar125 = ( SpecularColor * vec3<f32>( nodeVar124.xy.x ) );\n\tnodeVar126 = ( SpecularF90 * nodeVar124.xy.y );\n\tnodeVar127 = ( nodeVar125 + vec3<f32>( nodeVar126 ) );\n\tnodeVar128 = ( singleScatteringDielectric + nodeVar127 );\n\tsingleScatteringDielectric = nodeVar128;\n\tnodeVar129 = ( vec3<f32>( 1.0 ) - SpecularColor );\n\tnodeVar130 = nodeVar129;\n\tnodeVar131 = ( nodeVar130 * vec3<f32>( 0.047619 ) );\n\tnodeVar132 = ( SpecularColor + nodeVar131 );\n\tnodeVar133 = ( nodeVar127 * nodeVar132 );\n\tnodeVar134 = ( nodeVar124.xy.x + nodeVar124.xy.y );\n\tnodeVar135 = ( 1.0 - nodeVar134 );\n\tnodeVar136 = nodeVar135;\n\tnodeVar137 = ( vec3<f32>( nodeVar136 ) * nodeVar132 );\n\tnodeVar138 = ( vec3<f32>( 1.0 ) - nodeVar137 );\n\tnodeVar139 = nodeVar138;\n\tnodeVar140 = ( nodeVar133 / nodeVar139 );\n\tnodeVar141 = ( nodeVar140 * vec3<f32>( nodeVar136 ) );\n\tnodeVar142 = ( multiScatteringDielectric + nodeVar141 );\n\tmultiScatteringDielectric = nodeVar142;\n\tnodeVar143 = dot( normalView, positionViewDirection );\n\tnodeVar144 = textureSample( nodeUniform19, nodeUniform19_sampler, vec2<f32>( Roughness, clamp( nodeVar143, 0.0, 1.0 ) ) );\n\tnodeVar145 = ( DiffuseColor.xyz * vec3<f32>( nodeVar144.xy.x ) );\n\tnodeVar146 = ( SpecularF90 * nodeVar144.xy.y );\n\tnodeVar147 = ( nodeVar145 + vec3<f32>( nodeVar146 ) );\n\tnodeVar148 = ( singleScatteringMetallic + nodeVar147 );\n\tsingleScatteringMetallic = nodeVar148;\n\tnodeVar149 = ( vec3<f32>( 1.0 ) - DiffuseColor.xyz );\n\tnodeVar150 = nodeVar149;\n\tnodeVar151 = ( nodeVar150 * vec3<f32>( 0.047619 ) );\n\tnodeVar152 = ( DiffuseColor.xyz + nodeVar151 );\n\tnodeVar153 = ( nodeVar147 * nodeVar152 );\n\tnodeVar154 = ( nodeVar144.xy.x + nodeVar144.xy.y );\n\tnodeVar155 = ( 1.0 - nodeVar154 );\n\tnodeVar156 = nodeVar155;\n\tnodeVar157 = ( vec3<f32>( nodeVar156 ) * nodeVar152 );\n\tnodeVar158 = ( vec3<f32>( 1.0 ) - nodeVar157 );\n\tnodeVar159 = nodeVar158;\n\tnodeVar160 = ( nodeVar153 / nodeVar159 );\n\tnodeVar161 = ( nodeVar160 * vec3<f32>( nodeVar156 ) );\n\tnodeVar162 = ( multiScatteringMetallic + nodeVar161 );\n\tmultiScatteringMetallic = nodeVar162;\n\tnodeVar163 = mix( singleScatteringDielectric, singleScatteringMetallic, Metalness );\n\tnodeVar164 = ( radiance * nodeVar163 );\n\tnodeVar165 = mix( multiScatteringDielectric, multiScatteringMetallic, Metalness );\n\tnodeVar166 = ( iblIrradiance * vec3<f32>( 0.3183098861837907 ) );\n\tnodeVar167 = ( nodeVar165 * nodeVar166 );\n\tnodeVar168 = ( nodeVar164 + nodeVar167 );\n\tnodeVar169 = nodeVar168;\n\tnodeVar170 = ( singleScatteringDielectric + multiScatteringDielectric );\n\tnodeVar171 = ( vec3<f32>( 1.0 ) - nodeVar170 );\n\tnodeVar172 = nodeVar171;\n\tnodeVar173 = ( DiffuseContribution * nodeVar172 );\n\tnodeVar174 = ( nodeVar173 * nodeVar166 );\n\tnodeVar175 = nodeVar174;\n\tindirectSpecular = vec3<f32>( 0.0, 0.0, 0.0 );\n\tnodeVar176 = ( indirectSpecular + nodeVar169 );\n\tindirectSpecular = nodeVar176;\n\tnodeVar177 = ( indirectDiffuse + nodeVar175 );\n\tindirectDiffuse = nodeVar177;\n\tambientOcclusion = 1.0;\n\tnodeVar178 = ( indirectDiffuse * vec3<f32>( ambientOcclusion ) );\n\tindirectDiffuse = nodeVar178;\n\tnodeVar179 = dot( normalView, positionViewDirection );\n\tnodeVar180 = ( clamp( nodeVar179, 0.0, 1.0 ) + ambientOcclusion );\n\tnodeVar181 = ( Roughness * -16.0 );\n\tnodeVar182 = ( 1.0 - nodeVar181 );\n\tnodeVar183 = nodeVar182;\n\tnodeVar184 = ( - nodeVar183 );\n\tnodeVar185 = exp2( nodeVar184 );\n\tnodeVar186 = pow( nodeVar180, nodeVar185 );\n\tnodeVar187 = ( 1.0 - nodeVar186 );\n\tnodeVar188 = nodeVar187;\n\tnodeVar189 = ( ambientOcclusion - nodeVar188 );\n\tnodeVar190 = ( indirectSpecular * vec3<f32>( clamp( nodeVar189, 0.0, 1.0 ) ) );\n\tindirectSpecular = nodeVar190;\n\tnodeVar191 = ( directDiffuse + indirectDiffuse );\n\ttotalDiffuse = nodeVar191;\n\tnodeVar192 = ( directSpecular + indirectSpecular );\n\ttotalSpecular = nodeVar192;\n\tnodeVar193 = ( totalDiffuse + totalSpecular );\n\toutgoingLight = nodeVar193;\n\tnodeVar194 = max( vec4<f32>( ( outgoingLight + EmissiveColor ), DiffuseColor.w ), vec4<f32>( 0.0 ) );\n\tOutput = nodeVar194;\n\n\t// result\n\n\toutput.color = nodeVar194;\n\n\treturn output;\n\n}\n"],
1543
1372
  "nodes": [
1544
1373
  {
1545
1374
  "k": "anchor",
@@ -2316,120 +2145,6 @@ export default {
2316
2145
  "property": "alphaTest",
2317
2146
  "type": null
2318
2147
  },
2319
- {
2320
- "k": "owned",
2321
- "owner": {
2322
- "k": "anchor",
2323
- "key": "text/dom-geist|z:0|w:700",
2324
- "path": [],
2325
- "slot": "colorNode"
2326
- },
2327
- "path": [0,0,0,0,0,0]
2328
- },
2329
- {
2330
- "k": "owned",
2331
- "owner": {
2332
- "k": "anchor",
2333
- "key": "text/dom-geist|z:0|w:700",
2334
- "path": [],
2335
- "slot": "colorNode"
2336
- },
2337
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2338
- },
2339
- {
2340
- "k": "owned",
2341
- "owner": {
2342
- "k": "owned",
2343
- "owner": {
2344
- "k": "anchor",
2345
- "key": "text/dom-geist|z:0|w:700",
2346
- "path": [],
2347
- "slot": "colorNode"
2348
- },
2349
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2350
- },
2351
- "path": ["_matrixUniform"]
2352
- },
2353
- {
2354
- "k": "owned",
2355
- "owner": {
2356
- "k": "anchor",
2357
- "key": "text/dom-geist|z:0|w:700",
2358
- "path": [],
2359
- "slot": "colorNode"
2360
- },
2361
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,1]
2362
- },
2363
- {
2364
- "k": "owned",
2365
- "owner": {
2366
- "k": "anchor",
2367
- "key": "text/dom-geist|z:0|w:700",
2368
- "path": [],
2369
- "slot": "colorNode"
2370
- },
2371
- "path": [0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
2372
- },
2373
- {
2374
- "k": "owned",
2375
- "owner": {
2376
- "k": "anchor",
2377
- "key": "text/dom-geist|z:0|w:700",
2378
- "path": [],
2379
- "slot": "colorNode"
2380
- },
2381
- "path": [0,1,0,1]
2382
- },
2383
- {
2384
- "k": "owned",
2385
- "owner": {
2386
- "k": "anchor",
2387
- "key": "text/dom-geist|z:0|w:700",
2388
- "path": [],
2389
- "slot": "vertexNode"
2390
- },
2391
- "path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2392
- },
2393
- {
2394
- "k": "owned",
2395
- "owner": {
2396
- "k": "anchor",
2397
- "key": "text/dom-geist|z:0|w:700",
2398
- "path": [],
2399
- "slot": "vertexNode"
2400
- },
2401
- "path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
2402
- },
2403
- {
2404
- "k": "owned",
2405
- "owner": {
2406
- "k": "anchor",
2407
- "key": "text/dom-geist|z:0|w:700",
2408
- "path": [],
2409
- "slot": "vertexNode"
2410
- },
2411
- "path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
2412
- },
2413
- {
2414
- "k": "owned",
2415
- "owner": {
2416
- "k": "anchor",
2417
- "key": "text/dom-geist|z:0|w:700",
2418
- "path": [],
2419
- "slot": "vertexNode"
2420
- },
2421
- "path": [0,1]
2422
- },
2423
- {
2424
- "k": "owned",
2425
- "owner": {
2426
- "k": "anchor",
2427
- "key": "text/dom-geist|z:0|w:700",
2428
- "path": [],
2429
- "slot": "colorNode"
2430
- },
2431
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2]
2432
- },
2433
2148
  {
2434
2149
  "k": "owned",
2435
2150
  "owner": {
@@ -2544,120 +2259,6 @@ export default {
2544
2259
  },
2545
2260
  "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2]
2546
2261
  },
2547
- {
2548
- "k": "owned",
2549
- "owner": {
2550
- "k": "anchor",
2551
- "key": "text/dom-noto|z:0|w:700",
2552
- "path": [],
2553
- "slot": "colorNode"
2554
- },
2555
- "path": [0,0,0,0,0,0]
2556
- },
2557
- {
2558
- "k": "owned",
2559
- "owner": {
2560
- "k": "anchor",
2561
- "key": "text/dom-noto|z:0|w:700",
2562
- "path": [],
2563
- "slot": "colorNode"
2564
- },
2565
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2566
- },
2567
- {
2568
- "k": "owned",
2569
- "owner": {
2570
- "k": "owned",
2571
- "owner": {
2572
- "k": "anchor",
2573
- "key": "text/dom-noto|z:0|w:700",
2574
- "path": [],
2575
- "slot": "colorNode"
2576
- },
2577
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2578
- },
2579
- "path": ["_matrixUniform"]
2580
- },
2581
- {
2582
- "k": "owned",
2583
- "owner": {
2584
- "k": "anchor",
2585
- "key": "text/dom-noto|z:0|w:700",
2586
- "path": [],
2587
- "slot": "colorNode"
2588
- },
2589
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,1]
2590
- },
2591
- {
2592
- "k": "owned",
2593
- "owner": {
2594
- "k": "anchor",
2595
- "key": "text/dom-noto|z:0|w:700",
2596
- "path": [],
2597
- "slot": "colorNode"
2598
- },
2599
- "path": [0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
2600
- },
2601
- {
2602
- "k": "owned",
2603
- "owner": {
2604
- "k": "anchor",
2605
- "key": "text/dom-noto|z:0|w:700",
2606
- "path": [],
2607
- "slot": "colorNode"
2608
- },
2609
- "path": [0,1,0,1]
2610
- },
2611
- {
2612
- "k": "owned",
2613
- "owner": {
2614
- "k": "anchor",
2615
- "key": "text/dom-noto|z:0|w:700",
2616
- "path": [],
2617
- "slot": "vertexNode"
2618
- },
2619
- "path": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
2620
- },
2621
- {
2622
- "k": "owned",
2623
- "owner": {
2624
- "k": "anchor",
2625
- "key": "text/dom-noto|z:0|w:700",
2626
- "path": [],
2627
- "slot": "vertexNode"
2628
- },
2629
- "path": [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
2630
- },
2631
- {
2632
- "k": "owned",
2633
- "owner": {
2634
- "k": "anchor",
2635
- "key": "text/dom-noto|z:0|w:700",
2636
- "path": [],
2637
- "slot": "vertexNode"
2638
- },
2639
- "path": [0,0,0,0,0,0,0,0,0,1,0,1,0,1]
2640
- },
2641
- {
2642
- "k": "owned",
2643
- "owner": {
2644
- "k": "anchor",
2645
- "key": "text/dom-noto|z:0|w:700",
2646
- "path": [],
2647
- "slot": "vertexNode"
2648
- },
2649
- "path": [0,1]
2650
- },
2651
- {
2652
- "k": "owned",
2653
- "owner": {
2654
- "k": "anchor",
2655
- "key": "text/dom-noto|z:0|w:700",
2656
- "path": [],
2657
- "slot": "colorNode"
2658
- },
2659
- "path": [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2]
2660
- },
2661
2262
  {
2662
2263
  "k": "owned",
2663
2264
  "owner": {
@@ -3146,7 +2747,7 @@ export default {
3146
2747
  "attributes": 4,
3147
2748
  "compute": null,
3148
2749
  "declarations": [
3149
- [80,0,"storageBuffer","vertex","NodeBuffer_1227"],
2750
+ [80,0,"storageBuffer","vertex","NodeBuffer_1056"],
3150
2751
  [81,0,"texture","fragment","nodeUniform1"],
3151
2752
  [82,0,"mat3","fragment","nodeUniform2"],
3152
2753
  [83,0,"float","fragment","nodeUniform3"],
@@ -3156,7 +2757,7 @@ export default {
3156
2757
  [86,0,"float","fragment","nodeUniform7"],
3157
2758
  [62,0,"color","fragment","nodeUniform8"],
3158
2759
  [87,0,"vec2","vertex","nodeUniform9"],
3159
- [88,0,"storageBuffer","vertex","NodeBuffer_1208"],
2760
+ [88,0,"storageBuffer","vertex","NodeBuffer_1037"],
3160
2761
  [89,0,"vec2","vertex","nodeUniform11"],
3161
2762
  [90,0,"vec2","vertex","nodeUniform12"],
3162
2763
  [91,0,"float","vertex","nodeUniform13"]
@@ -3175,7 +2776,7 @@ export default {
3175
2776
  "attributes": 4,
3176
2777
  "compute": null,
3177
2778
  "declarations": [
3178
- [95,0,"storageBuffer","vertex","NodeBuffer_1055"],
2779
+ [95,0,"storageBuffer","vertex","NodeBuffer_1233"],
3179
2780
  [96,0,"texture","fragment","nodeUniform1"],
3180
2781
  [97,0,"mat3","fragment","nodeUniform2"],
3181
2782
  [98,0,"float","fragment","nodeUniform3"],
@@ -3185,7 +2786,7 @@ export default {
3185
2786
  [86,0,"float","fragment","nodeUniform7"],
3186
2787
  [62,0,"color","fragment","nodeUniform8"],
3187
2788
  [101,0,"vec2","vertex","nodeUniform9"],
3188
- [102,0,"storageBuffer","vertex","NodeBuffer_1036"],
2789
+ [102,0,"storageBuffer","vertex","NodeBuffer_1214"],
3189
2790
  [89,0,"vec2","vertex","nodeUniform11"],
3190
2791
  [103,0,"vec2","vertex","nodeUniform12"],
3191
2792
  [104,0,"float","vertex","nodeUniform13"]
@@ -3200,83 +2801,25 @@ export default {
3200
2801
  "updates": [14,1,1],
3201
2802
  "vertex": 26
3202
2803
  },
3203
- {
3204
- "attributes": 4,
3205
- "compute": null,
3206
- "declarations": [
3207
- [106,0,"storageBuffer","vertex","NodeBuffer_1569"],
3208
- [107,0,"texture","fragment","nodeUniform1"],
3209
- [108,0,"mat3","fragment","nodeUniform2"],
3210
- [109,0,"float","fragment","nodeUniform3"],
3211
- [110,0,"float","fragment","nodeUniform4"],
3212
- [111,0,"float","fragment","nodeUniform5"],
3213
- [10,0,"float","fragment","nodeUniform6"],
3214
- [86,0,"float","fragment","nodeUniform7"],
3215
- [62,0,"color","fragment","nodeUniform8"],
3216
- [112,0,"vec2","vertex","nodeUniform9"],
3217
- [113,0,"storageBuffer","vertex","NodeBuffer_1550"],
3218
- [89,0,"vec2","vertex","nodeUniform11"],
3219
- [114,0,"vec2","vertex","nodeUniform12"],
3220
- [115,0,"float","vertex","nodeUniform13"]
3221
- ],
3222
- "fragment": 25,
3223
- "hardwareClipping": false,
3224
- "layout": 14,
3225
- "observer": {
3226
- "hasAnimation": false,
3227
- "hasNode": true
3228
- },
3229
- "updates": [15,1,1],
3230
- "vertex": 27
3231
- },
3232
- {
3233
- "attributes": 4,
3234
- "compute": null,
3235
- "declarations": [
3236
- [117,0,"storageBuffer","vertex","NodeBuffer_1398"],
3237
- [118,0,"texture","fragment","nodeUniform1"],
3238
- [119,0,"mat3","fragment","nodeUniform2"],
3239
- [120,0,"float","fragment","nodeUniform3"],
3240
- [121,0,"float","fragment","nodeUniform4"],
3241
- [122,0,"float","fragment","nodeUniform5"],
3242
- [10,0,"float","fragment","nodeUniform6"],
3243
- [86,0,"float","fragment","nodeUniform7"],
3244
- [62,0,"color","fragment","nodeUniform8"],
3245
- [123,0,"vec2","vertex","nodeUniform9"],
3246
- [124,0,"storageBuffer","vertex","NodeBuffer_1379"],
3247
- [89,0,"vec2","vertex","nodeUniform11"],
3248
- [125,0,"vec2","vertex","nodeUniform12"],
3249
- [126,0,"float","vertex","nodeUniform13"]
3250
- ],
3251
- "fragment": 25,
3252
- "hardwareClipping": false,
3253
- "layout": 15,
3254
- "observer": {
3255
- "hasAnimation": false,
3256
- "hasNode": true
3257
- },
3258
- "updates": [16,1,1],
3259
- "vertex": 28
3260
- },
3261
2804
  {
3262
2805
  "attributes": 2,
3263
2806
  "compute": null,
3264
2807
  "declarations": [
3265
- [128,0,"texture","fragment","nodeUniform0"],
3266
- [129,0,"texture","fragment","nodeUniform1"],
2808
+ [106,0,"texture","fragment","nodeUniform0"],
2809
+ [107,0,"texture","fragment","nodeUniform1"],
3267
2810
  [1,0,"mat4","vertex","cameraProjectionMatrix"],
3268
2811
  [2,0,"mat4","vertex","cameraViewMatrix"],
3269
2812
  [3,0,"mat4","vertex","nodeUniform4"]
3270
2813
  ],
3271
- "fragment": 30,
2814
+ "fragment": 28,
3272
2815
  "hardwareClipping": false,
3273
- "layout": 16,
2816
+ "layout": 14,
3274
2817
  "observer": {
3275
2818
  "hasAnimation": false,
3276
2819
  "hasNode": true
3277
2820
  },
3278
- "updates": [0,17,1],
3279
- "vertex": 29
2821
+ "updates": [0,15,1],
2822
+ "vertex": 27
3280
2823
  },
3281
2824
  {
3282
2825
  "attributes": 3,
@@ -3295,12 +2838,12 @@ export default {
3295
2838
  [53,0,"vec3","fragment","nodeUniform10"],
3296
2839
  [54,0,"color","fragment","nodeUniform11"],
3297
2840
  [3,0,"mat4","vertex","nodeUniform12"],
3298
- [132,0,"mat4","fragment","nodeUniform13"],
3299
- [133,0,"float","fragment","nodeUniform14"],
3300
- [134,0,"float","fragment","nodeUniform15"],
3301
- [135,0,"vec2","fragment","nodeUniform16"],
3302
- [136,0,"texture","fragment","nodeUniform17"],
3303
- [137,0,"float","fragment","nodeUniform18"],
2841
+ [110,0,"mat4","fragment","nodeUniform13"],
2842
+ [111,0,"float","fragment","nodeUniform14"],
2843
+ [112,0,"float","fragment","nodeUniform15"],
2844
+ [113,0,"vec2","fragment","nodeUniform16"],
2845
+ [114,0,"texture","fragment","nodeUniform17"],
2846
+ [115,0,"float","fragment","nodeUniform18"],
3304
2847
  [55,0,"texture","fragment","nodeUniform19"],
3305
2848
  [56,0,"vec3","fragment","nodeUniform20"],
3306
2849
  [57,0,"vec3","fragment","nodeUniform21"],
@@ -3318,19 +2861,19 @@ export default {
3318
2861
  [69,0,"float","fragment","nodeUniform33"],
3319
2862
  [1,0,"mat4","vertex","cameraProjectionMatrix"]
3320
2863
  ],
3321
- "fragment": 32,
2864
+ "fragment": 30,
3322
2865
  "hardwareClipping": false,
3323
- "layout": 17,
2866
+ "layout": 15,
3324
2867
  "observer": {
3325
2868
  "hasAnimation": false,
3326
2869
  "hasNode": false
3327
2870
  },
3328
- "updates": [18,19,1],
3329
- "vertex": 31
2871
+ "updates": [16,17,1],
2872
+ "vertex": 29
3330
2873
  }
3331
2874
  ],
3332
2875
  "three": "0.185.1",
3333
- "threeBlocks": "0.10.0",
2876
+ "threeBlocks": "0.12.0",
3334
2877
  "updatePlans": [
3335
2878
  [1,4,2,5,6],
3336
2879
  [],
@@ -3347,11 +2890,9 @@ export default {
3347
2890
  [79],
3348
2891
  [6,92,81,93,11,94,75,76,77,78,4,52,53,2,56,57,59,60],
3349
2892
  [6,92,96,105,11,94,75,76,77,78,4,52,53,2,56,57,59,60],
3350
- [6,92,107,116,11,94,75,76,77,78,4,52,53,2,56,57,59,60],
3351
- [6,92,118,127,11,94,75,76,77,78,4,52,53,2,56,57,59,60],
3352
- [130,131],
3353
- [1,4,2,5,6,70,11,71,72,49,73,74,75,76,77,78,52,53,132,138,139,140,141,56,57,59,60,64,65,68,69],
3354
- [142,79]
2893
+ [108,109],
2894
+ [1,4,2,5,6,70,11,71,72,49,73,74,75,76,77,78,52,53,110,116,117,118,119,56,57,59,60,64,65,68,69],
2895
+ [120,79]
3355
2896
  ],
3356
2897
  "version": 3
3357
2898
  } satisfies PrecompiledManifest;