@aura3d/rendering 1.4.0 → 1.4.2
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/package.json +38 -4
- package/AGENTS.md +0 -46
- package/src/ArchitecturalLightingFixtures.ts +0 -241
- package/src/ArchitecturalMaterialCatalog.ts +0 -130
- package/src/ArchitecturalMeasurementFixtures.ts +0 -155
- package/src/BRDFLut.ts +0 -47
- package/src/CameraFraming.ts +0 -200
- package/src/CanonicalSceneFixtures.ts +0 -95
- package/src/CascadedShadowMaps.ts +0 -449
- package/src/ColorManagement.ts +0 -127
- package/src/CullingFixtures.ts +0 -280
- package/src/DecalGeometry.ts +0 -26
- package/src/DepthPass.ts +0 -110
- package/src/EnvironmentBackgroundPass.ts +0 -194
- package/src/EnvironmentBackgroundResources.ts +0 -309
- package/src/EnvironmentLighting.ts +0 -96
- package/src/EnvironmentMapResources.ts +0 -1026
- package/src/EnvironmentPipeline.ts +0 -69
- package/src/EnvironmentPlatform.ts +0 -1306
- package/src/EnvironmentPreset.ts +0 -155
- package/src/Exposure.ts +0 -66
- package/src/ExternalParityRenderPreset.ts +0 -725
- package/src/ForwardPass.ts +0 -1668
- package/src/FrameVisualMetrics.ts +0 -301
- package/src/Geometry.ts +0 -461
- package/src/GeometryPrimitives.ts +0 -2
- package/src/HDRRenderPipeline.ts +0 -94
- package/src/IBL.ts +0 -86
- package/src/IndexBuffer.ts +0 -57
- package/src/InstancedPBRMaterial.ts +0 -186
- package/src/InstancedUnlitMaterial.ts +0 -60
- package/src/Instancing.ts +0 -19
- package/src/LightCollector.ts +0 -82
- package/src/LightUniforms.ts +0 -47
- package/src/LightingDebug.ts +0 -80
- package/src/LightingDefaults.ts +0 -79
- package/src/LightingRig.ts +0 -301
- package/src/LineGeometry.ts +0 -2
- package/src/Material.ts +0 -209
- package/src/MaterialBinding.ts +0 -131
- package/src/MaterialInstance.ts +0 -59
- package/src/MaterialPresets.ts +0 -272
- package/src/MorphTarget.ts +0 -124
- package/src/MorphTargetPlan.ts +0 -178
- package/src/MorphUnlitMaterial.ts +0 -60
- package/src/NormalMappedPBRMaterial.ts +0 -188
- package/src/OceanFixtures.ts +0 -318
- package/src/PBRLightingDefaults.ts +0 -12
- package/src/PBRMaterial.ts +0 -442
- package/src/PMREM.ts +0 -53
- package/src/PbrReference.ts +0 -681
- package/src/PostProcessPass.ts +0 -2507
- package/src/ProceduralTextureFixtures.ts +0 -393
- package/src/ProductTurntableFixtures.ts +0 -815
- package/src/Raycaster.ts +0 -21
- package/src/ReflectionProbe.ts +0 -13
- package/src/ReflectionSurfaces.ts +0 -219
- package/src/RenderBackend.ts +0 -43
- package/src/RenderDebugViews.ts +0 -138
- package/src/RenderDevice.ts +0 -836
- package/src/RenderGraph.ts +0 -194
- package/src/RenderPass.ts +0 -27
- package/src/RenderPipeline.ts +0 -101
- package/src/RenderQueue.ts +0 -12
- package/src/RenderState.ts +0 -12
- package/src/Renderer.ts +0 -2631
- package/src/RendererDebugOverlay.ts +0 -80
- package/src/RendererFeatureGates.ts +0 -150
- package/src/RendererPostprocessPlan.ts +0 -279
- package/src/RendererTiming.ts +0 -251
- package/src/RendererVisualPipelineReport.ts +0 -836
- package/src/ResourceLifecycle.ts +0 -21
- package/src/Sampler.ts +0 -37
- package/src/SceneOptimization.ts +0 -518
- package/src/ShaderChunks.ts +0 -393
- package/src/ShaderLibrary.ts +0 -2766
- package/src/ShaderModule.ts +0 -36
- package/src/ShaderPreprocessor.ts +0 -260
- package/src/ShaderReflection.ts +0 -201
- package/src/ShadowMap.ts +0 -237
- package/src/ShadowPass.ts +0 -198
- package/src/ShadowProjection.ts +0 -115
- package/src/SkinnedLitMaterial.ts +0 -397
- package/src/SkinnedUnlitMaterial.ts +0 -63
- package/src/SkinningBounds.ts +0 -131
- package/src/SpaceEnvironmentFixtures.ts +0 -200
- package/src/SpriteGeometry.ts +0 -21
- package/src/StereoCameraRig.ts +0 -127
- package/src/StereoEffects.ts +0 -274
- package/src/TerrainFixtures.ts +0 -180
- package/src/Texture.ts +0 -307
- package/src/TextureBinding.ts +0 -91
- package/src/TexturedPBRMaterial.ts +0 -1112
- package/src/TexturedUnlitMaterial.ts +0 -67
- package/src/ToneMapping.ts +0 -105
- package/src/UniformBinder.ts +0 -16
- package/src/UniformLayout.ts +0 -129
- package/src/UnlitMaterial.ts +0 -75
- package/src/VegetationFixtures.ts +0 -314
- package/src/VertexBuffer.ts +0 -120
- package/src/VertexFormat.ts +0 -171
- package/src/VoxelWorldFixtures.ts +0 -280
- package/src/WeatherFixtures.ts +0 -223
- package/src/WebGL2Device.ts +0 -2280
- package/src/WebGL2StateCache.ts +0 -330
- package/src/WebGPUDevice.ts +0 -2877
- package/src/WebGPURenderToTextureProof.ts +0 -139
- package/src/advanced-runtime/AdvancedRenderer.ts +0 -73
- package/src/advanced-runtime/index.ts +0 -9
- package/src/animation/AnimationMaterialStyle.ts +0 -32
- package/src/animation/AnimationRenderPreset.ts +0 -45
- package/src/animation/AnimationToonMaterial.ts +0 -387
- package/src/animation/AnimationVisualQuality.ts +0 -71
- package/src/animation/applyAnimationRenderPreset.ts +0 -180
- package/src/animation/index.ts +0 -5
- package/src/cinematic/BloomPass.ts +0 -26
- package/src/cinematic/CinematicDepthComposition.ts +0 -30
- package/src/cinematic/CinematicEvidence.ts +0 -123
- package/src/cinematic/CinematicLightingRig.ts +0 -144
- package/src/cinematic/CinematicMaterialPresets.ts +0 -130
- package/src/cinematic/CinematicPostProcess.ts +0 -83
- package/src/cinematic/DepthHazePass.ts +0 -30
- package/src/cinematic/EmissivePracticalLightSystem.ts +0 -45
- package/src/cinematic/FilmGrainPass.ts +0 -24
- package/src/cinematic/FogVolumeSystem.ts +0 -30
- package/src/cinematic/GlowCardSystem.ts +0 -44
- package/src/cinematic/RainParticleSystem.ts +0 -151
- package/src/cinematic/VignettePass.ts +0 -25
- package/src/cinematic/WetReflectionApproximation.ts +0 -27
- package/src/cinematic/index.ts +0 -14
- package/src/effects/CollisionModule.ts +0 -64
- package/src/effects/ColorModule.ts +0 -60
- package/src/effects/ForceModule.ts +0 -25
- package/src/effects/GPUParticleBackend.ts +0 -569
- package/src/effects/Particle.ts +0 -108
- package/src/effects/ParticleDiagnostics.ts +0 -224
- package/src/effects/ParticleEffectPresets.ts +0 -147
- package/src/effects/ParticleEmitter.ts +0 -326
- package/src/effects/ParticleModule.ts +0 -26
- package/src/effects/ParticleRenderPass.ts +0 -117
- package/src/effects/ParticleRenderer.ts +0 -132
- package/src/effects/ParticleSystem.ts +0 -333
- package/src/effects/SizeModule.ts +0 -56
- package/src/effects/TrailModule.ts +0 -72
- package/src/effects/VelocityModule.ts +0 -75
- package/src/effects/index.ts +0 -15
- package/src/index.ts +0 -925
- package/src/materials/AlphaSorting.ts +0 -30
- package/src/materials/MaterialExtensions.ts +0 -42
- package/src/materials/PhysicalMaterial.ts +0 -133
- package/src/materials/TransmissionPass.ts +0 -51
- package/src/performance/BVH.ts +0 -18
- package/src/performance/Batcher.ts +0 -2
- package/src/performance/FrustumCuller.ts +0 -9
- package/src/performance/LOD.ts +0 -20
- package/src/performance/Octree.ts +0 -10
- package/src/performance/RenderItemSorting.ts +0 -170
- package/src/performance/RendererStats.ts +0 -43
- package/src/performance/ResourceBudget.ts +0 -44
- package/src/postprocess/BloomPass.ts +0 -28
- package/src/postprocess/CinematicDiagnostics.ts +0 -642
- package/src/postprocess/ColorGradingPass.ts +0 -24
- package/src/postprocess/DepthOfFieldPass.ts +0 -12
- package/src/postprocess/EffectComposer.ts +0 -349
- package/src/postprocess/SSAOPass.ts +0 -20
- package/src/postprocess/index.ts +0 -34
- package/src/production-runtime/AnimationControlsPipeline.ts +0 -77
- package/src/production-runtime/PBRHDRPipeline.ts +0 -381
- package/src/production-runtime/ProductionEffectsPipeline.ts +0 -85
- package/src/production-runtime/ProductionRendererTypes.ts +0 -136
- package/src/production-runtime/ProductionRuntimeRenderer.ts +0 -172
- package/src/production-runtime/ProductionWebGL2Renderer.ts +0 -313
- package/src/production-runtime/ProductionWebGPURenderer.ts +0 -396
- package/src/production-runtime/TransmissionBackdropCapture.ts +0 -130
- package/src/production-runtime/animation/MorphTargetRenderer.ts +0 -2
- package/src/production-runtime/animation/SkinningRenderer.ts +0 -2
- package/src/production-runtime/backends/RendererBackend.ts +0 -17
- package/src/production-runtime/backends/WebGL2RendererBackend.ts +0 -30
- package/src/production-runtime/backends/WebGPURendererBackend.ts +0 -24
- package/src/production-runtime/backends/webgl2/WebGL2Buffer.ts +0 -2
- package/src/production-runtime/backends/webgl2/WebGL2Capabilities.ts +0 -2
- package/src/production-runtime/backends/webgl2/WebGL2RenderTarget.ts +0 -2
- package/src/production-runtime/backends/webgl2/WebGL2Shader.ts +0 -2
- package/src/production-runtime/backends/webgl2/WebGL2StateCache.ts +0 -1
- package/src/production-runtime/backends/webgl2/WebGL2Texture.ts +0 -2
- package/src/production-runtime/backends/webgpu/WebGPUBuffer.ts +0 -2
- package/src/production-runtime/backends/webgpu/WebGPUCapabilities.ts +0 -2
- package/src/production-runtime/backends/webgpu/WebGPURenderTarget.ts +0 -2
- package/src/production-runtime/backends/webgpu/WebGPUShader.ts +0 -2
- package/src/production-runtime/backends/webgpu/WebGPUTexture.ts +0 -2
- package/src/production-runtime/color/ColorManagement.ts +0 -3
- package/src/production-runtime/color/ToneMapping.ts +0 -7
- package/src/production-runtime/diagnostics/FrameCapture.ts +0 -2
- package/src/production-runtime/diagnostics/GPUCapabilities.ts +0 -2
- package/src/production-runtime/diagnostics/RendererStats.ts +0 -2
- package/src/production-runtime/environment/EnvironmentMap.ts +0 -1
- package/src/production-runtime/environment/HDRLoader.ts +0 -57
- package/src/production-runtime/environment/PMREMGenerator.ts +0 -713
- package/src/production-runtime/framegraph/FrameGraph.ts +0 -18
- package/src/production-runtime/framegraph/RenderPass.ts +0 -15
- package/src/production-runtime/geometry/ProjectedDecalGeometry.ts +0 -439
- package/src/production-runtime/index.ts +0 -127
- package/src/production-runtime/lights/LightManager.ts +0 -7
- package/src/production-runtime/lights/ShadowMapRenderer.ts +0 -5
- package/src/production-runtime/materials/GLTFMaterialAdapter.ts +0 -6
- package/src/production-runtime/materials/GLTFPBRMaterialAdapter.ts +0 -2
- package/src/production-runtime/materials/MaterialCompiler.ts +0 -7
- package/src/production-runtime/materials/MaterialTextureBindings.ts +0 -5
- package/src/production-runtime/materials/PBRMaterial.ts +0 -2
- package/src/production-runtime/materials/PBRShaderFeatures.ts +0 -2
- package/src/production-runtime/passes/ContactShadowPass.ts +0 -184
- package/src/production-runtime/passes/DepthPrepass.ts +0 -7
- package/src/production-runtime/passes/OpaquePass.ts +0 -7
- package/src/production-runtime/passes/ShadowPass.ts +0 -7
- package/src/production-runtime/passes/SkyboxPass.ts +0 -7
- package/src/production-runtime/passes/ToneMappingPass.ts +0 -7
- package/src/production-runtime/passes/TransparentPass.ts +0 -7
- package/src/production-runtime/postprocess/BloomPass.ts +0 -51
- package/src/production-runtime/postprocess/ColorGradingPass.ts +0 -49
- package/src/production-runtime/postprocess/DOFPass.ts +0 -47
- package/src/production-runtime/postprocess/FXAAPass.ts +0 -53
- package/src/production-runtime/postprocess/ProductionEffectComposer.ts +0 -78
- package/src/production-runtime/postprocess/ProductionPostProcessTypes.ts +0 -174
- package/src/production-runtime/postprocess/SSAOPass.ts +0 -45
- package/src/production-runtime/resources/GPUBuffer.ts +0 -2
- package/src/production-runtime/resources/GPUTexture.ts +0 -2
- package/src/production-runtime/resources/RenderTarget.ts +0 -3
- package/src/production-runtime/resources/ResourceCache.ts +0 -7
- package/src/production-runtime/scene/Camera.ts +0 -1
- package/src/production-runtime/scene/Lights.ts +0 -2
- package/src/production-runtime/scene/RenderableMesh.ts +0 -2
- package/src/production-runtime/scene/RenderablePrimitive.ts +0 -1
- package/src/production-runtime/scene/RenderableScene.ts +0 -4
- package/src/production-runtime/shaders/ShaderProgramLibrary.ts +0 -7
- package/src/production-runtime/shaders/chunks/brdf.glsl +0 -2
- package/src/production-runtime/shaders/chunks/ibl.glsl +0 -3
- package/src/production-runtime/shaders/chunks/pbr.frag.glsl +0 -47
- package/src/production-runtime/shaders/chunks/pbr.vert.glsl +0 -8
- package/src/production-runtime/shaders/chunks/shadows.glsl +0 -2
- package/src/production-runtime/shaders/wgsl/pbr.wgsl +0 -3
- package/src/production-runtime/shaders/wgsl/postprocess.wgsl +0 -2
- package/src/production-runtime/shaders/wgsl/skybox.wgsl +0 -2
- package/src/shaders/depth.frag.glsl +0 -5
- package/src/shaders/depth.vert.glsl +0 -8
- package/src/shaders/pbr-direct.frag.glsl +0 -687
- package/src/shaders/pbr-direct.vert.glsl +0 -18
- package/src/shaders/unlit.frag.glsl +0 -18
- package/src/shaders/unlit.vert.glsl +0 -13
- package/src/shadows/CascadedShadowPipeline.ts +0 -53
- package/src/shadows/ContactShadows.ts +0 -106
- package/src/shadows/ShadowDebugViews.ts +0 -46
- package/src/threejs-compatibility/InstancingSystem.ts +0 -17
- package/src/threejs-compatibility/LightingSystem.ts +0 -22
- package/src/threejs-compatibility/MaterialSystem.ts +0 -9
- package/src/threejs-compatibility/RenderTargetSystem.ts +0 -35
- package/src/threejs-compatibility/RendererDiagnostics.ts +0 -61
- package/src/threejs-compatibility/SceneRenderer.ts +0 -34
- package/src/threejs-compatibility/ShadowSystem.ts +0 -19
- package/src/threejs-compatibility/TextureSystem.ts +0 -19
- package/src/threejs-compatibility/ThreeCompatRenderer.ts +0 -90
- package/src/threejs-compatibility/TransparencySystem.ts +0 -19
- package/src/threejs-compatibility/index.ts +0 -29
- package/src/threejs-compatibility/performance/BVH.ts +0 -14
- package/src/threejs-compatibility/performance/FrustumCulling.ts +0 -10
- package/src/threejs-compatibility/performance/Instancing.ts +0 -4
- package/src/threejs-compatibility/performance/LODSystem.ts +0 -16
- package/src/threejs-compatibility/performance/OcclusionCulling.ts +0 -6
- package/src/threejs-compatibility/performance/RaycastAcceleration.ts +0 -12
- package/src/threejs-compatibility/performance/RendererProfiler.ts +0 -19
- package/src/threejs-compatibility/performance/TextureStreaming.ts +0 -4
- package/src/threejs-compatibility/performance/index.ts +0 -12
- package/src/threejs-compatibility/postprocess/BloomPass.ts +0 -16
- package/src/threejs-compatibility/postprocess/ColorGradingPass.ts +0 -16
- package/src/threejs-compatibility/postprocess/DepthOfFieldPass.ts +0 -21
- package/src/threejs-compatibility/postprocess/EffectComposer.ts +0 -14
- package/src/threejs-compatibility/postprocess/FXAAPass.ts +0 -15
- package/src/threejs-compatibility/postprocess/MotionBlurPass.ts +0 -20
- package/src/threejs-compatibility/postprocess/OutlinePass.ts +0 -21
- package/src/threejs-compatibility/postprocess/PostProcessTypes.ts +0 -169
- package/src/threejs-compatibility/postprocess/RenderPass.ts +0 -9
- package/src/threejs-compatibility/postprocess/SMAAPass.ts +0 -15
- package/src/threejs-compatibility/postprocess/SSAOPass.ts +0 -21
- package/src/threejs-compatibility/postprocess/ShaderPass.ts +0 -7
- package/src/threejs-compatibility/postprocess/TAAPass.ts +0 -15
- package/src/threejs-compatibility/postprocess/VignettePass.ts +0 -16
- package/src/threejs-compatibility/postprocess/index.ts +0 -15
- package/src/threejs-compatibility/shaders/NodeMaterial.ts +0 -21
- package/src/threejs-compatibility/shaders/RawShaderMaterial.ts +0 -6
- package/src/threejs-compatibility/shaders/ShaderDiagnostics.ts +0 -17
- package/src/threejs-compatibility/shaders/ShaderMaterial.ts +0 -18
- package/src/threejs-compatibility/shaders/ThreeCompatShaderChunks.ts +0 -6
- package/src/threejs-compatibility/shaders/Uniforms.ts +0 -18
- package/src/threejs-compatibility/shaders/index.ts +0 -9
- package/src/threejs-compatibility/vfx/GPUPointCloud.ts +0 -7
- package/src/threejs-compatibility/vfx/LineRenderer.ts +0 -13
- package/src/threejs-compatibility/vfx/ParticleSystem.ts +0 -23
- package/src/threejs-compatibility/vfx/SpriteSystem.ts +0 -14
- package/src/threejs-compatibility/vfx/TrailRenderer.ts +0 -8
- package/src/threejs-compatibility/vfx/VFXDiagnostics.ts +0 -23
- package/src/threejs-compatibility/vfx/index.ts +0 -9
- package/src/threejs-example-parity/index.ts +0 -205
- package/src/webgpu/WebGPUBuffer.ts +0 -1
- package/src/webgpu/WebGPUCompute.ts +0 -2
- package/src/webgpu/WebGPUPipelineCache.ts +0 -15
- package/src/webgpu/WebGPUPostProcess.ts +0 -2
- package/src/webgpu/WebGPUTexture.ts +0 -2
- package/tsconfig.json +0 -26
- package/vitest.config.ts +0 -20
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Material, type RenderState } from "./Material";
|
|
2
|
-
import { DEFAULT_TEXTURED_UNLIT_SHADER_NAME } from "./ShaderLibrary";
|
|
3
|
-
import { Sampler } from "./Sampler";
|
|
4
|
-
import { Texture } from "./Texture";
|
|
5
|
-
import { TextureBinding } from "./TextureBinding";
|
|
6
|
-
|
|
7
|
-
export interface TexturedUnlitMaterialOptions {
|
|
8
|
-
readonly name?: string;
|
|
9
|
-
readonly texture: Texture;
|
|
10
|
-
readonly sampler?: Sampler;
|
|
11
|
-
readonly textureTransform?: {
|
|
12
|
-
readonly offset?: readonly [number, number];
|
|
13
|
-
readonly scale?: readonly [number, number];
|
|
14
|
-
readonly rotation?: number;
|
|
15
|
-
};
|
|
16
|
-
readonly color?: readonly [number, number, number, number];
|
|
17
|
-
readonly renderState?: Partial<RenderState>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export class TexturedUnlitMaterial extends Material {
|
|
21
|
-
constructor(options: TexturedUnlitMaterialOptions) {
|
|
22
|
-
const color = options.color ?? [1, 1, 1, 1];
|
|
23
|
-
validateColor(color);
|
|
24
|
-
super({
|
|
25
|
-
name: options.name ?? "textured-unlit",
|
|
26
|
-
shaderKey: DEFAULT_TEXTURED_UNLIT_SHADER_NAME,
|
|
27
|
-
renderState: options.renderState,
|
|
28
|
-
parameters: {
|
|
29
|
-
u_baseColor: color,
|
|
30
|
-
u_baseColorTexture: new TextureBinding({
|
|
31
|
-
name: "u_baseColorTexture",
|
|
32
|
-
texture: options.texture,
|
|
33
|
-
sampler: options.sampler,
|
|
34
|
-
transform: options.textureTransform
|
|
35
|
-
}),
|
|
36
|
-
u_baseColorTextureOffset: options.textureTransform?.offset ?? [0, 0],
|
|
37
|
-
u_baseColorTextureScale: options.textureTransform?.scale ?? [1, 1],
|
|
38
|
-
u_baseColorTextureRotation: options.textureTransform?.rotation ?? 0,
|
|
39
|
-
u_modelViewProjection: identityMatrix()
|
|
40
|
-
},
|
|
41
|
-
requiredAttributes: ["a_position", "a_uv"],
|
|
42
|
-
uniformSchema: [
|
|
43
|
-
{ name: "u_baseColor", kind: "vec4" },
|
|
44
|
-
{ name: "u_baseColorTexture", kind: "texture2d" },
|
|
45
|
-
{ name: "u_baseColorTextureOffset", kind: "vec2" },
|
|
46
|
-
{ name: "u_baseColorTextureScale", kind: "vec2" },
|
|
47
|
-
{ name: "u_baseColorTextureRotation", kind: "float" },
|
|
48
|
-
{ name: "u_modelViewProjection", kind: "mat4" }
|
|
49
|
-
]
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function validateColor(color: readonly [number, number, number, number]): void {
|
|
55
|
-
if (color.length !== 4 || color.some((channel) => channel < 0 || channel > 1 || !Number.isFinite(channel))) {
|
|
56
|
-
throw new Error("TexturedUnlitMaterial color must contain four finite values in [0, 1]");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function identityMatrix(): Float32Array {
|
|
61
|
-
return new Float32Array([
|
|
62
|
-
1, 0, 0, 0,
|
|
63
|
-
0, 1, 0, 0,
|
|
64
|
-
0, 0, 1, 0,
|
|
65
|
-
0, 0, 0, 1
|
|
66
|
-
]);
|
|
67
|
-
}
|
package/src/ToneMapping.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
applyToneMappingPreset,
|
|
3
|
-
createToneMappingCalibration,
|
|
4
|
-
toneMapFloatPixels,
|
|
5
|
-
toneMapPixels,
|
|
6
|
-
toneMappingPresets,
|
|
7
|
-
type HdrToneMappingResult,
|
|
8
|
-
type PostProcessColorSpace,
|
|
9
|
-
type ToneMappingCalibration,
|
|
10
|
-
type ToneMappingOperator,
|
|
11
|
-
type ToneMappingOptions,
|
|
12
|
-
type ToneMappingPreset,
|
|
13
|
-
type ToneMappingPresetName,
|
|
14
|
-
type ToneMappingPresetResult,
|
|
15
|
-
type ToneMappingResult
|
|
16
|
-
} from "./PostProcessPass";
|
|
17
|
-
|
|
18
|
-
export type ExternalParityToneMappingIntent = "product-catalog" | "material-review" | "interior" | "interactive" | "debug";
|
|
19
|
-
|
|
20
|
-
export interface ExternalParityToneMappingPolicy {
|
|
21
|
-
readonly intent: ExternalParityToneMappingIntent;
|
|
22
|
-
readonly operator: ToneMappingOperator;
|
|
23
|
-
readonly exposure: number;
|
|
24
|
-
readonly whitePoint: number;
|
|
25
|
-
readonly gamma: number;
|
|
26
|
-
readonly inputColorSpace: PostProcessColorSpace;
|
|
27
|
-
readonly outputColorSpace: PostProcessColorSpace;
|
|
28
|
-
readonly preset: ToneMappingPresetName;
|
|
29
|
-
readonly calibration: ToneMappingCalibration;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const INTENT_PRESETS: Readonly<Record<ExternalParityToneMappingIntent, ToneMappingPresetName>> = {
|
|
33
|
-
"product-catalog": "cinematic",
|
|
34
|
-
"material-review": "realistic",
|
|
35
|
-
interior: "natural",
|
|
36
|
-
interactive: "vibrant",
|
|
37
|
-
debug: "natural"
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export function createExternalParityToneMappingPolicy(
|
|
41
|
-
intent: ExternalParityToneMappingIntent,
|
|
42
|
-
overrides: ToneMappingOptions = {}
|
|
43
|
-
): ExternalParityToneMappingPolicy {
|
|
44
|
-
const presetName = INTENT_PRESETS[intent];
|
|
45
|
-
const preset = toneMappingPresets[presetName];
|
|
46
|
-
const toneMapping = {
|
|
47
|
-
...preset.toneMapping,
|
|
48
|
-
...overrides
|
|
49
|
-
};
|
|
50
|
-
return {
|
|
51
|
-
intent,
|
|
52
|
-
operator: toneMapping.operator,
|
|
53
|
-
exposure: toneMapping.exposure,
|
|
54
|
-
whitePoint: toneMapping.whitePoint,
|
|
55
|
-
gamma: toneMapping.gamma,
|
|
56
|
-
inputColorSpace: toneMapping.inputColorSpace,
|
|
57
|
-
outputColorSpace: toneMapping.outputColorSpace,
|
|
58
|
-
preset: presetName,
|
|
59
|
-
calibration: createToneMappingCalibration(toneMapping)
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function toneMapExternalParityPixels(
|
|
64
|
-
pixels: Uint8Array,
|
|
65
|
-
width: number,
|
|
66
|
-
height: number,
|
|
67
|
-
policy: ExternalParityToneMappingPolicy
|
|
68
|
-
): ToneMappingResult {
|
|
69
|
-
return toneMapPixels(pixels, width, height, {
|
|
70
|
-
exposure: policy.exposure,
|
|
71
|
-
whitePoint: policy.whitePoint,
|
|
72
|
-
gamma: policy.gamma,
|
|
73
|
-
operator: policy.operator,
|
|
74
|
-
inputColorSpace: policy.inputColorSpace,
|
|
75
|
-
outputColorSpace: policy.outputColorSpace
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function toneMapExternalParityHdrPixels(
|
|
80
|
-
pixels: Float32Array,
|
|
81
|
-
width: number,
|
|
82
|
-
height: number,
|
|
83
|
-
policy: ExternalParityToneMappingPolicy
|
|
84
|
-
): HdrToneMappingResult {
|
|
85
|
-
return toneMapFloatPixels(pixels, width, height, {
|
|
86
|
-
exposure: policy.exposure,
|
|
87
|
-
whitePoint: policy.whitePoint,
|
|
88
|
-
gamma: policy.gamma,
|
|
89
|
-
operator: policy.operator,
|
|
90
|
-
outputColorSpace: policy.outputColorSpace
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function applyExternalParityToneMappingPreset(
|
|
95
|
-
pixels: Uint8Array,
|
|
96
|
-
width: number,
|
|
97
|
-
height: number,
|
|
98
|
-
intent: ExternalParityToneMappingIntent
|
|
99
|
-
): ToneMappingPresetResult {
|
|
100
|
-
return applyToneMappingPreset(pixels, width, height, INTENT_PRESETS[intent]);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export function listExternalParityToneMappingPresets(): readonly ToneMappingPreset[] {
|
|
104
|
-
return Object.values(toneMappingPresets);
|
|
105
|
-
}
|
package/src/UniformBinder.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { UniformValue } from "./RenderDevice";
|
|
2
|
-
|
|
3
|
-
export class UniformBinder {
|
|
4
|
-
private readonly cache = new Map<string, UniformValue>();
|
|
5
|
-
|
|
6
|
-
set(name: string, value: UniformValue): boolean {
|
|
7
|
-
const previous = this.cache.get(name);
|
|
8
|
-
if (previous === value) return false;
|
|
9
|
-
this.cache.set(name, value);
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
clear(): void {
|
|
14
|
-
this.cache.clear();
|
|
15
|
-
}
|
|
16
|
-
}
|
package/src/UniformLayout.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
export type UniformFieldType = "float" | "vec2" | "vec3" | "vec4" | "mat4";
|
|
2
|
-
|
|
3
|
-
export interface UniformFieldDescriptor {
|
|
4
|
-
readonly name: string;
|
|
5
|
-
readonly type: UniformFieldType;
|
|
6
|
-
readonly arrayLength?: number;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface UniformFieldLayout extends UniformFieldDescriptor {
|
|
10
|
-
readonly offset: number;
|
|
11
|
-
readonly byteLength: number;
|
|
12
|
-
readonly alignment: number;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export class UniformLayout {
|
|
16
|
-
public readonly fields: readonly UniformFieldLayout[];
|
|
17
|
-
public readonly byteLength: number;
|
|
18
|
-
|
|
19
|
-
constructor(fields: readonly UniformFieldDescriptor[]) {
|
|
20
|
-
if (fields.length === 0) {
|
|
21
|
-
throw new Error("UniformLayout requires at least one field");
|
|
22
|
-
}
|
|
23
|
-
const seen = new Set<string>();
|
|
24
|
-
const layouts: UniformFieldLayout[] = [];
|
|
25
|
-
let offset = 0;
|
|
26
|
-
|
|
27
|
-
for (const field of fields) {
|
|
28
|
-
if (!field.name.trim()) {
|
|
29
|
-
throw new Error("Uniform field name is required");
|
|
30
|
-
}
|
|
31
|
-
if (seen.has(field.name)) {
|
|
32
|
-
throw new Error(`Duplicate uniform field: ${field.name}`);
|
|
33
|
-
}
|
|
34
|
-
seen.add(field.name);
|
|
35
|
-
const arrayLength = field.arrayLength ?? 1;
|
|
36
|
-
if (!Number.isInteger(arrayLength) || arrayLength <= 0) {
|
|
37
|
-
throw new Error(`Uniform field ${field.name} arrayLength must be a positive integer`);
|
|
38
|
-
}
|
|
39
|
-
const alignment = fieldAlignment(field.type, arrayLength);
|
|
40
|
-
offset = alignTo(offset, alignment);
|
|
41
|
-
const byteLength = fieldByteLength(field.type, arrayLength);
|
|
42
|
-
layouts.push({ ...field, arrayLength, offset, byteLength, alignment });
|
|
43
|
-
offset += byteLength;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
this.fields = layouts;
|
|
47
|
-
this.byteLength = alignTo(offset, 16);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
getField(name: string): UniformFieldLayout {
|
|
51
|
-
const field = this.fields.find((candidate) => candidate.name === name);
|
|
52
|
-
if (!field) {
|
|
53
|
-
throw new Error(`Uniform field is not in layout: ${name}`);
|
|
54
|
-
}
|
|
55
|
-
return field;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
pack(values: Readonly<Record<string, number | readonly number[] | Float32Array>>): Float32Array {
|
|
59
|
-
const output = new Float32Array(this.byteLength / 4);
|
|
60
|
-
for (const field of this.fields) {
|
|
61
|
-
const value = values[field.name];
|
|
62
|
-
if (value === undefined) {
|
|
63
|
-
throw new Error(`Missing uniform value for ${field.name}`);
|
|
64
|
-
}
|
|
65
|
-
const numbers = typeof value === "number" ? [value] : Array.from(value);
|
|
66
|
-
const required = scalarCount(field.type) * (field.arrayLength ?? 1);
|
|
67
|
-
if (numbers.length !== required) {
|
|
68
|
-
throw new Error(`Uniform ${field.name} requires ${required} scalar values, got ${numbers.length}`);
|
|
69
|
-
}
|
|
70
|
-
if (!numbers.every(Number.isFinite)) {
|
|
71
|
-
throw new Error(`Uniform ${field.name} must contain finite values`);
|
|
72
|
-
}
|
|
73
|
-
const scalars = scalarCount(field.type);
|
|
74
|
-
if ((field.arrayLength ?? 1) > 1) {
|
|
75
|
-
const stride = fieldArrayStride(field.type);
|
|
76
|
-
for (let index = 0; index < (field.arrayLength ?? 1); index += 1) {
|
|
77
|
-
output.set(numbers.slice(index * scalars, (index + 1) * scalars), (field.offset + index * stride) / 4);
|
|
78
|
-
}
|
|
79
|
-
} else {
|
|
80
|
-
output.set(numbers, field.offset / 4);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return output;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function fieldAlignment(type: UniformFieldType, arrayLength: number): number {
|
|
88
|
-
if (arrayLength > 1) {
|
|
89
|
-
return 16;
|
|
90
|
-
}
|
|
91
|
-
switch (type) {
|
|
92
|
-
case "float":
|
|
93
|
-
return 4;
|
|
94
|
-
case "vec2":
|
|
95
|
-
return 8;
|
|
96
|
-
case "vec3":
|
|
97
|
-
case "vec4":
|
|
98
|
-
case "mat4":
|
|
99
|
-
return 16;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function fieldByteLength(type: UniformFieldType, arrayLength: number): number {
|
|
104
|
-
const base = fieldArrayStride(type);
|
|
105
|
-
return arrayLength > 1 ? base * arrayLength : type === "mat4" ? 64 : scalarCount(type) * 4;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function fieldArrayStride(type: UniformFieldType): number {
|
|
109
|
-
return alignTo(type === "mat4" ? 64 : scalarCount(type) * 4, 16);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function scalarCount(type: UniformFieldType): number {
|
|
113
|
-
switch (type) {
|
|
114
|
-
case "float":
|
|
115
|
-
return 1;
|
|
116
|
-
case "vec2":
|
|
117
|
-
return 2;
|
|
118
|
-
case "vec3":
|
|
119
|
-
return 3;
|
|
120
|
-
case "vec4":
|
|
121
|
-
return 4;
|
|
122
|
-
case "mat4":
|
|
123
|
-
return 16;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function alignTo(value: number, alignment: number): number {
|
|
128
|
-
return Math.ceil(value / alignment) * alignment;
|
|
129
|
-
}
|
package/src/UnlitMaterial.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Material, type RenderState } from "./Material";
|
|
2
|
-
import { DEFAULT_UNLIT_SHADER_NAME } from "./ShaderLibrary";
|
|
3
|
-
|
|
4
|
-
export interface UnlitMaterialOptions {
|
|
5
|
-
readonly name?: string;
|
|
6
|
-
readonly color?: readonly [number, number, number, number];
|
|
7
|
-
readonly pointSize?: number;
|
|
8
|
-
readonly roundPoints?: boolean;
|
|
9
|
-
readonly renderState?: Partial<RenderState>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class UnlitMaterial extends Material {
|
|
13
|
-
constructor(options: UnlitMaterialOptions = {}) {
|
|
14
|
-
const color = options.color ?? [1, 1, 1, 1];
|
|
15
|
-
validateColor(color);
|
|
16
|
-
validatePointSize(options.pointSize ?? 7);
|
|
17
|
-
super({
|
|
18
|
-
name: options.name ?? "unlit",
|
|
19
|
-
shaderKey: DEFAULT_UNLIT_SHADER_NAME,
|
|
20
|
-
renderState: options.renderState,
|
|
21
|
-
parameters: {
|
|
22
|
-
u_baseColor: color,
|
|
23
|
-
u_pointSize: options.pointSize ?? 7,
|
|
24
|
-
u_roundPoints: options.roundPoints === true ? 1 : 0,
|
|
25
|
-
u_modelViewProjection: identityMatrix()
|
|
26
|
-
},
|
|
27
|
-
requiredAttributes: ["a_position"],
|
|
28
|
-
uniformSchema: [
|
|
29
|
-
{ name: "u_baseColor", kind: "vec4" },
|
|
30
|
-
{ name: "u_pointSize", kind: "float" },
|
|
31
|
-
{ name: "u_roundPoints", kind: "float" },
|
|
32
|
-
{ name: "u_modelViewProjection", kind: "mat4" }
|
|
33
|
-
]
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
set color(value: readonly [number, number, number, number]) {
|
|
38
|
-
validateColor(value);
|
|
39
|
-
this.setParameter("u_baseColor", value);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
get color(): readonly [number, number, number, number] {
|
|
43
|
-
return this.getParameter("u_baseColor") as readonly [number, number, number, number];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
set pointSize(value: number) {
|
|
47
|
-
validatePointSize(value);
|
|
48
|
-
this.setParameter("u_pointSize", value);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
get pointSize(): number {
|
|
52
|
-
return this.getParameter("u_pointSize") as number;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function validateColor(color: readonly [number, number, number, number]): void {
|
|
57
|
-
if (color.length !== 4 || color.some((channel) => channel < 0 || channel > 1 || !Number.isFinite(channel))) {
|
|
58
|
-
throw new Error("UnlitMaterial color must contain four finite values in [0, 1]");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function validatePointSize(pointSize: number): void {
|
|
63
|
-
if (!Number.isFinite(pointSize) || pointSize <= 0 || pointSize > 128) {
|
|
64
|
-
throw new RangeError("UnlitMaterial pointSize must be finite and in (0, 128]");
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function identityMatrix(): Float32Array {
|
|
69
|
-
return new Float32Array([
|
|
70
|
-
1, 0, 0, 0,
|
|
71
|
-
0, 1, 0, 0,
|
|
72
|
-
0, 0, 1, 0,
|
|
73
|
-
0, 0, 0, 1
|
|
74
|
-
]);
|
|
75
|
-
}
|