@meimu/mutracer 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/bvh.worker.js +1 -1
- package/dist/mutracer.umd.js +4475 -4337
- package/docs/api.md +11 -9
- package/docs/threejs.md +30 -4
- package/lib/Engine.js +18 -1
- package/lib/Engine.js.map +1 -1
- package/lib/main.d.ts +1 -1
- package/lib/main.js.map +1 -1
- package/lib/oidn.d.ts +1 -1
- package/lib/oidnBundledWeights.cdn.d.ts +2 -2
- package/lib/renderer/MaterialTable.d.ts +1 -0
- package/lib/renderer/MaterialTable.js +10 -4
- package/lib/renderer/MaterialTable.js.map +1 -1
- package/lib/renderer/WGPUBloomPass.js +18 -18
- package/lib/renderer/WGPUFullQuadPass.js +6 -6
- package/lib/renderer/WGPUJNLMDenoiser.js +68 -68
- package/lib/renderer/WGPURayTraceOutput.js +16 -14
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
- package/lib/renderer/WGPURayTracePass.d.ts +2 -0
- package/lib/renderer/WGPURayTracePass.js +13 -7
- package/lib/renderer/WGPURayTracePass.js.map +1 -1
- package/lib/renderer/WGPURenderingPipeline.js +24 -22
- package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
- package/lib/renderer/WebGLJNLMDenoiser.js +68 -68
- package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
- package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
- package/lib/renderer/WebGLRayTracePass.js +7 -1
- package/lib/renderer/WebGLRayTracePass.js.map +1 -1
- package/lib/renderer/envMapCreation.d.ts +5 -1
- package/lib/renderer/envMapCreation.js +42 -5
- package/lib/renderer/envMapCreation.js.map +1 -1
- package/lib/renderer/geometryUpdates.js +1 -1
- package/lib/renderer/geometryUpdates.js.map +1 -1
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
- package/lib/renderer/glsl/chunks/envMap.glsl.js +69 -57
- package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
- package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +153 -121
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +540 -540
- package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
- package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +71 -71
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +84 -84
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +13 -13
- package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
- package/lib/renderer/glsl/chunks/sobol.glsl.js +65 -65
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
- package/lib/renderer/glsl/depthQuery.frag.js +5 -5
- package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
- package/lib/renderer/glsl/rayTrace.frag.js +165 -165
- package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
- package/lib/renderer/glsl/shadowCatcher.frag.js +14 -14
- package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
- package/lib/renderer/glsl/webglPipeline.frag.js +56 -56
- package/lib/renderer/lightsUtil.js +7 -5
- package/lib/renderer/lightsUtil.js.map +1 -1
- package/lib/renderer/materialChanges.js +1 -1
- package/lib/renderer/materialChanges.js.map +1 -1
- package/lib/renderer/materialComparison.generated.js +36 -18
- package/lib/renderer/materialComparison.generated.js.map +1 -1
- package/lib/renderer/prepareMeshBVH.js +2 -2
- package/lib/renderer/prepareMeshBVH.js.map +1 -1
- package/lib/renderer/sceneChangeDetector.js +4 -1
- package/lib/renderer/sceneChangeDetector.js.map +1 -1
- package/lib/renderer/sceneLightChanges.js +3 -2
- package/lib/renderer/sceneLightChanges.js.map +1 -1
- package/lib/renderer/scratchSampling.js +18 -18
- package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
- package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +95 -61
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +562 -562
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +128 -128
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +143 -143
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +75 -75
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sobol.wgsl.js +69 -69
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
- package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
- package/lib/renderer/wgsl/compose.frag.wgsl.js +130 -102
- package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
- package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
- package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
- package/lib/renderer/wgsl/rayTrace.compute.js +289 -277
- package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
- package/lib/scene/EnvironmentLight.d.ts +9 -3
- package/lib/scene/EnvironmentLight.js +9 -2
- package/lib/scene/EnvironmentLight.js.map +1 -1
- package/lib/scene/Scene.d.ts +4 -0
- package/lib/scene/Scene.js.map +1 -1
- package/lib/scene/SpotLight.d.ts +2 -2
- package/lib/scene/SpotLight.js +1 -1
- package/lib/scene/SpotLight.js.map +1 -1
- package/lib/scene/Texture.d.ts +17 -6
- package/lib/scene/Texture.js +13 -4
- package/lib/scene/Texture.js.map +1 -1
- package/lib/util/fromTHREE.js +151 -29
- package/lib/util/fromTHREE.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +5 -4
|
@@ -413,7 +413,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
413
413
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
414
414
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
415
415
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
416
|
-
previous[i++] !== texture.uvChannel
|
|
416
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
417
|
+
previous[i++] !== texture.colorSpace)
|
|
417
418
|
return true;
|
|
418
419
|
}
|
|
419
420
|
}
|
|
@@ -427,7 +428,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
427
428
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
428
429
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
429
430
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
430
|
-
previous[i++] !== texture.uvChannel
|
|
431
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
432
|
+
previous[i++] !== texture.colorSpace)
|
|
431
433
|
return true;
|
|
432
434
|
}
|
|
433
435
|
}
|
|
@@ -441,7 +443,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
441
443
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
442
444
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
443
445
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
444
|
-
previous[i++] !== texture.uvChannel
|
|
446
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
447
|
+
previous[i++] !== texture.colorSpace)
|
|
445
448
|
return true;
|
|
446
449
|
}
|
|
447
450
|
}
|
|
@@ -455,7 +458,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
455
458
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
456
459
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
457
460
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
458
|
-
previous[i++] !== texture.uvChannel
|
|
461
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
462
|
+
previous[i++] !== texture.colorSpace)
|
|
459
463
|
return true;
|
|
460
464
|
}
|
|
461
465
|
}
|
|
@@ -469,7 +473,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
469
473
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
470
474
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
471
475
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
472
|
-
previous[i++] !== texture.uvChannel
|
|
476
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
477
|
+
previous[i++] !== texture.colorSpace)
|
|
473
478
|
return true;
|
|
474
479
|
}
|
|
475
480
|
}
|
|
@@ -483,7 +488,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
483
488
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
484
489
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
485
490
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
486
|
-
previous[i++] !== texture.uvChannel
|
|
491
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
492
|
+
previous[i++] !== texture.colorSpace)
|
|
487
493
|
return true;
|
|
488
494
|
}
|
|
489
495
|
}
|
|
@@ -497,7 +503,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
497
503
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
498
504
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
499
505
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
500
|
-
previous[i++] !== texture.uvChannel
|
|
506
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
507
|
+
previous[i++] !== texture.colorSpace)
|
|
501
508
|
return true;
|
|
502
509
|
}
|
|
503
510
|
}
|
|
@@ -511,7 +518,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
511
518
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
512
519
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
513
520
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
514
|
-
previous[i++] !== texture.uvChannel
|
|
521
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
522
|
+
previous[i++] !== texture.colorSpace)
|
|
515
523
|
return true;
|
|
516
524
|
}
|
|
517
525
|
}
|
|
@@ -525,7 +533,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
525
533
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
526
534
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
527
535
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
528
|
-
previous[i++] !== texture.uvChannel
|
|
536
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
537
|
+
previous[i++] !== texture.colorSpace)
|
|
529
538
|
return true;
|
|
530
539
|
}
|
|
531
540
|
}
|
|
@@ -539,7 +548,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
539
548
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
540
549
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
541
550
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
542
|
-
previous[i++] !== texture.uvChannel
|
|
551
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
552
|
+
previous[i++] !== texture.colorSpace)
|
|
543
553
|
return true;
|
|
544
554
|
}
|
|
545
555
|
}
|
|
@@ -553,7 +563,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
553
563
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
554
564
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
555
565
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
556
|
-
previous[i++] !== texture.uvChannel
|
|
566
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
567
|
+
previous[i++] !== texture.colorSpace)
|
|
557
568
|
return true;
|
|
558
569
|
}
|
|
559
570
|
}
|
|
@@ -567,7 +578,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
567
578
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
568
579
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
569
580
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
570
|
-
previous[i++] !== texture.uvChannel
|
|
581
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
582
|
+
previous[i++] !== texture.colorSpace)
|
|
571
583
|
return true;
|
|
572
584
|
}
|
|
573
585
|
}
|
|
@@ -581,7 +593,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
581
593
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
582
594
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
583
595
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
584
|
-
previous[i++] !== texture.uvChannel
|
|
596
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
597
|
+
previous[i++] !== texture.colorSpace)
|
|
585
598
|
return true;
|
|
586
599
|
}
|
|
587
600
|
}
|
|
@@ -595,7 +608,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
595
608
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
596
609
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
597
610
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
598
|
-
previous[i++] !== texture.uvChannel
|
|
611
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
612
|
+
previous[i++] !== texture.colorSpace)
|
|
599
613
|
return true;
|
|
600
614
|
}
|
|
601
615
|
}
|
|
@@ -609,7 +623,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
609
623
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
610
624
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
611
625
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
612
|
-
previous[i++] !== texture.uvChannel
|
|
626
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
627
|
+
previous[i++] !== texture.colorSpace)
|
|
613
628
|
return true;
|
|
614
629
|
}
|
|
615
630
|
}
|
|
@@ -623,7 +638,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
623
638
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
624
639
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
625
640
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
626
|
-
previous[i++] !== texture.uvChannel
|
|
641
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
642
|
+
previous[i++] !== texture.colorSpace)
|
|
627
643
|
return true;
|
|
628
644
|
}
|
|
629
645
|
}
|
|
@@ -637,7 +653,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
637
653
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
638
654
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
639
655
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
640
|
-
previous[i++] !== texture.uvChannel
|
|
656
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
657
|
+
previous[i++] !== texture.colorSpace)
|
|
641
658
|
return true;
|
|
642
659
|
}
|
|
643
660
|
}
|
|
@@ -651,7 +668,8 @@ export function materialTexturesChanged(material, previous) {
|
|
|
651
668
|
else if (previous[i++] !== texture || previous[i++] !== texture.version ||
|
|
652
669
|
previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
|
|
653
670
|
previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
|
|
654
|
-
previous[i++] !== texture.uvChannel
|
|
671
|
+
previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
|
|
672
|
+
previous[i++] !== texture.colorSpace)
|
|
655
673
|
return true;
|
|
656
674
|
}
|
|
657
675
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialComparison.generated.js","sourceRoot":"","sources":["../../src/renderer/materialComparison.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by scripts/generate-material-comparison.mjs from openPbrSchema.ts.\n// Do not edit; run npm run generate:material-comparison after changing the schema.\nimport type OpenPBRMaterial from '../scene/OpenPBRMaterial.js';\n\n// Retain the generic array behavior for unusual scalar values supplied from JS.\nfunction arrayParametersEqual(value: unknown, previous: unknown): boolean {\n if (!Array.isArray(value) && !ArrayBuffer.isView(value)) return false;\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n return true;\n}\n\n/** Static field accesses keep the unchanged-material path free of dynamic key lookups. */\nexport function materialParametersEqual(material: OpenPBRMaterial, values: readonly unknown[]): boolean {\n {\n const value = material.baseWeight, previous = values[0];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseColor, previous = values[1];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.baseDiffuseRoughness, previous = values[2];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseMetalness, previous = values[3];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularWeight, previous = values[4];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularColor, previous = values[5];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.specularRoughness, previous = values[6];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularIor, previous = values[7];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropy, previous = values[8];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionWeight, previous = values[9];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionColor, previous = values[10];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionDepth, previous = values[11];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionScatter, previous = values[12];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionScatterAnisotropy, previous = values[13];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionScale, previous = values[14];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionAbbeNumber, previous = values[15];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceWeight, previous = values[16];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceColor, previous = values[17];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadius, previous = values[18];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadiusScale, previous = values[19];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceAnisotropy, previous = values[20];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzWeight, previous = values[21];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzColor, previous = values[22];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.fuzzRoughness, previous = values[23];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatWeight, previous = values[24];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatColor, previous = values[25];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.coatRoughness, previous = values[26];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropy, previous = values[27];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatIor, previous = values[28];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatDarkening, previous = values[29];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmWeight, previous = values[30];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThickness, previous = values[31];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmIor, previous = values[32];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.emissionColor, previous = values[33];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.emissionLuminance, previous = values[34];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.opacity, previous = values[35];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinWalled, previous = values[36];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.doubleSided, previous = values[37];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaMode, previous = values[38];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaCutoff, previous = values[39];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.normalScale, previous = values[40];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.shadowCatcher, previous = values[41];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.unlit, previous = values[42];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.bevelSize, previous = values[43];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.mapAlphaUsage, previous = values[44];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjection, previous = values[45];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjectionScale, previous = values[46];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjection, previous = values[47];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjectionScale, previous = values[48];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementScale, previous = values[49];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementStepSize, previous = values[50];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThicknessMinimum, previous = values[51];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmMapChannel, previous = values[52];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyRotation, previous = values[53];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropyRotation, previous = values[54];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyModel, previous = values[55];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatNormalScale, previous = values[56];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementBias, previous = values[57];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n return true;\n}\n\n/** Mirrors captureMaterialTextures, including numeric texture-category scalars. */\nexport function materialTexturesChanged(material: OpenPBRMaterial, previous: readonly unknown[]): boolean {\n let i = 0;\n {\n const texture = material.map;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.alphaMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.emissiveMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.normalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.metallicRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.roughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.metalnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.transmissionMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.thinFilmMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.displacementMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.fuzzColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.fuzzRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.specularWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.specularColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.anisotropyMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatNormalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n return i !== previous.length;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"materialComparison.generated.js","sourceRoot":"","sources":["../../src/renderer/materialComparison.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by scripts/generate-material-comparison.mjs from openPbrSchema.ts.\n// Do not edit; run npm run generate:material-comparison after changing the schema.\nimport type OpenPBRMaterial from '../scene/OpenPBRMaterial.js';\n\n// Retain the generic array behavior for unusual scalar values supplied from JS.\nfunction arrayParametersEqual(value: unknown, previous: unknown): boolean {\n if (!Array.isArray(value) && !ArrayBuffer.isView(value)) return false;\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n return true;\n}\n\n/** Static field accesses keep the unchanged-material path free of dynamic key lookups. */\nexport function materialParametersEqual(material: OpenPBRMaterial, values: readonly unknown[]): boolean {\n {\n const value = material.baseWeight, previous = values[0];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseColor, previous = values[1];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.baseDiffuseRoughness, previous = values[2];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseMetalness, previous = values[3];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularWeight, previous = values[4];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularColor, previous = values[5];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.specularRoughness, previous = values[6];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularIor, previous = values[7];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropy, previous = values[8];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionWeight, previous = values[9];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionColor, previous = values[10];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionDepth, previous = values[11];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionScatter, previous = values[12];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionScatterAnisotropy, previous = values[13];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionScale, previous = values[14];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionAbbeNumber, previous = values[15];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceWeight, previous = values[16];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceColor, previous = values[17];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadius, previous = values[18];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadiusScale, previous = values[19];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceAnisotropy, previous = values[20];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzWeight, previous = values[21];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzColor, previous = values[22];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.fuzzRoughness, previous = values[23];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatWeight, previous = values[24];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatColor, previous = values[25];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.coatRoughness, previous = values[26];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropy, previous = values[27];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatIor, previous = values[28];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatDarkening, previous = values[29];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmWeight, previous = values[30];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThickness, previous = values[31];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmIor, previous = values[32];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.emissionColor, previous = values[33];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.emissionLuminance, previous = values[34];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.opacity, previous = values[35];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinWalled, previous = values[36];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.doubleSided, previous = values[37];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaMode, previous = values[38];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaCutoff, previous = values[39];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.normalScale, previous = values[40];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.shadowCatcher, previous = values[41];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.unlit, previous = values[42];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.bevelSize, previous = values[43];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.mapAlphaUsage, previous = values[44];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjection, previous = values[45];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjectionScale, previous = values[46];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjection, previous = values[47];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjectionScale, previous = values[48];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementScale, previous = values[49];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementStepSize, previous = values[50];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThicknessMinimum, previous = values[51];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmMapChannel, previous = values[52];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyRotation, previous = values[53];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropyRotation, previous = values[54];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyModel, previous = values[55];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatNormalScale, previous = values[56];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementBias, previous = values[57];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n return true;\n}\n\n/** Mirrors captureMaterialTextures, including numeric texture-category scalars. */\nexport function materialTexturesChanged(material: OpenPBRMaterial, previous: readonly unknown[]): boolean {\n let i = 0;\n {\n const texture = material.map;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.alphaMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.emissiveMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.normalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.metallicRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.roughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.metalnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.transmissionMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.thinFilmMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.displacementMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.fuzzColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.fuzzRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.specularWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.specularColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.anisotropyMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatNormalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n return i !== previous.length;\n}\n"]}
|
|
@@ -200,7 +200,7 @@ export function getPreparedMeshGeometryCacheKey(mesh) {
|
|
|
200
200
|
const scale = getMeshDisplacementScale(mesh);
|
|
201
201
|
if (texture && (scale !== 0 || material.displacementBias !== 0)) {
|
|
202
202
|
return ['displacement', source.version, getDisplacementTextureDataCacheKey(texture),
|
|
203
|
-
+texture.flipY, texture.uvScale.join(','), texture.uvOffset.join(','), texture.uvChannel,
|
|
203
|
+
+texture.flipY, texture.uvScale.join(','), texture.uvOffset.join(','), texture.uvChannel, texture.wrapS, texture.wrapT, texture.colorSpace,
|
|
204
204
|
scale, material.displacementBias, material.displacementUvProjectionScale, material.displacementUvProjection].join('|');
|
|
205
205
|
}
|
|
206
206
|
return undefined;
|
|
@@ -763,7 +763,7 @@ function mergeGeometry(geometries, globalMaterialIndicesMap, regions) {
|
|
|
763
763
|
uv1: uv1Attrib,
|
|
764
764
|
materialIndex: materialIndexAttrib,
|
|
765
765
|
color: hasColor
|
|
766
|
-
? new Attribute(new Float32Array(3 * totalVertexCount), 3)
|
|
766
|
+
? new Attribute(new Float32Array(3 * totalVertexCount).fill(1), 3)
|
|
767
767
|
: undefined,
|
|
768
768
|
tangent: hasTangent
|
|
769
769
|
? new Attribute(new Float32Array(4 * totalVertexCount), 4)
|