@call-me-sensei/toonlab 0.4.19 → 0.4.21
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/NPM-LIBRARY.md +230 -0
- package/README.md +78 -36
- package/agents/PROMPTS.md +91 -0
- package/agents/README.md +9 -14
- package/agents/claude/CLAUDE.md +8 -0
- package/agents/codex/AGENTS.md +161 -0
- package/agents/cursor/toonlab.mdc +37 -0
- package/agents/references/mcp-asset-discovery.md +12 -9
- package/agents/references/runtime-entry-points.md +5 -4
- package/agents/skills/claude/asset-sourcing/SKILL.md +9 -6
- package/agents/skills/claude/rock-ground-shaders/SKILL.md +16 -0
- package/agents/skills/claude/vegetation-sky/SKILL.md +7 -4
- package/agents/skills/codex/asset-sourcing/SKILL.md +9 -6
- package/agents/skills/codex/rock-ground-shaders/SKILL.md +16 -0
- package/agents/skills/codex/vegetation-sky/SKILL.md +7 -4
- package/cli/toonlab.mjs +3 -2
- package/database/fal-patina.mjs +131 -0
- package/database/generation-service.mjs +108 -7
- package/database/migrations/0007_creation_revisions.sql +80 -0
- package/database/migrations/0008_creation_revision_hardening.sql +98 -0
- package/database/migrations/0009_creation_revision_delete_integrity.sql +11 -0
- package/database/migrations/0010_external_catalog_assets.sql +28 -0
- package/database/providers.mjs +195 -16
- package/database/repository.mjs +518 -70
- package/database/seeds/catalog/0003_2026-08-open-assets.sql +159086 -0
- package/database/seeds/catalog/0004_2026-08-c7-rocks.sql +39405 -0
- package/mcp/public-catalog.mjs +4 -52
- package/mcp/server.mjs +175 -12
- package/mcp/vite-plugin.mjs +78 -2
- package/package.json +32 -12
- package/scripts/generate-catalog-seed.mjs +34 -7
- package/src/asset-policy/catalogLicenses.js +64 -6
- package/src/assetlib/loadImported.js +15 -1
- package/src/catalog/officialCatalogAssetRuntime.js +13 -2
- package/src/catalog/officialCatalogLod.js +34 -1
- package/src/catalog/officialCatalogPlacement.js +29 -14
- package/src/character/animationRetarget.js +2 -0
- package/src/character/characterRig.js +6 -1
- package/src/character/characterRuntime.js +175 -7
- package/src/environment/environmentMaterialAdapter.js +30 -0
- package/src/environment/environmentPresets.js +90 -0
- package/src/environment/environmentSunShadowPass.js +42 -0
- package/src/environment/toonLabSurfaceLighting.js +108 -10
- package/src/environment/urbanPropMaterial.js +104 -2
- package/src/lighting/lightingSystem.js +65 -10
- package/src/renderer/index.js +7 -0
- package/src/renderer/styleComparison.js +985 -0
- package/src/rock-shader/index.js +5 -0
- package/src/rock-shader/rockGeometryDetail.js +701 -0
- package/src/rock-shader/rockMaterial.js +782 -39
- package/src/rock-shader/rockRegionRuntime.js +185 -0
- package/src/rock-shader/rockSemanticMaterialRuntime.js +337 -0
- package/src/rock-shader/rockShaderRuntime.js +354 -67
- package/src/rock-shader/rockShaderSettings.js +246 -16
- package/src/rock-shader/rockTangentIntegrity.js +136 -0
- package/src/rock-shader/rockTextureIntegrity.js +115 -0
- package/src/rockgen/index.js +1 -0
- package/src/rockgen/rockDocument.js +27 -3
- package/src/rockgen/surface/c7GeologySurface.js +372 -0
- package/src/shaders-tsl/water.js +8 -0
- package/src/sky/cloudShadow.js +25 -1
- package/src/sky/skySystem.js +9 -0
- package/src/styles/index.js +23 -0
- package/src/styles/neutralStylePresets.js +712 -0
- package/src/styles/sceneStyleRuntime.js +51 -4
- package/src/styles/styleAdapters.js +13 -2
- package/src/styles/styleBundle.js +1 -1
- package/src/texgen/evaluateTexture.js +30 -3
- package/src/texgen/textureGenerators.js +63 -31
- package/src/texgen/textureSettings.js +25 -8
- package/src/toon/toonSettings.js +96 -2
- package/src/vegetation/branchTree.js +327 -42
- package/src/vegetation/index.js +24 -2
- package/src/vegetation/scatter.js +372 -1
- package/src/vegetation/stylizedTree.js +312 -126
- package/src/vegetation/stylizedTreeFoliage.js +229 -7
- package/src/vegetation/treeSurfaceTextures.js +328 -0
- package/src/version.js +1 -1
- package/src/water/waterSettings.js +15 -7
- package/types/asset-policy/catalogLicenses.d.ts +2 -0
- package/types/asset-policy/index.d.ts +2 -0
- package/types/assetlib/loadImported.d.ts +3 -1
- package/types/catalog/officialCatalogLod.d.ts +63 -5
- package/types/character/characterRig.d.ts +59 -0
- package/types/character/characterRuntime.d.ts +1 -0
- package/types/environment/environmentMaterialAdapter.d.ts +3 -1
- package/types/environment/toonLabSurfaceLighting.d.ts +20 -3
- package/types/index.d.ts +89 -7
- package/types/lighting/lightingSystem.d.ts +7 -0
- package/types/react/index.d.ts +20 -0
- package/types/renderer/index.d.ts +1 -0
- package/types/renderer/styleComparison.d.ts +409 -0
- package/types/rock-shader/index.d.ts +5 -0
- package/types/rock-shader/rockGeometryDetail.d.ts +300 -0
- package/types/rock-shader/rockMaterial.d.ts +3 -0
- package/types/rock-shader/rockRegionRuntime.d.ts +86 -0
- package/types/rock-shader/rockSemanticMaterialRuntime.d.ts +29 -0
- package/types/rock-shader/rockShaderRuntime.d.ts +2 -0
- package/types/rock-shader/rockShaderSettings.d.ts +19 -5
- package/types/rock-shader/rockTangentIntegrity.d.ts +51 -0
- package/types/rock-shader/rockTextureIntegrity.d.ts +61 -0
- package/types/rockgen/index.d.ts +1 -0
- package/types/rockgen/rockDocument.d.ts +29 -1
- package/types/rockgen/surface/c7GeologySurface.d.ts +8 -0
- package/types/sky/cloudShadow.d.ts +1 -0
- package/types/styles/index.d.ts +1 -0
- package/types/styles/neutralStylePresets.d.ts +944 -0
- package/types/styles/sceneStyleRuntime.d.ts +20 -0
- package/types/vegetation/branchTree.d.ts +4 -0
- package/types/vegetation/index.d.ts +9 -7
- package/types/vegetation/scatter.d.ts +1 -0
- package/types/vegetation/stylizedTree.d.ts +1 -2
- package/types/vegetation/stylizedTreeFoliage.d.ts +1 -0
- package/types/version.d.ts +1 -1
- package/agents/references/geology-playbook.md +0 -118
- package/agents/skills/claude/karst-cliff-construction/SKILL.md +0 -258
- package/agents/skills/claude/outdoor-world/SKILL.md +0 -492
- package/agents/skills/claude/outdoor-world/references/coastal-landform-formation.md +0 -100
- package/agents/skills/codex/karst-cliff-construction/SKILL.md +0 -258
- package/agents/skills/codex/outdoor-world/SKILL.md +0 -492
- package/agents/skills/codex/outdoor-world/references/coastal-landform-formation.md +0 -100
- package/src/vegetation/legacyTreePresets.js +0 -120
- package/types/vegetation/legacyTreePresets.d.ts +0 -22
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot of everything the §11 contract requires to be equal across both
|
|
3
|
+
* halves: camera matrices, light transforms, exposure and render state, plus
|
|
4
|
+
* the animation clock of any registered mixer. Compared before and after a
|
|
5
|
+
* composite render — if the wipe moved any of them, the A/B is not honest.
|
|
6
|
+
*/
|
|
7
|
+
export function captureComparisonFrameState({ camera, mixers, renderer, scene }: {
|
|
8
|
+
camera: any;
|
|
9
|
+
mixers?: any[];
|
|
10
|
+
renderer: any;
|
|
11
|
+
scene: any;
|
|
12
|
+
}): {
|
|
13
|
+
camera: {
|
|
14
|
+
far: number;
|
|
15
|
+
fov: number;
|
|
16
|
+
matrixWorld: any;
|
|
17
|
+
matrixWorldInverse: any;
|
|
18
|
+
near: number;
|
|
19
|
+
projectionMatrix: any;
|
|
20
|
+
zoom: number;
|
|
21
|
+
};
|
|
22
|
+
lights: any[];
|
|
23
|
+
mixers: {
|
|
24
|
+
time: number;
|
|
25
|
+
}[];
|
|
26
|
+
renderState: {
|
|
27
|
+
outputColorSpace: any;
|
|
28
|
+
shadowMapEnabled: boolean;
|
|
29
|
+
shadowMapType: any;
|
|
30
|
+
toneMapping: any;
|
|
31
|
+
toneMappingExposure: number;
|
|
32
|
+
};
|
|
33
|
+
scene: {
|
|
34
|
+
backgroundIntensity: number;
|
|
35
|
+
environmentIntensity: number;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Creates a single-load A/B comparison over one scene and one camera.
|
|
40
|
+
*
|
|
41
|
+
* @param {object} options
|
|
42
|
+
* @param {StyleComparisonRenderer} options.renderer
|
|
43
|
+
* @param {THREE.Scene} options.scene
|
|
44
|
+
* @param {THREE.Camera} options.camera
|
|
45
|
+
* @param {'vertical'|'horizontal'} [options.axis='vertical'] Divider orientation.
|
|
46
|
+
* `vertical` puts the `before` variant on the left; `horizontal` puts it on
|
|
47
|
+
* the bottom.
|
|
48
|
+
* @param {number} [options.split=0.5] Fraction of the frame showing `before`.
|
|
49
|
+
* @param {{after: string, before: string}} [options.variants]
|
|
50
|
+
* @param {boolean} [options.refreshRenderPasses=true] Call each tracked root's
|
|
51
|
+
* `userData.toonlabCharacterStyleIntegration.refresh()` after a swap so the
|
|
52
|
+
* depth prepass / self-shadow target binds the live materials.
|
|
53
|
+
*/
|
|
54
|
+
export function createStyleComparison({ axis, camera, refreshRenderPasses, renderer, scene, split, variants, }?: {
|
|
55
|
+
renderer: StyleComparisonRenderer;
|
|
56
|
+
scene: THREE.Scene;
|
|
57
|
+
camera: THREE.Camera;
|
|
58
|
+
axis?: "vertical" | "horizontal";
|
|
59
|
+
split?: number;
|
|
60
|
+
variants?: {
|
|
61
|
+
after: string;
|
|
62
|
+
before: string;
|
|
63
|
+
};
|
|
64
|
+
refreshRenderPasses?: boolean;
|
|
65
|
+
}): {
|
|
66
|
+
activate: (variantId: string, { force }?: {
|
|
67
|
+
force?: boolean;
|
|
68
|
+
}) => object;
|
|
69
|
+
auditIdentity: () => {
|
|
70
|
+
axis: "vertical" | "horizontal";
|
|
71
|
+
exposureDrift: any;
|
|
72
|
+
frameState: {
|
|
73
|
+
camera: {
|
|
74
|
+
far: number;
|
|
75
|
+
fov: number;
|
|
76
|
+
matrixWorld: any;
|
|
77
|
+
matrixWorldInverse: any;
|
|
78
|
+
near: number;
|
|
79
|
+
projectionMatrix: any;
|
|
80
|
+
zoom: number;
|
|
81
|
+
};
|
|
82
|
+
lights: any[];
|
|
83
|
+
mixers: {
|
|
84
|
+
time: number;
|
|
85
|
+
}[];
|
|
86
|
+
renderState: {
|
|
87
|
+
outputColorSpace: any;
|
|
88
|
+
shadowMapEnabled: boolean;
|
|
89
|
+
shadowMapType: any;
|
|
90
|
+
toneMapping: any;
|
|
91
|
+
toneMappingExposure: number;
|
|
92
|
+
};
|
|
93
|
+
scene: {
|
|
94
|
+
backgroundIntensity: number;
|
|
95
|
+
environmentIntensity: number;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
issues: string[];
|
|
99
|
+
mixerCount: number;
|
|
100
|
+
ok: boolean;
|
|
101
|
+
sharedGeometryNodes: number;
|
|
102
|
+
split: number;
|
|
103
|
+
trackedNodes: number;
|
|
104
|
+
trackedRoots: number;
|
|
105
|
+
variants: any[];
|
|
106
|
+
variantsWithDivergentMaterials: number;
|
|
107
|
+
};
|
|
108
|
+
capture: (variantId: string, { label }?: {
|
|
109
|
+
label?: string;
|
|
110
|
+
}) => {
|
|
111
|
+
id: string;
|
|
112
|
+
label: string;
|
|
113
|
+
materialCount: number;
|
|
114
|
+
nodeCount: number;
|
|
115
|
+
};
|
|
116
|
+
readonly activeVariant: any;
|
|
117
|
+
/** Non-null when exposure or tone mapping moved during the last composite. */
|
|
118
|
+
readonly exposureDrift: any;
|
|
119
|
+
readonly axis: "vertical" | "horizontal";
|
|
120
|
+
readonly camera: THREE.Camera;
|
|
121
|
+
readonly mixers: any[];
|
|
122
|
+
readonly renderer: StyleComparisonRenderer;
|
|
123
|
+
readonly roots: THREE.Object3D<THREE.Object3DEventMap>[];
|
|
124
|
+
readonly scene: THREE.Scene<THREE.Object3DEventMap>;
|
|
125
|
+
readonly split: number;
|
|
126
|
+
readonly variantIds: any[];
|
|
127
|
+
readonly variants: {
|
|
128
|
+
after: string;
|
|
129
|
+
before: string;
|
|
130
|
+
};
|
|
131
|
+
dispose(): void;
|
|
132
|
+
render: ({ split: splitOverride, target }?: StyleComparisonRenderOptions) => StyleComparisonRenderResult;
|
|
133
|
+
renderVariant: (variantId: string, { target }?: StyleComparisonVariantRenderOptions) => void;
|
|
134
|
+
/** @type {(fraction: number, size?: StyleComparisonSize) => StyleComparisonRect} */
|
|
135
|
+
scissorRectFor: (fraction: number, size?: StyleComparisonSize) => StyleComparisonRect;
|
|
136
|
+
/** @param {StyleComparisonAxis} next @returns {StyleComparisonAxis} */
|
|
137
|
+
setAxis(next: StyleComparisonAxis): StyleComparisonAxis;
|
|
138
|
+
/** @param {number} next @returns {number} */
|
|
139
|
+
setSplit(next: number): number;
|
|
140
|
+
/**
|
|
141
|
+
* @param {Partial<StyleComparisonVariantPair>} [pair]
|
|
142
|
+
* @returns {StyleComparisonVariantPair}
|
|
143
|
+
*/
|
|
144
|
+
setVariants({ after, before }?: Partial<StyleComparisonVariantPair>): StyleComparisonVariantPair;
|
|
145
|
+
track: (root: THREE.Object3D, { mixer }?: {
|
|
146
|
+
mixer?: THREE.AnimationMixer | null;
|
|
147
|
+
}) => () => void;
|
|
148
|
+
trackState: (id: string, { apply, capture }: {
|
|
149
|
+
apply: (value: unknown) => void;
|
|
150
|
+
capture: () => unknown;
|
|
151
|
+
}) => () => void;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Proves that a comparison is a true renderer split of one framing, not two
|
|
155
|
+
* separately framed images — and that everything outside the treated subject
|
|
156
|
+
* is bit-identical between the halves.
|
|
157
|
+
*
|
|
158
|
+
* The five assertions:
|
|
159
|
+
*
|
|
160
|
+
* 1. `split = 0` is bit-identical to a full-frame render of the `after`
|
|
161
|
+
* variant.
|
|
162
|
+
* 2. `split = 1` is bit-identical to a full-frame render of the `before`
|
|
163
|
+
* variant.
|
|
164
|
+
* 3. At any intermediate split, the region inside the scissor is bit-identical
|
|
165
|
+
* to the SAME region of the `before` full frame, and the region outside it
|
|
166
|
+
* is bit-identical to the same region of the `after` full frame. A pixel at
|
|
167
|
+
* (x, y) in the wipe therefore equals that pixel in a full-frame render of
|
|
168
|
+
* its own variant — which is only possible if both halves share one camera.
|
|
169
|
+
* 4. Camera matrices, light transforms, exposure, tone mapping, shadow state
|
|
170
|
+
* and every registered animation clock are unchanged by the composite
|
|
171
|
+
* render.
|
|
172
|
+
* 5. Pixels that differ between the two variants lie inside the region the
|
|
173
|
+
* tracked subject affects (measured by rendering with the subject hidden),
|
|
174
|
+
* so nothing outside the intended material treatment moved.
|
|
175
|
+
*
|
|
176
|
+
* Deterministic and reusable: it renders into its own render target, so it does
|
|
177
|
+
* not depend on canvas size, page compositing or screenshot timing. This is the
|
|
178
|
+
* routine the filler register's equivalence test calls.
|
|
179
|
+
*/
|
|
180
|
+
export function verifyStyleComparisonIdentity(comparison: any, { height, onStage, splits, tolerance, width, }?: {
|
|
181
|
+
height?: number;
|
|
182
|
+
onStage?: any;
|
|
183
|
+
splits?: number[];
|
|
184
|
+
tolerance?: number;
|
|
185
|
+
width?: number;
|
|
186
|
+
}): Promise<{
|
|
187
|
+
checks: ({
|
|
188
|
+
changedPixels: number;
|
|
189
|
+
description: string;
|
|
190
|
+
differingPixels: number;
|
|
191
|
+
id: string;
|
|
192
|
+
ok: boolean;
|
|
193
|
+
totalPixels: number;
|
|
194
|
+
treatedPixels: number;
|
|
195
|
+
differences?: undefined;
|
|
196
|
+
} | {
|
|
197
|
+
description: string;
|
|
198
|
+
differences: any;
|
|
199
|
+
id: string;
|
|
200
|
+
ok: any;
|
|
201
|
+
changedPixels?: undefined;
|
|
202
|
+
differingPixels?: undefined;
|
|
203
|
+
totalPixels?: undefined;
|
|
204
|
+
treatedPixels?: undefined;
|
|
205
|
+
})[];
|
|
206
|
+
ok: boolean;
|
|
207
|
+
resolution: {
|
|
208
|
+
height: number;
|
|
209
|
+
width: number;
|
|
210
|
+
};
|
|
211
|
+
structural: any;
|
|
212
|
+
variants: {
|
|
213
|
+
after: any;
|
|
214
|
+
before: any;
|
|
215
|
+
};
|
|
216
|
+
}>;
|
|
217
|
+
/** Split axes. `vertical` is a vertical divider; `horizontal` is a horizontal one. */
|
|
218
|
+
export const STYLE_COMPARISON_AXES: readonly string[];
|
|
219
|
+
/**
|
|
220
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
221
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
222
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
223
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
224
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
225
|
+
* satisfy it.
|
|
226
|
+
*
|
|
227
|
+
* @typedef {object} StyleComparisonRenderer
|
|
228
|
+
* @property {(scene: THREE.Object3D, camera: THREE.Camera) => unknown} render
|
|
229
|
+
* @property {(x: number, y: number, width: number, height: number) => void} setScissor
|
|
230
|
+
* @property {(enabled: boolean) => void} setScissorTest
|
|
231
|
+
* @property {(target: THREE.Vector4) => THREE.Vector4} getScissor
|
|
232
|
+
* @property {() => boolean} getScissorTest
|
|
233
|
+
* @property {(target: THREE.RenderTarget|null) => void} setRenderTarget
|
|
234
|
+
* @property {() => THREE.RenderTarget|null} getRenderTarget
|
|
235
|
+
* @property {(target: THREE.Vector2|THREE.Vector4) => unknown} getSize
|
|
236
|
+
* @property {(color: THREE.Color) => THREE.Color} getClearColor
|
|
237
|
+
* @property {boolean} autoClear
|
|
238
|
+
* @property {boolean} autoClearColor
|
|
239
|
+
* @property {boolean} autoClearDepth
|
|
240
|
+
* @property {boolean} autoClearStencil
|
|
241
|
+
* @property {number} toneMappingExposure
|
|
242
|
+
*
|
|
243
|
+
* @typedef {'horizontal'|'vertical'} StyleComparisonAxis
|
|
244
|
+
*
|
|
245
|
+
* @typedef {THREE.RenderTarget|null} StyleComparisonTarget
|
|
246
|
+
*
|
|
247
|
+
* @typedef {object} StyleComparisonRect
|
|
248
|
+
* @property {number} height
|
|
249
|
+
* @property {number} width
|
|
250
|
+
* @property {number} x
|
|
251
|
+
* @property {number} y
|
|
252
|
+
*
|
|
253
|
+
* @typedef {object} StyleComparisonSize
|
|
254
|
+
* @property {number} height
|
|
255
|
+
* @property {number} width
|
|
256
|
+
*
|
|
257
|
+
* @typedef {object} StyleComparisonVariantPair
|
|
258
|
+
* @property {string} after Variant rendered full-frame.
|
|
259
|
+
* @property {string} before Variant rendered into the scissored region.
|
|
260
|
+
*
|
|
261
|
+
* @typedef {object} StyleComparisonRenderOptions
|
|
262
|
+
* @property {number} [split] Fraction of the frame showing `before`, 0..1.
|
|
263
|
+
* Defaults to the comparison's current split.
|
|
264
|
+
* @property {StyleComparisonTarget} [target] Render into this target instead of
|
|
265
|
+
* the canvas. Omit for the canvas.
|
|
266
|
+
*
|
|
267
|
+
* @typedef {object} StyleComparisonVariantRenderOptions
|
|
268
|
+
* @property {StyleComparisonTarget} [target]
|
|
269
|
+
*
|
|
270
|
+
* @typedef {object} StyleComparisonRenderResult
|
|
271
|
+
* @property {number} fraction
|
|
272
|
+
* @property {StyleComparisonSize} size
|
|
273
|
+
*/
|
|
274
|
+
/**
|
|
275
|
+
* Child meshes a style treatment generates on top of the subject. They exist
|
|
276
|
+
* only in the styled variant, so a variant captured before the style was
|
|
277
|
+
* applied does not know them and must hide — never remove — them.
|
|
278
|
+
*/
|
|
279
|
+
export const STYLE_COMPARISON_GENERATED_NODE_FLAGS: readonly string[];
|
|
280
|
+
/**
|
|
281
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
282
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
283
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
284
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
285
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
286
|
+
* satisfy it.
|
|
287
|
+
*/
|
|
288
|
+
export type StyleComparisonRenderer = {
|
|
289
|
+
render: (scene: THREE.Object3D, camera: THREE.Camera) => unknown;
|
|
290
|
+
setScissor: (x: number, y: number, width: number, height: number) => void;
|
|
291
|
+
setScissorTest: (enabled: boolean) => void;
|
|
292
|
+
getScissor: (target: THREE.Vector4) => THREE.Vector4;
|
|
293
|
+
getScissorTest: () => boolean;
|
|
294
|
+
setRenderTarget: (target: THREE.RenderTarget | null) => void;
|
|
295
|
+
getRenderTarget: () => THREE.RenderTarget | null;
|
|
296
|
+
getSize: (target: THREE.Vector2 | THREE.Vector4) => unknown;
|
|
297
|
+
getClearColor: (color: THREE.Color) => THREE.Color;
|
|
298
|
+
autoClear: boolean;
|
|
299
|
+
autoClearColor: boolean;
|
|
300
|
+
autoClearDepth: boolean;
|
|
301
|
+
autoClearStencil: boolean;
|
|
302
|
+
toneMappingExposure: number;
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
306
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
307
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
308
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
309
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
310
|
+
* satisfy it.
|
|
311
|
+
*/
|
|
312
|
+
export type StyleComparisonAxis = "horizontal" | "vertical";
|
|
313
|
+
/**
|
|
314
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
315
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
316
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
317
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
318
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
319
|
+
* satisfy it.
|
|
320
|
+
*/
|
|
321
|
+
export type StyleComparisonTarget = THREE.RenderTarget | null;
|
|
322
|
+
/**
|
|
323
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
324
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
325
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
326
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
327
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
328
|
+
* satisfy it.
|
|
329
|
+
*/
|
|
330
|
+
export type StyleComparisonRect = {
|
|
331
|
+
height: number;
|
|
332
|
+
width: number;
|
|
333
|
+
x: number;
|
|
334
|
+
y: number;
|
|
335
|
+
};
|
|
336
|
+
/**
|
|
337
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
338
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
339
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
340
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
341
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
342
|
+
* satisfy it.
|
|
343
|
+
*/
|
|
344
|
+
export type StyleComparisonSize = {
|
|
345
|
+
height: number;
|
|
346
|
+
width: number;
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
350
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
351
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
352
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
353
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
354
|
+
* satisfy it.
|
|
355
|
+
*/
|
|
356
|
+
export type StyleComparisonVariantPair = {
|
|
357
|
+
/**
|
|
358
|
+
* Variant rendered full-frame.
|
|
359
|
+
*/
|
|
360
|
+
after: string;
|
|
361
|
+
/**
|
|
362
|
+
* Variant rendered into the scissored region.
|
|
363
|
+
*/
|
|
364
|
+
before: string;
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
368
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
369
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
370
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
371
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
372
|
+
* satisfy it.
|
|
373
|
+
*/
|
|
374
|
+
export type StyleComparisonRenderOptions = {
|
|
375
|
+
/**
|
|
376
|
+
* Fraction of the frame showing `before`, 0..1.
|
|
377
|
+
* Defaults to the comparison's current split.
|
|
378
|
+
*/
|
|
379
|
+
split?: number;
|
|
380
|
+
/**
|
|
381
|
+
* Render into this target instead of
|
|
382
|
+
* the canvas. Omit for the canvas.
|
|
383
|
+
*/
|
|
384
|
+
target?: StyleComparisonTarget;
|
|
385
|
+
};
|
|
386
|
+
/**
|
|
387
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
388
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
389
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
390
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
391
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
392
|
+
* satisfy it.
|
|
393
|
+
*/
|
|
394
|
+
export type StyleComparisonVariantRenderOptions = {
|
|
395
|
+
target?: StyleComparisonTarget;
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* The renderer surface this module needs. Declared structurally rather than as
|
|
399
|
+
* `WebGPURenderer`, because that class lives in the `three/webgpu` entry point
|
|
400
|
+
* and is not exported from `three` — naming it here would make the generated
|
|
401
|
+
* declaration unresolvable and silently demote this module to a permissive
|
|
402
|
+
* `any` contract. WebGPURenderer (either backend) and WebGLRenderer both
|
|
403
|
+
* satisfy it.
|
|
404
|
+
*/
|
|
405
|
+
export type StyleComparisonRenderResult = {
|
|
406
|
+
fraction: number;
|
|
407
|
+
size: StyleComparisonSize;
|
|
408
|
+
};
|
|
409
|
+
import * as THREE from 'three';
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export * from "./rockGeometryDetail.js";
|
|
1
2
|
export * from "./rockMaterial.js";
|
|
3
|
+
export * from "./rockSemanticMaterialRuntime.js";
|
|
4
|
+
export * from "./rockRegionRuntime.js";
|
|
2
5
|
export * from "./rockShaderRuntime.js";
|
|
3
6
|
export * from "./rockShaderSettings.js";
|
|
7
|
+
export * from "./rockTangentIntegrity.js";
|
|
8
|
+
export * from "./rockTextureIntegrity.js";
|