@aura3d/rendering 4.0.3 → 4.0.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/EnvironmentPlatform.d.ts.map +1 -1
- package/dist/EnvironmentPlatform.js +6 -2
- package/dist/EnvironmentPlatform.js.map +1 -1
- package/dist/ForwardPass.d.ts +2 -0
- package/dist/ForwardPass.d.ts.map +1 -1
- package/dist/ForwardPass.js +70 -5
- package/dist/ForwardPass.js.map +1 -1
- package/dist/Geometry.d.ts +40 -0
- package/dist/Geometry.d.ts.map +1 -1
- package/dist/Geometry.js +39 -2
- package/dist/Geometry.js.map +1 -1
- package/dist/IndexBuffer.d.ts +16 -1
- package/dist/IndexBuffer.d.ts.map +1 -1
- package/dist/IndexBuffer.js +46 -1
- package/dist/IndexBuffer.js.map +1 -1
- package/dist/InstancedPBRMaterial.d.ts +2 -0
- package/dist/InstancedPBRMaterial.d.ts.map +1 -1
- package/dist/InstancedPBRMaterial.js +1 -0
- package/dist/InstancedPBRMaterial.js.map +1 -1
- package/dist/Material.d.ts +9 -0
- package/dist/Material.d.ts.map +1 -1
- package/dist/Material.js +3 -0
- package/dist/Material.js.map +1 -1
- package/dist/PBRMaterial.d.ts +2 -0
- package/dist/PBRMaterial.d.ts.map +1 -1
- package/dist/PBRMaterial.js +1 -0
- package/dist/PBRMaterial.js.map +1 -1
- package/dist/PortableShaderMaterial.d.ts +13 -3
- package/dist/PortableShaderMaterial.d.ts.map +1 -1
- package/dist/PortableShaderMaterial.js +24 -12
- package/dist/PortableShaderMaterial.js.map +1 -1
- package/dist/RenderDevice.d.ts +98 -0
- package/dist/RenderDevice.d.ts.map +1 -1
- package/dist/RenderDevice.js +129 -0
- package/dist/RenderDevice.js.map +1 -1
- package/dist/Renderer.d.ts +94 -0
- package/dist/Renderer.d.ts.map +1 -1
- package/dist/Renderer.js +321 -26
- package/dist/Renderer.js.map +1 -1
- package/dist/Sampler.d.ts +35 -0
- package/dist/Sampler.d.ts.map +1 -1
- package/dist/Sampler.js +96 -0
- package/dist/Sampler.js.map +1 -1
- package/dist/ShaderLibraryCore.d.ts +14 -0
- package/dist/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/ShaderLibraryCore.js +94 -4
- package/dist/ShaderLibraryCore.js.map +1 -1
- package/dist/Texture.d.ts +53 -1
- package/dist/Texture.d.ts.map +1 -1
- package/dist/Texture.js +53 -2
- package/dist/Texture.js.map +1 -1
- package/dist/UnlitMaterial.d.ts +46 -0
- package/dist/UnlitMaterial.d.ts.map +1 -1
- package/dist/UnlitMaterial.js +32 -3
- package/dist/UnlitMaterial.js.map +1 -1
- package/dist/VertexFormat.d.ts +19 -1
- package/dist/VertexFormat.d.ts.map +1 -1
- package/dist/VertexFormat.js +40 -1
- package/dist/VertexFormat.js.map +1 -1
- package/dist/WebGL2Device.d.ts +16 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +31 -6
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +92 -1
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +417 -44
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/batching/BatchedGeometryPool.d.ts +22 -1
- package/dist/batching/BatchedGeometryPool.d.ts.map +1 -1
- package/dist/batching/BatchedGeometryPool.js +50 -2
- package/dist/batching/BatchedGeometryPool.js.map +1 -1
- package/dist/batching/DrawDataTexture.d.ts +21 -1
- package/dist/batching/DrawDataTexture.d.ts.map +1 -1
- package/dist/batching/DrawDataTexture.js +30 -4
- package/dist/batching/DrawDataTexture.js.map +1 -1
- package/dist/batching/MultiDrawBatch.d.ts +26 -0
- package/dist/batching/MultiDrawBatch.d.ts.map +1 -1
- package/dist/batching/MultiDrawBatch.js +64 -2
- package/dist/batching/MultiDrawBatch.js.map +1 -1
- package/dist/batching/index.d.ts +2 -2
- package/dist/batching/index.d.ts.map +1 -1
- package/dist/batching/index.js +2 -2
- package/dist/batching/index.js.map +1 -1
- package/dist/compute/ComputeContext.d.ts +84 -0
- package/dist/compute/ComputeContext.d.ts.map +1 -0
- package/dist/compute/ComputeContext.js +371 -0
- package/dist/compute/ComputeContext.js.map +1 -0
- package/dist/compute/index.d.ts +4 -0
- package/dist/compute/index.d.ts.map +1 -0
- package/dist/compute/index.js +3 -0
- package/dist/compute/index.js.map +1 -0
- package/dist/compute/types.d.ts +108 -0
- package/dist/compute/types.d.ts.map +1 -0
- package/dist/compute/types.js +25 -0
- package/dist/compute/types.js.map +1 -0
- package/dist/contracts/core.d.ts +1 -1
- package/dist/contracts/core.d.ts.map +1 -1
- package/dist/contracts/core.js.map +1 -1
- package/dist/contracts/flags.state.d.ts.map +1 -1
- package/dist/contracts/flags.state.js +20 -1
- package/dist/contracts/flags.state.js.map +1 -1
- package/dist/contracts/output.d.ts +1 -1
- package/dist/contracts/output.d.ts.map +1 -1
- package/dist/contracts/output.js.map +1 -1
- package/dist/contracts/post.d.ts +7 -0
- package/dist/contracts/post.d.ts.map +1 -1
- package/dist/contracts/post.js.map +1 -1
- package/dist/contracts/renderItem.d.ts +15 -0
- package/dist/contracts/renderItem.d.ts.map +1 -1
- package/dist/contracts/renderSource.d.ts +3 -1
- package/dist/contracts/renderSource.d.ts.map +1 -1
- package/dist/contracts/sampling.d.ts +23 -0
- package/dist/contracts/sampling.d.ts.map +1 -1
- package/dist/contracts/sampling.js.map +1 -1
- package/dist/environment/EnvironmentCache.d.ts.map +1 -1
- package/dist/environment/EnvironmentCache.js +7 -3
- package/dist/environment/EnvironmentCache.js.map +1 -1
- package/dist/environment/RoomEnvironmentScene.d.ts +2 -2
- package/dist/environment/RoomEnvironmentScene.d.ts.map +1 -1
- package/dist/environment/RoomEnvironmentScene.js.map +1 -1
- package/dist/geometry/Circle.d.ts +14 -0
- package/dist/geometry/Circle.d.ts.map +1 -0
- package/dist/geometry/Circle.js +31 -0
- package/dist/geometry/Circle.js.map +1 -0
- package/dist/geometry/Cone.d.ts +37 -0
- package/dist/geometry/Cone.d.ts.map +1 -0
- package/dist/geometry/Cone.js +129 -0
- package/dist/geometry/Cone.js.map +1 -0
- package/dist/geometry/Convex.d.ts +19 -0
- package/dist/geometry/Convex.d.ts.map +1 -0
- package/dist/geometry/Convex.js +27 -0
- package/dist/geometry/Convex.js.map +1 -0
- package/dist/geometry/Edges.d.ts +15 -0
- package/dist/geometry/Edges.d.ts.map +1 -0
- package/dist/geometry/Edges.js +98 -0
- package/dist/geometry/Edges.js.map +1 -0
- package/dist/geometry/Extrude.d.ts +29 -0
- package/dist/geometry/Extrude.d.ts.map +1 -0
- package/dist/geometry/Extrude.js +403 -0
- package/dist/geometry/Extrude.js.map +1 -0
- package/dist/geometry/Lathe.d.ts +20 -0
- package/dist/geometry/Lathe.d.ts.map +1 -0
- package/dist/geometry/Lathe.js +94 -0
- package/dist/geometry/Lathe.js.map +1 -0
- package/dist/geometry/Polyhedron.d.ts +21 -0
- package/dist/geometry/Polyhedron.d.ts.map +1 -0
- package/dist/geometry/Polyhedron.js +201 -0
- package/dist/geometry/Polyhedron.js.map +1 -0
- package/dist/geometry/Primitives.d.ts +38 -2
- package/dist/geometry/Primitives.d.ts.map +1 -1
- package/dist/geometry/Primitives.js +114 -0
- package/dist/geometry/Primitives.js.map +1 -1
- package/dist/geometry/Ring.d.ts +16 -0
- package/dist/geometry/Ring.d.ts.map +1 -0
- package/dist/geometry/Ring.js +44 -0
- package/dist/geometry/Ring.js.map +1 -0
- package/dist/geometry/RoundedBox.d.ts +22 -0
- package/dist/geometry/RoundedBox.d.ts.map +1 -0
- package/dist/geometry/RoundedBox.js +191 -0
- package/dist/geometry/RoundedBox.js.map +1 -0
- package/dist/geometry/Shape.d.ts +15 -0
- package/dist/geometry/Shape.d.ts.map +1 -0
- package/dist/geometry/Shape.js +44 -0
- package/dist/geometry/Shape.js.map +1 -0
- package/dist/geometry/Support.d.ts +137 -0
- package/dist/geometry/Support.d.ts.map +1 -0
- package/dist/geometry/Support.js +1066 -0
- package/dist/geometry/Support.js.map +1 -0
- package/dist/geometry/TorusKnot.d.ts +18 -0
- package/dist/geometry/TorusKnot.d.ts.map +1 -0
- package/dist/geometry/TorusKnot.js +83 -0
- package/dist/geometry/TorusKnot.js.map +1 -0
- package/dist/geometry/Tube.d.ts +19 -0
- package/dist/geometry/Tube.d.ts.map +1 -0
- package/dist/geometry/Tube.js +70 -0
- package/dist/geometry/Tube.js.map +1 -0
- package/dist/geometry/Wireframe.d.ts +19 -0
- package/dist/geometry/Wireframe.d.ts.map +1 -0
- package/dist/geometry/Wireframe.js +63 -0
- package/dist/geometry/Wireframe.js.map +1 -0
- package/dist/index.d.ts +38 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -3
- package/dist/index.js.map +1 -1
- package/dist/lanes/prd11.js +1 -1
- package/dist/lanes/prd11.js.map +1 -1
- package/dist/output/ToneMappingOperators.glsl.d.ts +1 -1
- package/dist/output/ToneMappingOperators.glsl.d.ts.map +1 -1
- package/dist/output/ToneMappingOperators.glsl.js +9 -1
- package/dist/output/ToneMappingOperators.glsl.js.map +1 -1
- package/dist/post/v2Entry.d.ts +1 -0
- package/dist/post/v2Entry.d.ts.map +1 -1
- package/dist/post/v2Entry.js.map +1 -1
- package/dist/post/v2Stages.d.ts +30 -1
- package/dist/post/v2Stages.d.ts.map +1 -1
- package/dist/post/v2Stages.js +87 -21
- package/dist/post/v2Stages.js.map +1 -1
- package/dist/program/ProgramCache.d.ts.map +1 -1
- package/dist/program/ProgramCache.js +12 -0
- package/dist/program/ProgramCache.js.map +1 -1
- package/dist/program/ProgramGenerator.d.ts.map +1 -1
- package/dist/program/ProgramGenerator.js +3 -0
- package/dist/program/ProgramGenerator.js.map +1 -1
- package/dist/reference/PostProcessPass.d.ts +1 -1
- package/dist/reference/PostProcessPass.d.ts.map +1 -1
- package/dist/reference/PostProcessPass.js +8 -1
- package/dist/reference/PostProcessPass.js.map +1 -1
- package/dist/renderer/CullingBatching.d.ts +44 -2
- package/dist/renderer/CullingBatching.d.ts.map +1 -1
- package/dist/renderer/CullingBatching.js +66 -11
- package/dist/renderer/CullingBatching.js.map +1 -1
- package/dist/shaders/chunks/lighting_mirrors.d.ts +2 -2
- package/dist/shaders/chunks/lighting_mirrors.d.ts.map +1 -1
- package/dist/shaders/chunks/lighting_mirrors.js.map +1 -1
- package/dist/shadows/DirectionalCascadeFitter.d.ts +8 -8
- package/dist/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
- package/dist/shadows/DirectionalCascadeFitter.js.map +1 -1
- package/dist/shadows/ShadowAtlas.d.ts +5 -5
- package/dist/shadows/ShadowAtlas.d.ts.map +1 -1
- package/dist/shadows/ShadowAtlas.js.map +1 -1
- package/dist/vfx/ProceduralVolumeEmitter.d.ts +11 -0
- package/dist/vfx/ProceduralVolumeEmitter.d.ts.map +1 -1
- package/dist/vfx/ProceduralVolumeEmitter.js +20 -6
- package/dist/vfx/ProceduralVolumeEmitter.js.map +1 -1
- package/dist/webgl2/ContextLifecycle.d.ts +36 -0
- package/dist/webgl2/ContextLifecycle.d.ts.map +1 -1
- package/dist/webgl2/ContextLifecycle.js +110 -2
- package/dist/webgl2/ContextLifecycle.js.map +1 -1
- package/dist/webgl2/LegacyPost.d.ts +16 -1
- package/dist/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/webgl2/LegacyPost.js +49 -16
- package/dist/webgl2/LegacyPost.js.map +1 -1
- package/dist/webgl2/MultiDraw.d.ts.map +1 -1
- package/dist/webgl2/MultiDraw.js +42 -2
- package/dist/webgl2/MultiDraw.js.map +1 -1
- package/dist/webgl2/TextureUpload.d.ts +7 -0
- package/dist/webgl2/TextureUpload.d.ts.map +1 -1
- package/dist/webgl2/TextureUpload.js +54 -10
- package/dist/webgl2/TextureUpload.js.map +1 -1
- package/package.json +3 -3
package/dist/UnlitMaterial.d.ts
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
1
|
import { Material, type RenderState } from "./Material.js";
|
|
2
|
+
import type { TextureBinding } from "./TextureBinding.js";
|
|
2
3
|
export interface UnlitMaterialOptions {
|
|
3
4
|
readonly name?: string;
|
|
4
5
|
readonly color?: readonly [number, number, number, number];
|
|
6
|
+
/**
|
|
7
|
+
* Point size in *CSS* pixels for `points` geometry (three's
|
|
8
|
+
* `PointsMaterial.size`). The L6 compiler folds devicePixelRatio into this
|
|
9
|
+
* before draw; no upper bound is imposed here — WebGL clamps to the device's
|
|
10
|
+
* `ALIASED_POINT_SIZE_RANGE` (three.js behaves the same way).
|
|
11
|
+
*/
|
|
5
12
|
readonly pointSize?: number;
|
|
13
|
+
/**
|
|
14
|
+
* three.js `PointsMaterial.sizeAttenuation` (SG-07): when true the generated
|
|
15
|
+
* program divides the (device-pixel) point size by view depth so distant
|
|
16
|
+
* points shrink. Consumed by the `prd15.parityPoints` ShaderFeature — on the
|
|
17
|
+
* legacy lean shader it is ignored.
|
|
18
|
+
*/
|
|
19
|
+
readonly sizeAttenuation?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* three.js `PointsMaterial.map` (SG-07): sampled at `gl_PointCoord` on the
|
|
22
|
+
* generated path via `prd15.parityPoints`. Stored under `u_pointMap` so it
|
|
23
|
+
* does not collide with the mesh `u_baseColorMap` (which samples `v_uv`).
|
|
24
|
+
*/
|
|
25
|
+
readonly map?: TextureBinding;
|
|
26
|
+
/**
|
|
27
|
+
* three.js `Material.alphaTest` (SG-07/SG-08): >0 selects the generated
|
|
28
|
+
* `ALPHA_MASK` path (`u_alphaCutoff` discards below the threshold).
|
|
29
|
+
*/
|
|
30
|
+
readonly alphaTest?: number;
|
|
31
|
+
/** Geometry carries `a_color`; the generated path multiplies `a3dBaseColor`. */
|
|
32
|
+
readonly vertexColors?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* SG-08 marker: this unlit material drives a billboard sprite quad. Selects
|
|
35
|
+
* the `prd15.paritySprite` ShaderFeature (camera-facing `gl_Position`
|
|
36
|
+
* rebuild, anchor + rotation + size attenuation).
|
|
37
|
+
*/
|
|
38
|
+
readonly spriteMode?: boolean;
|
|
39
|
+
/** Sprite anchor in [0,1]² (three's `Sprite.center`); default [0.5, 0.5]. */
|
|
40
|
+
readonly spriteCenter?: readonly [number, number];
|
|
41
|
+
/** Sprite rotation in radians (three's `SpriteMaterial.rotation`). */
|
|
42
|
+
readonly spriteRotation?: number;
|
|
43
|
+
/** three's `Sprite.sizeAttenuation` (default true). */
|
|
44
|
+
readonly spriteSizeAttenuation?: boolean;
|
|
6
45
|
readonly roundPoints?: boolean;
|
|
7
46
|
readonly renderState?: Partial<RenderState>;
|
|
8
47
|
}
|
|
@@ -10,7 +49,14 @@ export declare class UnlitMaterial extends Material {
|
|
|
10
49
|
constructor(options?: UnlitMaterialOptions);
|
|
11
50
|
set color(value: readonly [number, number, number, number]);
|
|
12
51
|
get color(): readonly [number, number, number, number];
|
|
52
|
+
/**
|
|
53
|
+
* SG-07: `pointSize` is finite-positive with no fixed upper bound — the GL
|
|
54
|
+
* implementation clamps to `ALIASED_POINT_SIZE_RANGE` at draw time, matching
|
|
55
|
+
* three.js behaviour on oversized points.
|
|
56
|
+
*/
|
|
13
57
|
set pointSize(value: number);
|
|
14
58
|
get pointSize(): number;
|
|
59
|
+
/** L6: per-frame device-pixel-ratio fold for point size (compiler-owned). */
|
|
60
|
+
set pointSizeAttenuation(enabled: boolean);
|
|
15
61
|
}
|
|
16
62
|
//# sourceMappingURL=UnlitMaterial.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnlitMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/UnlitMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"UnlitMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/UnlitMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7C;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,GAAE,oBAAyB;IAqD9C,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAGzD;IAED,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAErD;IAED;;;;OAIG;IACH,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,6EAA6E;IAC7E,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAExC;CACF"}
|
package/dist/UnlitMaterial.js
CHANGED
|
@@ -5,6 +5,10 @@ export class UnlitMaterial extends Material {
|
|
|
5
5
|
const color = options.color ?? [1, 1, 1, 1];
|
|
6
6
|
validateColor(color);
|
|
7
7
|
validatePointSize(options.pointSize ?? 7);
|
|
8
|
+
const center = options.spriteCenter ?? [0.5, 0.5];
|
|
9
|
+
if (center.length !== 2 || center.some((v) => !Number.isFinite(v))) {
|
|
10
|
+
throw new Error("UnlitMaterial spriteCenter must be two finite numbers");
|
|
11
|
+
}
|
|
8
12
|
super({
|
|
9
13
|
name: options.name ?? "unlit",
|
|
10
14
|
shaderKey: DEFAULT_UNLIT_SHADER_NAME,
|
|
@@ -13,6 +17,15 @@ export class UnlitMaterial extends Material {
|
|
|
13
17
|
u_baseColor: color,
|
|
14
18
|
u_pointSize: options.pointSize ?? 7,
|
|
15
19
|
u_roundPoints: options.roundPoints === true ? 1 : 0,
|
|
20
|
+
// SG-07 (L6): generated-path markers — ignored by the legacy shader.
|
|
21
|
+
u_pointSizeAttenuation: options.sizeAttenuation === true ? 1 : 0,
|
|
22
|
+
...(options.map ? { u_pointMap: options.map } : {}),
|
|
23
|
+
u_alphaCutoff: options.alphaTest ?? 0,
|
|
24
|
+
// SG-08 (L6): billboard sprite markers.
|
|
25
|
+
u_spriteMode: options.spriteMode === true ? 1 : 0,
|
|
26
|
+
u_spriteRotation: options.spriteRotation ?? 0,
|
|
27
|
+
u_spriteCenter: [center[0], center[1]],
|
|
28
|
+
u_spriteSizeAttenuation: options.spriteSizeAttenuation === false ? 0 : 1,
|
|
16
29
|
u_modelViewProjection: identityMatrix(),
|
|
17
30
|
// P2 instanced-GLB path (muse3jsparity-PRD): zero instances by
|
|
18
31
|
// default so non-instanced draws keep the legacy shader branch
|
|
@@ -21,11 +34,18 @@ export class UnlitMaterial extends Material {
|
|
|
21
34
|
u_instanceCount: 0,
|
|
22
35
|
u_instanceAttributeMode: 0
|
|
23
36
|
},
|
|
24
|
-
requiredAttributes: ["a_position"],
|
|
37
|
+
requiredAttributes: options.vertexColors === true ? ["a_position", "a_color"] : ["a_position"],
|
|
25
38
|
uniformSchema: [
|
|
26
39
|
{ name: "u_baseColor", kind: "vec4" },
|
|
27
40
|
{ name: "u_pointSize", kind: "float" },
|
|
28
41
|
{ name: "u_roundPoints", kind: "float" },
|
|
42
|
+
{ name: "u_pointSizeAttenuation", kind: "float", required: false },
|
|
43
|
+
{ name: "u_pointMap", kind: "texture2d", required: false },
|
|
44
|
+
{ name: "u_alphaCutoff", kind: "float", required: false },
|
|
45
|
+
{ name: "u_spriteMode", kind: "float", required: false },
|
|
46
|
+
{ name: "u_spriteRotation", kind: "float", required: false },
|
|
47
|
+
{ name: "u_spriteCenter", kind: "vec2", required: false },
|
|
48
|
+
{ name: "u_spriteSizeAttenuation", kind: "float", required: false },
|
|
29
49
|
{ name: "u_modelViewProjection", kind: "mat4" },
|
|
30
50
|
{ name: "u_instanceMatrices", kind: "any" },
|
|
31
51
|
{ name: "u_instanceCount", kind: "float" },
|
|
@@ -40,6 +60,11 @@ export class UnlitMaterial extends Material {
|
|
|
40
60
|
get color() {
|
|
41
61
|
return this.getParameter("u_baseColor");
|
|
42
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* SG-07: `pointSize` is finite-positive with no fixed upper bound — the GL
|
|
65
|
+
* implementation clamps to `ALIASED_POINT_SIZE_RANGE` at draw time, matching
|
|
66
|
+
* three.js behaviour on oversized points.
|
|
67
|
+
*/
|
|
43
68
|
set pointSize(value) {
|
|
44
69
|
validatePointSize(value);
|
|
45
70
|
this.setParameter("u_pointSize", value);
|
|
@@ -47,6 +72,10 @@ export class UnlitMaterial extends Material {
|
|
|
47
72
|
get pointSize() {
|
|
48
73
|
return this.getParameter("u_pointSize");
|
|
49
74
|
}
|
|
75
|
+
/** L6: per-frame device-pixel-ratio fold for point size (compiler-owned). */
|
|
76
|
+
set pointSizeAttenuation(enabled) {
|
|
77
|
+
this.setParameter("u_pointSizeAttenuation", enabled ? 1 : 0);
|
|
78
|
+
}
|
|
50
79
|
}
|
|
51
80
|
function validateColor(color) {
|
|
52
81
|
if (color.length !== 4 || color.some((channel) => channel < 0 || channel > 1 || !Number.isFinite(channel))) {
|
|
@@ -54,8 +83,8 @@ function validateColor(color) {
|
|
|
54
83
|
}
|
|
55
84
|
}
|
|
56
85
|
function validatePointSize(pointSize) {
|
|
57
|
-
if (!Number.isFinite(pointSize) || pointSize <= 0
|
|
58
|
-
throw new RangeError("UnlitMaterial pointSize must be
|
|
86
|
+
if (!Number.isFinite(pointSize) || pointSize <= 0) {
|
|
87
|
+
throw new RangeError("UnlitMaterial pointSize must be a positive finite number");
|
|
59
88
|
}
|
|
60
89
|
}
|
|
61
90
|
function identityMatrix() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnlitMaterial.js","sourceRoot":"","sources":["../../../../packages/rendering/src/UnlitMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"UnlitMaterial.js","sourceRoot":"","sources":["../../../../packages/rendering/src/UnlitMaterial.ts"],"names":[],"mappings":"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"}
|
package/dist/VertexFormat.d.ts
CHANGED
|
@@ -13,7 +13,25 @@ export type VertexAttributeSemantic = "position" | "normal" | "uv" | "uv1" | "ta
|
|
|
13
13
|
*/
|
|
14
14
|
| "lineCorner"
|
|
15
15
|
/** Accumulated arc length at this vertex, in world units, for dash patterns. */
|
|
16
|
-
| "lineDistance"
|
|
16
|
+
| "lineDistance"
|
|
17
|
+
/** R-23: author-named per-vertex attribute (`custom:<glslName>`); see {@link customAttributeSemantic}. */
|
|
18
|
+
| `custom:${string}`;
|
|
19
|
+
/**
|
|
20
|
+
* R-23: shader locations a custom attribute may take, in assignment order.
|
|
21
|
+
* Excludes 0/1/2 (position/normal/uv), 4 (color) and 7 (uv1) because the
|
|
22
|
+
* custom-geometry path emits those and the native WebGPU atlas shader keys on
|
|
23
|
+
* 4 and 7; also every entry is below WebGPU's default `maxVertexAttributes`
|
|
24
|
+
* (16), which a flat "14 and up" scheme would exceed after two attributes.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CUSTOM_ATTRIBUTE_LOCATION_POOL: readonly number[];
|
|
27
|
+
export declare function customAttributeSemantic(name: string): `custom:${string}`;
|
|
28
|
+
export declare function isCustomAttributeSemantic(semantic: VertexAttributeSemantic): semantic is `custom:${string}`;
|
|
29
|
+
/**
|
|
30
|
+
* Stable location assignment: names are sorted ascending (code-unit order) and
|
|
31
|
+
* take the pool in order, so a geometry's layout never depends on the order the
|
|
32
|
+
* author listed its attributes in.
|
|
33
|
+
*/
|
|
34
|
+
export declare function assignCustomAttributeLocations(names: readonly string[]): ReadonlyMap<string, number>;
|
|
17
35
|
export type VertexAttributeType = "float32";
|
|
18
36
|
export interface VertexAttributeDescriptor {
|
|
19
37
|
readonly semantic: VertexAttributeSemantic;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VertexFormat.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/VertexFormat.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS;AACX,+EAA+E;GAC7E,SAAS;AACX,8CAA8C;GAC5C,UAAU;AACZ,wFAAwF;GACtF,WAAW;AACb,+DAA+D;GAC7D,SAAS;AACX;;;GAGG;GACD,YAAY;AACd,gFAAgF;GAC9E,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"VertexFormat.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/VertexFormat.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS;AACX,+EAA+E;GAC7E,SAAS;AACX,8CAA8C;GAC5C,UAAU;AACZ,wFAAwF;GACtF,WAAW;AACb,+DAA+D;GAC7D,SAAS;AACX;;;GAGG;GACD,YAAY;AACd,gFAAgF;GAC9E,cAAc;AAChB,0GAA0G;GACxG,UAAU,MAAM,EAAE,CAAC;AAIvB;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EAA4C,CAAC;AAEzG,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,MAAM,EAAE,CAExE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,QAAQ,IAAI,UAAU,MAAM,EAAE,CAE3G;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpG;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,SAAgB,QAAQ,EAAE,uBAAuB,CAAC;IAClD,SAAgB,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,mBAAmB,CAAC;IAC1C,SAAgB,UAAU,EAAE,OAAO,CAAC;IACpC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,yBAAyB;IAajD,IAAI,UAAU,IAAI,MAAM,CAEvB;CACF;AAED,qBAAa,YAAY;IACvB,SAAgB,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvD,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,SAAS,yBAAyB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM;IA+B7E,MAAM,CAAC,QAAQ,CAAC,EAAE,eAA8E;IAEhG,MAAM,CAAC,QAAQ,CAAC,IAAI,eAMlB;IAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,eAOpB;IAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,eAQtB;IAEF;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,eASxB;IAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,eAOpB;IAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,eAQtB;IAEF;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,eASpB;IAEF,qEAAqE;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ,eAUtB;IAEF;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,eAS/B;IAEF,YAAY,CAAC,QAAQ,EAAE,uBAAuB,GAAG,eAAe;IAQhE,YAAY,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO;CAGzD"}
|
package/dist/VertexFormat.js
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
const CUSTOM_SEMANTIC_PREFIX = "custom:";
|
|
2
|
+
/**
|
|
3
|
+
* R-23: shader locations a custom attribute may take, in assignment order.
|
|
4
|
+
* Excludes 0/1/2 (position/normal/uv), 4 (color) and 7 (uv1) because the
|
|
5
|
+
* custom-geometry path emits those and the native WebGPU atlas shader keys on
|
|
6
|
+
* 4 and 7; also every entry is below WebGPU's default `maxVertexAttributes`
|
|
7
|
+
* (16), which a flat "14 and up" scheme would exceed after two attributes.
|
|
8
|
+
*/
|
|
9
|
+
export const CUSTOM_ATTRIBUTE_LOCATION_POOL = [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15];
|
|
10
|
+
export function customAttributeSemantic(name) {
|
|
11
|
+
return `${CUSTOM_SEMANTIC_PREFIX}${name}`;
|
|
12
|
+
}
|
|
13
|
+
export function isCustomAttributeSemantic(semantic) {
|
|
14
|
+
return semantic.startsWith(CUSTOM_SEMANTIC_PREFIX);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Stable location assignment: names are sorted ascending (code-unit order) and
|
|
18
|
+
* take the pool in order, so a geometry's layout never depends on the order the
|
|
19
|
+
* author listed its attributes in.
|
|
20
|
+
*/
|
|
21
|
+
export function assignCustomAttributeLocations(names) {
|
|
22
|
+
if (names.length > CUSTOM_ATTRIBUTE_LOCATION_POOL.length) {
|
|
23
|
+
throw new Error(`At most ${CUSTOM_ATTRIBUTE_LOCATION_POOL.length} custom vertex attributes are supported per geometry, got ${names.length}`);
|
|
24
|
+
}
|
|
25
|
+
const sorted = [...new Set(names)].sort();
|
|
26
|
+
return new Map(sorted.map((name, index) => [name, CUSTOM_ATTRIBUTE_LOCATION_POOL[index]]));
|
|
27
|
+
}
|
|
1
28
|
export class VertexAttribute {
|
|
2
29
|
semantic;
|
|
3
30
|
components;
|
|
@@ -30,12 +57,19 @@ export class VertexFormat {
|
|
|
30
57
|
throw new Error("VertexFormat requires at least one attribute");
|
|
31
58
|
}
|
|
32
59
|
const seen = new Set();
|
|
60
|
+
const locations = new Map();
|
|
33
61
|
this.attributes = attributes.map((attribute) => {
|
|
34
62
|
if (seen.has(attribute.semantic)) {
|
|
35
63
|
throw new Error(`Duplicate vertex semantic: ${attribute.semantic}`);
|
|
36
64
|
}
|
|
37
65
|
seen.add(attribute.semantic);
|
|
38
|
-
|
|
66
|
+
const built = new VertexAttribute(attribute);
|
|
67
|
+
const owner = locations.get(built.shaderLocation);
|
|
68
|
+
if (owner !== undefined && (isCustomAttributeSemantic(owner) || isCustomAttributeSemantic(built.semantic))) {
|
|
69
|
+
throw new Error(`Vertex semantics ${owner} and ${built.semantic} share shader location ${built.shaderLocation}`);
|
|
70
|
+
}
|
|
71
|
+
locations.set(built.shaderLocation, built.semantic);
|
|
72
|
+
return built;
|
|
39
73
|
});
|
|
40
74
|
const minimumStride = Math.max(...this.attributes.map((attribute) => attribute.offset + attribute.byteLength));
|
|
41
75
|
this.stride = stride ?? minimumStride;
|
|
@@ -134,6 +168,9 @@ export class VertexFormat {
|
|
|
134
168
|
}
|
|
135
169
|
}
|
|
136
170
|
function defaultShaderLocation(semantic) {
|
|
171
|
+
if (isCustomAttributeSemantic(semantic)) {
|
|
172
|
+
throw new Error(`Custom vertex attribute ${semantic} requires an explicit shaderLocation (use assignCustomAttributeLocations)`);
|
|
173
|
+
}
|
|
137
174
|
switch (semantic) {
|
|
138
175
|
case "position":
|
|
139
176
|
return 0;
|
|
@@ -166,6 +203,8 @@ function defaultShaderLocation(semantic) {
|
|
|
166
203
|
}
|
|
167
204
|
}
|
|
168
205
|
function defaultShaderName(semantic) {
|
|
206
|
+
if (isCustomAttributeSemantic(semantic))
|
|
207
|
+
return semantic.slice(CUSTOM_SEMANTIC_PREFIX.length);
|
|
169
208
|
switch (semantic) {
|
|
170
209
|
case "position":
|
|
171
210
|
return "a_position";
|
package/dist/VertexFormat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VertexFormat.js","sourceRoot":"","sources":["../../../../packages/rendering/src/VertexFormat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VertexFormat.js","sourceRoot":"","sources":["../../../../packages/rendering/src/VertexFormat.ts"],"names":[],"mappings":"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"}
|
package/dist/WebGL2Device.d.ts
CHANGED
|
@@ -216,6 +216,22 @@ export declare class WebGL2Device implements RenderDevice {
|
|
|
216
216
|
*/
|
|
217
217
|
private createFeatureRenderTarget;
|
|
218
218
|
setRenderTarget(target: RenderTarget | null): void;
|
|
219
|
+
/**
|
|
220
|
+
* threejs-parity L7/SC-01: raster viewport in target pixels, origin bottom-left.
|
|
221
|
+
* Default: frame-scoped — applies while the current target stays bound and
|
|
222
|
+
* resets at `beginFrame`. `{ persistent: true }` (XR): scoped to the default
|
|
223
|
+
* (canvas/external) framebuffer and survives `beginFrame` and the post/present
|
|
224
|
+
* passes until `resetViewport()`.
|
|
225
|
+
*/
|
|
226
|
+
setViewport(x: number, y: number, width: number, height: number, options?: {
|
|
227
|
+
readonly persistent?: boolean;
|
|
228
|
+
}): void;
|
|
229
|
+
resetViewport(): void;
|
|
230
|
+
/** XR: frames draw into `framebuffer` instead of the canvas until this is called with null. */
|
|
231
|
+
setExternalFramebuffer(framebuffer: unknown | null, width: number, height: number): void;
|
|
232
|
+
/** threejs-parity L7/SC-01: scissor rect; clipping is gated by `setScissorTest`. */
|
|
233
|
+
setScissor(x: number, y: number, width: number, height: number): void;
|
|
234
|
+
setScissorTest(enabled: boolean): void;
|
|
219
235
|
getRenderTarget(): RenderTarget | null;
|
|
220
236
|
private resolveMultisampleTarget;
|
|
221
237
|
captureState(): ReadonlyMap<string, string | number | boolean | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGL2Device.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGL2Device.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAIhB,KAAK,iCAAiC,EACtC,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"WebGL2Device.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGL2Device.ts"],"names":[],"mappings":"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"}
|
package/dist/WebGL2Device.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { temporalAccumulationWeight } from "./TemporalMath.js";
|
|
2
2
|
import { invertSsrProjection } from "./ProjectionMath.js";
|
|
3
|
-
import { RenderDeviceError, resolveGpuTargetOwner, spreadGpuTargetInventory, } from "./RenderDevice.js";
|
|
3
|
+
import { RenderDeviceError, resolveGpuTargetOwner, shaderCompileFailureMessage, spreadGpuTargetInventory, } from "./RenderDevice.js";
|
|
4
4
|
import { Texture, isCompressedTextureFormat, isFloatColorTextureFormat } from "./Texture.js";
|
|
5
5
|
import { isTextureBinding, TextureBinding } from "./TextureBinding.js";
|
|
6
6
|
import {} from "./VertexFormat.js";
|
|
@@ -430,7 +430,7 @@ export class WebGL2Device {
|
|
|
430
430
|
this.gl.deleteShader(vertexShader);
|
|
431
431
|
this.gl.deleteShader(fragmentShader);
|
|
432
432
|
this.gl.deleteProgram(program);
|
|
433
|
-
throw new RenderDeviceError(
|
|
433
|
+
throw new RenderDeviceError(shaderCompileFailureMessage(log, { label: sources.label, stage: type }), "SHADER_COMPILE_FAILED", { label: sources.label, log, stage: type });
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
436
|
this.gl.deleteShader(vertexShader);
|
|
@@ -1036,8 +1036,9 @@ export class WebGL2Device {
|
|
|
1036
1036
|
}
|
|
1037
1037
|
if (target === null) {
|
|
1038
1038
|
this.host.activeRenderTarget = null;
|
|
1039
|
-
|
|
1040
|
-
this.stateCache.
|
|
1039
|
+
const defaultFramebuffer = this.host.lifecycle.defaultFramebuffer();
|
|
1040
|
+
this.stateCache.bindFramebuffer(this.gl.FRAMEBUFFER, defaultFramebuffer, () => this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, defaultFramebuffer));
|
|
1041
|
+
this.host.lifecycle.applyViewState();
|
|
1041
1042
|
return;
|
|
1042
1043
|
}
|
|
1043
1044
|
if (!(target instanceof WebGL2RenderTarget) || !this.renderTargets.has(target) || target.disposed) {
|
|
@@ -1047,7 +1048,31 @@ export class WebGL2Device {
|
|
|
1047
1048
|
}
|
|
1048
1049
|
this.host.activeRenderTarget = target;
|
|
1049
1050
|
this.stateCache.bindFramebuffer(this.gl.FRAMEBUFFER, target.drawFramebuffer, () => this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, target.drawFramebuffer));
|
|
1050
|
-
this.
|
|
1051
|
+
this.host.lifecycle.applyViewState();
|
|
1052
|
+
}
|
|
1053
|
+
/**
|
|
1054
|
+
* threejs-parity L7/SC-01: raster viewport in target pixels, origin bottom-left.
|
|
1055
|
+
* Default: frame-scoped — applies while the current target stays bound and
|
|
1056
|
+
* resets at `beginFrame`. `{ persistent: true }` (XR): scoped to the default
|
|
1057
|
+
* (canvas/external) framebuffer and survives `beginFrame` and the post/present
|
|
1058
|
+
* passes until `resetViewport()`.
|
|
1059
|
+
*/
|
|
1060
|
+
setViewport(x, y, width, height, options) {
|
|
1061
|
+
this.host.lifecycle.setViewport(x, y, width, height, options);
|
|
1062
|
+
}
|
|
1063
|
+
resetViewport() {
|
|
1064
|
+
this.host.lifecycle.resetViewport();
|
|
1065
|
+
}
|
|
1066
|
+
/** XR: frames draw into `framebuffer` instead of the canvas until this is called with null. */
|
|
1067
|
+
setExternalFramebuffer(framebuffer, width, height) {
|
|
1068
|
+
this.host.lifecycle.setExternalFramebuffer(framebuffer, width, height);
|
|
1069
|
+
}
|
|
1070
|
+
/** threejs-parity L7/SC-01: scissor rect; clipping is gated by `setScissorTest`. */
|
|
1071
|
+
setScissor(x, y, width, height) {
|
|
1072
|
+
this.host.lifecycle.setScissor(x, y, width, height);
|
|
1073
|
+
}
|
|
1074
|
+
setScissorTest(enabled) {
|
|
1075
|
+
this.host.lifecycle.setScissorTest(enabled);
|
|
1051
1076
|
}
|
|
1052
1077
|
getRenderTarget() {
|
|
1053
1078
|
this.host.lifecycle.assertAlive();
|
|
@@ -1307,7 +1332,7 @@ export class WebGL2Device {
|
|
|
1307
1332
|
if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
|
|
1308
1333
|
const log = this.gl.getShaderInfoLog(shader) ?? "Unknown shader compile error";
|
|
1309
1334
|
this.gl.deleteShader(shader);
|
|
1310
|
-
throw new RenderDeviceError(
|
|
1335
|
+
throw new RenderDeviceError(shaderCompileFailureMessage(log, { label }), "SHADER_COMPILE_FAILED", { label, log });
|
|
1311
1336
|
}
|
|
1312
1337
|
return shader;
|
|
1313
1338
|
}
|