@helix3/helix-cli 0.1.14-helix3.182 → 0.1.14-helix3.183
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.
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { type ContinuumPackage, type ContinuumPackageVersion, type ContinuumPackageVersionReference, type ContinuumSceneDependencyClosure, type RuntimeProfile } from '@hypersoniclabs/helix-manifest';
|
|
2
|
+
import type { ScratchWorldPublicationFile } from './continuum/cli';
|
|
3
|
+
import type { ContinuumObjectPublication } from './continuum/types';
|
|
4
|
+
export declare const PALETTE_SHOWCASE_VERSION = "1.0.5";
|
|
5
|
+
export declare const PALETTE_SHOWCASE_VARIANTS: readonly ["canonical", "practical", "weathered", "hero"];
|
|
6
|
+
export declare const PALETTE_SHOWCASE_DEFAULT_PROFILE = "web-desktop-balanced";
|
|
7
|
+
type PaletteShowcaseDeviceBudget = {
|
|
8
|
+
targetFps: number;
|
|
9
|
+
gpuTextureMiB: number;
|
|
10
|
+
residentTransferMiB: number;
|
|
11
|
+
drawCalls: number;
|
|
12
|
+
programs: number;
|
|
13
|
+
residentPavilions: number;
|
|
14
|
+
};
|
|
15
|
+
declare const PALETTE_SHOWCASE_PROFILE_SPECS: readonly [{
|
|
16
|
+
readonly id: "web-low-mobile";
|
|
17
|
+
readonly quality: "minimum";
|
|
18
|
+
readonly capabilities: readonly ["device.mobile-low/1", "texture.runtime-1k/1"];
|
|
19
|
+
readonly budget: {
|
|
20
|
+
readonly targetFps: 30;
|
|
21
|
+
readonly gpuTextureMiB: 48;
|
|
22
|
+
readonly residentTransferMiB: 12;
|
|
23
|
+
readonly drawCalls: 80;
|
|
24
|
+
readonly programs: 16;
|
|
25
|
+
readonly residentPavilions: 1;
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
readonly id: "web-mobile-balanced";
|
|
29
|
+
readonly quality: "balanced";
|
|
30
|
+
readonly capabilities: readonly ["device.mobile/1", "texture.runtime-1k/1"];
|
|
31
|
+
readonly budget: {
|
|
32
|
+
readonly targetFps: 45;
|
|
33
|
+
readonly gpuTextureMiB: 64;
|
|
34
|
+
readonly residentTransferMiB: 20;
|
|
35
|
+
readonly drawCalls: 96;
|
|
36
|
+
readonly programs: 16;
|
|
37
|
+
readonly residentPavilions: 1;
|
|
38
|
+
};
|
|
39
|
+
}, {
|
|
40
|
+
readonly id: "web-high-mobile";
|
|
41
|
+
readonly quality: "high";
|
|
42
|
+
readonly capabilities: readonly ["device.mobile-high/1", "texture.runtime-1k/1"];
|
|
43
|
+
readonly budget: {
|
|
44
|
+
readonly targetFps: 60;
|
|
45
|
+
readonly gpuTextureMiB: 96;
|
|
46
|
+
readonly residentTransferMiB: 28;
|
|
47
|
+
readonly drawCalls: 120;
|
|
48
|
+
readonly programs: 20;
|
|
49
|
+
readonly residentPavilions: 1;
|
|
50
|
+
};
|
|
51
|
+
}, {
|
|
52
|
+
readonly id: "web-desktop-balanced";
|
|
53
|
+
readonly quality: "balanced";
|
|
54
|
+
readonly capabilities: readonly ["device.desktop/1", "texture.runtime-1k/1"];
|
|
55
|
+
readonly budget: {
|
|
56
|
+
readonly targetFps: 60;
|
|
57
|
+
readonly gpuTextureMiB: 192;
|
|
58
|
+
readonly residentTransferMiB: 40;
|
|
59
|
+
readonly drawCalls: 160;
|
|
60
|
+
readonly programs: 24;
|
|
61
|
+
readonly residentPavilions: 1;
|
|
62
|
+
};
|
|
63
|
+
}, {
|
|
64
|
+
readonly id: "web-pc-ultra";
|
|
65
|
+
readonly quality: "ultra";
|
|
66
|
+
readonly capabilities: readonly ["device.pc/1", "texture.runtime-1k/1"];
|
|
67
|
+
readonly budget: {
|
|
68
|
+
readonly targetFps: 90;
|
|
69
|
+
readonly gpuTextureMiB: 384;
|
|
70
|
+
readonly residentTransferMiB: 64;
|
|
71
|
+
readonly drawCalls: 240;
|
|
72
|
+
readonly programs: 32;
|
|
73
|
+
readonly residentPavilions: 2;
|
|
74
|
+
};
|
|
75
|
+
}, {
|
|
76
|
+
readonly id: "web-standalone-vr";
|
|
77
|
+
readonly quality: "balanced";
|
|
78
|
+
readonly capabilities: readonly ["device.vr-standalone/1", "stereo-rendering/1", "texture.runtime-1k/1"];
|
|
79
|
+
readonly budget: {
|
|
80
|
+
readonly targetFps: 72;
|
|
81
|
+
readonly gpuTextureMiB: 96;
|
|
82
|
+
readonly residentTransferMiB: 20;
|
|
83
|
+
readonly drawCalls: 96;
|
|
84
|
+
readonly programs: 18;
|
|
85
|
+
readonly residentPavilions: 1;
|
|
86
|
+
};
|
|
87
|
+
}, {
|
|
88
|
+
readonly id: "web-pc-vr";
|
|
89
|
+
readonly quality: "high";
|
|
90
|
+
readonly capabilities: readonly ["device.vr-pc/1", "stereo-rendering/1", "texture.runtime-1k/1"];
|
|
91
|
+
readonly budget: {
|
|
92
|
+
readonly targetFps: 90;
|
|
93
|
+
readonly gpuTextureMiB: 256;
|
|
94
|
+
readonly residentTransferMiB: 48;
|
|
95
|
+
readonly drawCalls: 180;
|
|
96
|
+
readonly programs: 24;
|
|
97
|
+
readonly residentPavilions: 1;
|
|
98
|
+
};
|
|
99
|
+
}];
|
|
100
|
+
export declare const PALETTE_SHOWCASE_DEVICE_BUDGETS: Record<(typeof PALETTE_SHOWCASE_PROFILE_SPECS)[number]["id"], PaletteShowcaseDeviceBudget>;
|
|
101
|
+
export type PaletteShowcaseFamily = {
|
|
102
|
+
id: string;
|
|
103
|
+
name: string;
|
|
104
|
+
category: string;
|
|
105
|
+
residency: 'core' | 'extended';
|
|
106
|
+
physical: {
|
|
107
|
+
tiling: {
|
|
108
|
+
repeatPerMeter: number;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
shader: {
|
|
112
|
+
defaults: {
|
|
113
|
+
roughness: number;
|
|
114
|
+
metallic: number;
|
|
115
|
+
normalScale: number;
|
|
116
|
+
};
|
|
117
|
+
channels: {
|
|
118
|
+
emissive?: {
|
|
119
|
+
supported: boolean;
|
|
120
|
+
};
|
|
121
|
+
alpha?: {
|
|
122
|
+
supported: boolean;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
export type PaletteShowcaseCatalog = {
|
|
128
|
+
palette: {
|
|
129
|
+
id: string;
|
|
130
|
+
version: string;
|
|
131
|
+
};
|
|
132
|
+
families: PaletteShowcaseFamily[];
|
|
133
|
+
};
|
|
134
|
+
export type PaletteShowcasePublicationLedger = {
|
|
135
|
+
palette: {
|
|
136
|
+
id: string;
|
|
137
|
+
version: string;
|
|
138
|
+
};
|
|
139
|
+
activeRelease: string;
|
|
140
|
+
families: Record<string, {
|
|
141
|
+
activeVersion: string;
|
|
142
|
+
versions: Record<string, {
|
|
143
|
+
packageRef: ContinuumPackageVersionReference;
|
|
144
|
+
}>;
|
|
145
|
+
}>;
|
|
146
|
+
};
|
|
147
|
+
export type PaletteShowcaseInput = {
|
|
148
|
+
palette: PaletteShowcaseCatalog;
|
|
149
|
+
ledger: PaletteShowcasePublicationLedger;
|
|
150
|
+
materialClosures: ContinuumSceneDependencyClosure[];
|
|
151
|
+
runtime: {
|
|
152
|
+
reference: ContinuumPackageVersionReference;
|
|
153
|
+
closure: ContinuumSceneDependencyClosure;
|
|
154
|
+
};
|
|
155
|
+
worldId: string;
|
|
156
|
+
projectId: string;
|
|
157
|
+
};
|
|
158
|
+
export declare const PALETTE_SHOWCASE_CONTEXT_COUNT: number;
|
|
159
|
+
export declare function paletteShowcaseRuntimeProfiles(): RuntimeProfile[];
|
|
160
|
+
export declare function createPaletteShowcaseDescriptor(input: PaletteShowcaseInput): ScratchWorldPublicationFile;
|
|
161
|
+
export declare function createPaletteShowcaseRuntimePackage(): {
|
|
162
|
+
package: ContinuumPackage;
|
|
163
|
+
packageVersion: ContinuumPackageVersion;
|
|
164
|
+
reference: ContinuumPackageVersionReference;
|
|
165
|
+
closure: ContinuumSceneDependencyClosure;
|
|
166
|
+
objects: ContinuumObjectPublication[];
|
|
167
|
+
};
|
|
168
|
+
export {};
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PALETTE_SHOWCASE_CONTEXT_COUNT = exports.PALETTE_SHOWCASE_DEVICE_BUDGETS = exports.PALETTE_SHOWCASE_DEFAULT_PROFILE = exports.PALETTE_SHOWCASE_VARIANTS = exports.PALETTE_SHOWCASE_VERSION = void 0;
|
|
4
|
+
exports.paletteShowcaseRuntimeProfiles = paletteShowcaseRuntimeProfiles;
|
|
5
|
+
exports.createPaletteShowcaseDescriptor = createPaletteShowcaseDescriptor;
|
|
6
|
+
exports.createPaletteShowcaseRuntimePackage = createPaletteShowcaseRuntimePackage;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
|
|
9
|
+
const identity_1 = require("./continuum/identity");
|
|
10
|
+
exports.PALETTE_SHOWCASE_VERSION = '1.0.5';
|
|
11
|
+
exports.PALETTE_SHOWCASE_VARIANTS = ['canonical', 'practical', 'weathered', 'hero'];
|
|
12
|
+
exports.PALETTE_SHOWCASE_DEFAULT_PROFILE = 'web-desktop-balanced';
|
|
13
|
+
const PALETTE_SHOWCASE_PROFILE_SPECS = [
|
|
14
|
+
{ id: 'web-low-mobile', quality: 'minimum', capabilities: ['device.mobile-low/1', 'texture.runtime-1k/1'], budget: { targetFps: 30, gpuTextureMiB: 48, residentTransferMiB: 12, drawCalls: 80, programs: 16, residentPavilions: 1 } },
|
|
15
|
+
{ id: 'web-mobile-balanced', quality: 'balanced', capabilities: ['device.mobile/1', 'texture.runtime-1k/1'], budget: { targetFps: 45, gpuTextureMiB: 64, residentTransferMiB: 20, drawCalls: 96, programs: 16, residentPavilions: 1 } },
|
|
16
|
+
{ id: 'web-high-mobile', quality: 'high', capabilities: ['device.mobile-high/1', 'texture.runtime-1k/1'], budget: { targetFps: 60, gpuTextureMiB: 96, residentTransferMiB: 28, drawCalls: 120, programs: 20, residentPavilions: 1 } },
|
|
17
|
+
{ id: exports.PALETTE_SHOWCASE_DEFAULT_PROFILE, quality: 'balanced', capabilities: ['device.desktop/1', 'texture.runtime-1k/1'], budget: { targetFps: 60, gpuTextureMiB: 192, residentTransferMiB: 40, drawCalls: 160, programs: 24, residentPavilions: 1 } },
|
|
18
|
+
{ id: 'web-pc-ultra', quality: 'ultra', capabilities: ['device.pc/1', 'texture.runtime-1k/1'], budget: { targetFps: 90, gpuTextureMiB: 384, residentTransferMiB: 64, drawCalls: 240, programs: 32, residentPavilions: 2 } },
|
|
19
|
+
{ id: 'web-standalone-vr', quality: 'balanced', capabilities: ['device.vr-standalone/1', 'stereo-rendering/1', 'texture.runtime-1k/1'], budget: { targetFps: 72, gpuTextureMiB: 96, residentTransferMiB: 20, drawCalls: 96, programs: 18, residentPavilions: 1 } },
|
|
20
|
+
{ id: 'web-pc-vr', quality: 'high', capabilities: ['device.vr-pc/1', 'stereo-rendering/1', 'texture.runtime-1k/1'], budget: { targetFps: 90, gpuTextureMiB: 256, residentTransferMiB: 48, drawCalls: 180, programs: 24, residentPavilions: 1 } },
|
|
21
|
+
];
|
|
22
|
+
exports.PALETTE_SHOWCASE_DEVICE_BUDGETS = Object.fromEntries(PALETTE_SHOWCASE_PROFILE_SPECS.map((profile) => [profile.id, profile.budget]));
|
|
23
|
+
const VEHICLE_WHEEL_EXHIBITS = [-3, 3].flatMap((x) => [-1.8, 1.8].flatMap((z, index) => [
|
|
24
|
+
{
|
|
25
|
+
id: `vehicle.tire.${x}.${index}`,
|
|
26
|
+
category: 'vehicle',
|
|
27
|
+
familyId: 'tire-rubber',
|
|
28
|
+
variant: 'practical',
|
|
29
|
+
shape: 'cylinder',
|
|
30
|
+
position: [x, 0.8, 35 + z],
|
|
31
|
+
size: [1.25, 0.7, 1.25],
|
|
32
|
+
rotation: [0.7071068, 0, 0, 0.7071068],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: `vehicle.hub.${x}.${index}`,
|
|
36
|
+
category: 'vehicle',
|
|
37
|
+
familyId: 'chrome',
|
|
38
|
+
variant: 'hero',
|
|
39
|
+
shape: 'cylinder',
|
|
40
|
+
position: [x, 0.8, 35 + z],
|
|
41
|
+
size: [0.65, 0.76, 0.65],
|
|
42
|
+
rotation: [0.7071068, 0, 0, 0.7071068],
|
|
43
|
+
},
|
|
44
|
+
]));
|
|
45
|
+
const CONTEXT_EXHIBITS = [
|
|
46
|
+
{ id: 'architecture.floor', category: 'architecture', familyId: 'polished-concrete', variant: 'practical', shape: 'box', position: [0, 0.12, 34], size: [16, 0.24, 12] },
|
|
47
|
+
{ id: 'architecture.wall', category: 'architecture', familyId: 'red-brick', variant: 'hero', shape: 'box', position: [0, 3.2, 39], size: [16, 6.4, 0.45] },
|
|
48
|
+
{ id: 'architecture.bench', category: 'architecture', familyId: 'light-oak', variant: 'practical', shape: 'box', position: [0, 1.1, 33], size: [6, 0.5, 1.8] },
|
|
49
|
+
{ id: 'vehicle.body', category: 'vehicle', familyId: 'vehicle-paint-metallic', variant: 'hero', shape: 'box', position: [0, 1.35, 35], size: [8.5, 1.55, 3.4] },
|
|
50
|
+
{ id: 'vehicle.cabin', category: 'vehicle', familyId: 'vehicle-glass', variant: 'practical', shape: 'box', position: [0.4, 2.45, 35], size: [4.2, 1.25, 2.9] },
|
|
51
|
+
...VEHICLE_WHEEL_EXHIBITS,
|
|
52
|
+
{ id: 'character.head', category: 'character', familyId: 'skin-human', variant: 'practical', shape: 'sphere', position: [0, 5.8, 36], size: [1.35, 1.35, 1.35] },
|
|
53
|
+
{ id: 'character.torso', category: 'character', familyId: 'technical-fabric-ripstop', variant: 'hero', shape: 'capsule', position: [0, 3.55, 36], size: [2.1, 3.25, 1.15] },
|
|
54
|
+
{ id: 'character.arm.left', category: 'character', familyId: 'skin-human', variant: 'practical', shape: 'capsule', position: [-1.45, 3.5, 36], size: [0.55, 3.1, 0.55] },
|
|
55
|
+
{ id: 'character.arm.right', category: 'character', familyId: 'skin-human', variant: 'practical', shape: 'capsule', position: [1.45, 3.5, 36], size: [0.55, 3.1, 0.55] },
|
|
56
|
+
{ id: 'character.boot.left', category: 'character', familyId: 'leather', variant: 'weathered', shape: 'capsule', position: [-0.65, 1.25, 36], size: [0.75, 2.2, 0.9] },
|
|
57
|
+
{ id: 'character.boot.right', category: 'character', familyId: 'leather', variant: 'weathered', shape: 'capsule', position: [0.65, 1.25, 36], size: [0.75, 2.2, 0.9] },
|
|
58
|
+
{ id: 'electronics.shell', category: 'electronics', familyId: 'plastic-abs', variant: 'practical', shape: 'box', position: [0, 2.1, 36], size: [6.5, 4.2, 0.65] },
|
|
59
|
+
{ id: 'electronics.screen', category: 'electronics', familyId: 'screen-oled', variant: 'hero', shape: 'box', position: [0, 2.2, 35.62], size: [5.5, 3.2, 0.08] },
|
|
60
|
+
{ id: 'electronics.board', category: 'electronics', familyId: 'pcb-solder-mask', variant: 'hero', shape: 'box', position: [0, 0.9, 38], size: [4.8, 0.12, 3.4] },
|
|
61
|
+
{ id: 'food.bread', category: 'food-organic', familyId: 'food-bread-crust', variant: 'practical', shape: 'capsule', position: [-2.4, 1.05, 36], size: [2.1, 3.4, 1.7], rotation: [0, 0, 0.7071068, 0.7071068] },
|
|
62
|
+
{ id: 'food.fruit', category: 'food-organic', familyId: 'food-fruit-skin', variant: 'hero', shape: 'sphere', position: [0.3, 1.2, 36], size: [1.8, 1.8, 1.8] },
|
|
63
|
+
{ id: 'food.cheese', category: 'food-organic', familyId: 'food-cheese', variant: 'practical', shape: 'box', position: [2.8, 0.9, 36], size: [2.2, 1.6, 2] },
|
|
64
|
+
{ id: 'scifi.portal.left', category: 'fantasy-scifi', familyId: 'energy-emissive', variant: 'hero', shape: 'capsule', position: [-2.2, 3, 36], size: [0.75, 6, 0.75] },
|
|
65
|
+
{ id: 'scifi.portal.right', category: 'fantasy-scifi', familyId: 'energy-emissive', variant: 'hero', shape: 'capsule', position: [2.2, 3, 36], size: [0.75, 6, 0.75] },
|
|
66
|
+
{ id: 'scifi.portal.core', category: 'fantasy-scifi', familyId: 'clear-glass', variant: 'hero', shape: 'box', position: [0, 3, 36], size: [3.5, 5.5, 0.18] },
|
|
67
|
+
];
|
|
68
|
+
exports.PALETTE_SHOWCASE_CONTEXT_COUNT = CONTEXT_EXHIBITS.length;
|
|
69
|
+
const ID = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
|
|
70
|
+
const PROFILE_CAPABILITIES = [
|
|
71
|
+
'render.primitive/1',
|
|
72
|
+
'material.pbr/1',
|
|
73
|
+
'material.binding-parameters/1',
|
|
74
|
+
'material.metric-tiling/1',
|
|
75
|
+
'texture.ktx2/1',
|
|
76
|
+
];
|
|
77
|
+
const CATEGORY_TINTS = {
|
|
78
|
+
architecture: [0.94, 0.93, 0.9, 1],
|
|
79
|
+
terrain: [0.9, 0.92, 0.86, 1],
|
|
80
|
+
wood: [0.95, 0.86, 0.74, 1],
|
|
81
|
+
'stone-ceramic': [0.9, 0.93, 0.98, 1],
|
|
82
|
+
metal: [0.82, 0.9, 1, 1],
|
|
83
|
+
vehicle: [0.74, 0.86, 1, 1],
|
|
84
|
+
character: [1, 0.88, 0.84, 1],
|
|
85
|
+
fabric: [0.82, 0.86, 1, 1],
|
|
86
|
+
'polymer-composite': [0.86, 0.95, 1, 1],
|
|
87
|
+
electronics: [0.72, 0.9, 1, 1],
|
|
88
|
+
'glass-liquid': [0.76, 0.92, 1, 0.82],
|
|
89
|
+
'paper-packaging': [1, 0.94, 0.8, 1],
|
|
90
|
+
'food-organic': [1, 0.84, 0.66, 1],
|
|
91
|
+
'fantasy-scifi': [0.74, 0.86, 1, 1],
|
|
92
|
+
'decal-layer': [0.92, 0.84, 1, 0.82],
|
|
93
|
+
};
|
|
94
|
+
function runtimeProfile(id, quality, capabilities) {
|
|
95
|
+
return {
|
|
96
|
+
schema: helix_manifest_1.CONTINUUM_RUNTIME_PROFILE_SCHEMA,
|
|
97
|
+
id,
|
|
98
|
+
platform: 'web',
|
|
99
|
+
renderer: 'three-webgl2',
|
|
100
|
+
quality,
|
|
101
|
+
contracts: { continuum: 1, scene: 2 },
|
|
102
|
+
capabilities: [...new Set([...PROFILE_CAPABILITIES, ...capabilities])].sort(),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function paletteShowcaseRuntimeProfiles() {
|
|
106
|
+
return PALETTE_SHOWCASE_PROFILE_SPECS.map((profile) => runtimeProfile(profile.id, profile.quality, [...profile.capabilities]));
|
|
107
|
+
}
|
|
108
|
+
function assertInput(input) {
|
|
109
|
+
if (input.palette.families.length !== 256) {
|
|
110
|
+
throw new TypeError(`Palette showcase requires exactly 256 families; received ${input.palette.families.length}`);
|
|
111
|
+
}
|
|
112
|
+
if (input.palette.palette.id !== input.ledger.palette.id || input.palette.palette.version !== input.ledger.activeRelease) {
|
|
113
|
+
throw new TypeError('Palette catalog and publication ledger do not describe the same active release');
|
|
114
|
+
}
|
|
115
|
+
const familyIds = new Set();
|
|
116
|
+
for (const family of input.palette.families) {
|
|
117
|
+
if (!ID.test(family.id))
|
|
118
|
+
throw new TypeError(`Palette family id "${family.id}" is not Scene-safe`);
|
|
119
|
+
if (familyIds.has(family.id))
|
|
120
|
+
throw new TypeError(`Duplicate Palette family id "${family.id}"`);
|
|
121
|
+
familyIds.add(family.id);
|
|
122
|
+
if (!(family.physical.tiling.repeatPerMeter > 0))
|
|
123
|
+
throw new TypeError(`${family.id} requires positive repeatPerMeter`);
|
|
124
|
+
const published = input.ledger.families[family.id];
|
|
125
|
+
if (!published?.versions[published.activeVersion]?.packageRef) {
|
|
126
|
+
throw new TypeError(`${family.id} has no active published Package reference`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const closureKeys = new Set(input.materialClosures.map((closure) => packageKey(closure.package)));
|
|
130
|
+
for (const family of input.palette.families) {
|
|
131
|
+
const published = input.ledger.families[family.id];
|
|
132
|
+
const reference = published.versions[published.activeVersion].packageRef;
|
|
133
|
+
if (!closureKeys.has(packageKey(reference)))
|
|
134
|
+
throw new TypeError(`${family.id} is missing its exact dependency closure`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function packageKey(reference) {
|
|
138
|
+
return `${reference.packageId}\0${reference.version}\0${reference.manifestCid}`;
|
|
139
|
+
}
|
|
140
|
+
function variation(family, index) {
|
|
141
|
+
const emissive = family.shader.channels.emissive?.supported === true;
|
|
142
|
+
const translucent = family.shader.channels.alpha?.supported === true;
|
|
143
|
+
const tint = CATEGORY_TINTS[family.category] ?? [0.9, 0.92, 1, 1];
|
|
144
|
+
switch (exports.PALETTE_SHOWCASE_VARIANTS[index]) {
|
|
145
|
+
case 'canonical':
|
|
146
|
+
return { tint: [1, 1, 1, 1], roughnessScale: 1, metallicScale: 1, normalScale: 1, emissiveScale: 1, opacity: 1, tilingScale: 1 };
|
|
147
|
+
case 'practical':
|
|
148
|
+
return { tint, roughnessScale: 0.86, metallicScale: 1.05, normalScale: 1.12, emissiveScale: emissive ? 1.25 : 1, opacity: translucent ? 0.88 : 1, tilingScale: 1 };
|
|
149
|
+
case 'weathered':
|
|
150
|
+
return { tint: [0.68, 0.66, 0.62, 1], roughnessScale: 1.22, metallicScale: 0.78, normalScale: 1.35, emissiveScale: emissive ? 0.7 : 1, opacity: translucent ? 0.72 : 1, tilingScale: 1 };
|
|
151
|
+
case 'hero':
|
|
152
|
+
return { tint: [0.88, 0.94, 1, 1], roughnessScale: 0.72, metallicScale: 1.18, normalScale: 1.5, emissiveScale: emissive ? 1.8 : 1, opacity: translucent ? 0.94 : 1, tilingScale: 0.5 };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function displayShape(category, variantIndex) {
|
|
156
|
+
if (['architecture', 'terrain', 'wood', 'stone-ceramic', 'paper-packaging', 'decal-layer'].includes(category))
|
|
157
|
+
return 'box';
|
|
158
|
+
if (['metal', 'vehicle', 'polymer-composite', 'electronics'].includes(category))
|
|
159
|
+
return variantIndex % 2 === 0 ? 'sphere' : 'cylinder';
|
|
160
|
+
if (['character', 'fabric', 'food-organic'].includes(category))
|
|
161
|
+
return variantIndex % 2 === 0 ? 'capsule' : 'sphere';
|
|
162
|
+
return variantIndex % 2 === 0 ? 'sphere' : 'capsule';
|
|
163
|
+
}
|
|
164
|
+
function displaySize(shape) {
|
|
165
|
+
if (shape === 'box')
|
|
166
|
+
return [3.2, 2.5, 0.32];
|
|
167
|
+
if (shape === 'cylinder')
|
|
168
|
+
return [1.45, 2.6, 1.45];
|
|
169
|
+
if (shape === 'capsule')
|
|
170
|
+
return [1.35, 2.8, 1.35];
|
|
171
|
+
return [1.5, 1.5, 1.5];
|
|
172
|
+
}
|
|
173
|
+
function createPaletteShowcaseDescriptor(input) {
|
|
174
|
+
assertInput(input);
|
|
175
|
+
const families = [...input.palette.families].sort((a, b) => a.category.localeCompare(b.category) || a.name.localeCompare(b.name));
|
|
176
|
+
const categories = [...new Set(families.map((family) => family.category))].sort();
|
|
177
|
+
const materials = [];
|
|
178
|
+
const elements = [
|
|
179
|
+
{ id: 'showcase.root', type: 'building', role: 'exterior', collision: true, residency: { mode: 'eager', priority: 100 } },
|
|
180
|
+
{
|
|
181
|
+
id: 'showcase.ground', parentId: 'showcase.root', type: 'primitive', shape: 'box',
|
|
182
|
+
materialId: 'polished-concrete.practical',
|
|
183
|
+
transform: { position: [0, -0.2, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] },
|
|
184
|
+
size: [560, 0.4, 340],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: 'spawn.palette', parentId: 'showcase.root', type: 'gameplay-anchor', anchor: 'spawn.palette',
|
|
188
|
+
transform: { position: [0, 0.4, 138], rotation: [0, 0, 0, 1], scale: [1, 1, 1] },
|
|
189
|
+
runtimeModule: input.runtime.reference,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: 'light.sun', parentId: 'showcase.root', type: 'light', kind: 'directional', color: '#fff4e5', illuminanceLux: 3.1,
|
|
193
|
+
transform: { position: [30, 70, 24], rotation: [-0.31, 0.29, 0.1, 0.9], scale: [1, 1, 1] },
|
|
194
|
+
},
|
|
195
|
+
];
|
|
196
|
+
for (const [categoryIndex, category] of categories.entries()) {
|
|
197
|
+
const pavilionX = (categoryIndex % 5 - 2) * 115;
|
|
198
|
+
const pavilionZ = (Math.floor(categoryIndex / 5) - 1) * 110;
|
|
199
|
+
const pavilionId = `gallery.${category}`;
|
|
200
|
+
const categoryFamilies = families.filter((family) => family.category === category);
|
|
201
|
+
const categoryRows = Math.ceil(categoryFamilies.length / 4);
|
|
202
|
+
elements.push({
|
|
203
|
+
id: pavilionId,
|
|
204
|
+
parentId: 'showcase.root',
|
|
205
|
+
type: 'group',
|
|
206
|
+
role: 'detail',
|
|
207
|
+
collision: false,
|
|
208
|
+
residency: { mode: 'distance', priority: categoryIndex < 6 ? 70 : 45 },
|
|
209
|
+
transform: { position: [pavilionX, 0, pavilionZ], rotation: [0, 0, 0, 1], scale: [1, 1, 1] },
|
|
210
|
+
});
|
|
211
|
+
elements.push({
|
|
212
|
+
id: `${pavilionId}.light`, parentId: pavilionId, type: 'light', kind: 'point', color: '#f3f7ff',
|
|
213
|
+
luminousIntensityCandela: 400, rangeM: 38,
|
|
214
|
+
transform: { position: [0, 10, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] },
|
|
215
|
+
});
|
|
216
|
+
for (const [familyIndex, family] of categoryFamilies.entries()) {
|
|
217
|
+
const cellX = (familyIndex % 4 - 1.5) * 17;
|
|
218
|
+
const cellZ = (Math.floor(familyIndex / 4) - (categoryRows - 1) / 2) * 7.4;
|
|
219
|
+
const published = input.ledger.families[family.id];
|
|
220
|
+
const reference = published.versions[published.activeVersion].packageRef;
|
|
221
|
+
for (let variantIndex = 0; variantIndex < exports.PALETTE_SHOWCASE_VARIANTS.length; variantIndex += 1) {
|
|
222
|
+
const variantName = exports.PALETTE_SHOWCASE_VARIANTS[variantIndex];
|
|
223
|
+
const materialId = `${family.id}.${variantName}`;
|
|
224
|
+
const values = variation(family, variantIndex);
|
|
225
|
+
materials.push({
|
|
226
|
+
id: materialId,
|
|
227
|
+
sourcePackage: { ...reference },
|
|
228
|
+
description: {
|
|
229
|
+
semanticName: `${family.name} ${variantName}`,
|
|
230
|
+
roughness: family.shader.defaults.roughness,
|
|
231
|
+
metalness: family.shader.defaults.metallic,
|
|
232
|
+
opacityMode: values.opacity < 1 ? 'blend' : 'opaque',
|
|
233
|
+
maps: [],
|
|
234
|
+
shaderGraph: 'unknown',
|
|
235
|
+
},
|
|
236
|
+
binding: {
|
|
237
|
+
tint: values.tint,
|
|
238
|
+
roughnessScale: values.roughnessScale,
|
|
239
|
+
metallicScale: values.metallicScale,
|
|
240
|
+
normalScale: values.normalScale,
|
|
241
|
+
emissiveScale: values.emissiveScale,
|
|
242
|
+
opacity: values.opacity,
|
|
243
|
+
uv: { tiling: [values.tilingScale, values.tilingScale] },
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
const shape = displayShape(category, variantIndex);
|
|
247
|
+
elements.push({
|
|
248
|
+
id: `sample.${family.id}.${variantName}`,
|
|
249
|
+
parentId: pavilionId,
|
|
250
|
+
type: 'primitive',
|
|
251
|
+
shape,
|
|
252
|
+
materialId,
|
|
253
|
+
transform: {
|
|
254
|
+
position: [cellX + (variantIndex - 1.5) * 3.75, shape === 'box' ? 1.35 : 1.6, cellZ],
|
|
255
|
+
rotation: [0, 0, 0, 1],
|
|
256
|
+
scale: [1, 1, 1],
|
|
257
|
+
},
|
|
258
|
+
size: displaySize(shape),
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const materialIds = new Set(materials.map((material) => material.id));
|
|
264
|
+
for (const exhibit of CONTEXT_EXHIBITS) {
|
|
265
|
+
const materialId = `${exhibit.familyId}.${exhibit.variant}`;
|
|
266
|
+
if (!materialIds.has(materialId)) {
|
|
267
|
+
throw new TypeError(`Context exhibit ${exhibit.id} requires missing Palette binding ${materialId}`);
|
|
268
|
+
}
|
|
269
|
+
elements.push({
|
|
270
|
+
id: `context.${exhibit.id}`,
|
|
271
|
+
parentId: `gallery.${exhibit.category}`,
|
|
272
|
+
type: 'primitive',
|
|
273
|
+
shape: exhibit.shape,
|
|
274
|
+
materialId,
|
|
275
|
+
transform: {
|
|
276
|
+
position: exhibit.position,
|
|
277
|
+
rotation: exhibit.rotation ?? [0, 0, 0, 1],
|
|
278
|
+
scale: [1, 1, 1],
|
|
279
|
+
},
|
|
280
|
+
size: exhibit.size,
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
const allClosures = [...input.materialClosures, input.runtime.closure]
|
|
284
|
+
.sort((a, b) => packageKey(a.package).localeCompare(packageKey(b.package)));
|
|
285
|
+
const sourceDigestSeed = (0, helix_manifest_1.canonicalJsonBytes)({
|
|
286
|
+
contract: 'helix.palette-showcase-source/1',
|
|
287
|
+
palette: input.palette.palette,
|
|
288
|
+
worldId: input.worldId,
|
|
289
|
+
projectId: input.projectId,
|
|
290
|
+
materials,
|
|
291
|
+
elements,
|
|
292
|
+
runtimeProfiles: paletteShowcaseRuntimeProfiles(),
|
|
293
|
+
});
|
|
294
|
+
return {
|
|
295
|
+
projectId: input.projectId,
|
|
296
|
+
sourceDigest: (0, node_crypto_1.createHash)('sha256').update(sourceDigestSeed).digest('hex'),
|
|
297
|
+
source: {
|
|
298
|
+
id: 'helix-palette-showcase',
|
|
299
|
+
title: 'HELIX Palette',
|
|
300
|
+
materials,
|
|
301
|
+
canonicalMaterialPackages: {},
|
|
302
|
+
elements,
|
|
303
|
+
},
|
|
304
|
+
compilation: {
|
|
305
|
+
packageId: (0, identity_1.deterministicContinuumUuid)('helix.palette.showcase.scene'),
|
|
306
|
+
version: exports.PALETTE_SHOWCASE_VERSION,
|
|
307
|
+
provenance: { kind: 'generated', source: `HELIX Palette ${input.palette.palette.version}`, sourceId: 'helix-palette-showcase' },
|
|
308
|
+
dependencyClosures: allClosures,
|
|
309
|
+
runtimeProfiles: paletteShowcaseRuntimeProfiles(),
|
|
310
|
+
gameplayPackages: [input.runtime.reference],
|
|
311
|
+
world: {
|
|
312
|
+
releaseId: (0, identity_1.deterministicContinuumUuid)(`helix.palette.showcase.release.${exports.PALETTE_SHOWCASE_VERSION}`),
|
|
313
|
+
worldId: input.worldId,
|
|
314
|
+
maxPlayers: 24,
|
|
315
|
+
contentRating: 'everyone',
|
|
316
|
+
requiredCapabilities: ['render.primitive/1'],
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
packagePublication: { slug: 'helix-palette-showcase', visibility: 'public' },
|
|
320
|
+
defaultRuntimeProfileId: exports.PALETTE_SHOWCASE_DEFAULT_PROFILE,
|
|
321
|
+
objects: [],
|
|
322
|
+
listings: [],
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function createPaletteShowcaseRuntimePackage() {
|
|
326
|
+
const definitions = [
|
|
327
|
+
['runtime', 'application/vnd.helix.runtime-module+json;version=1', 'runtime-module', { schema: 'helix.runtime-module/1', entry: 'palette.showcase.spawn', behavior: 'spawn-anchor' }],
|
|
328
|
+
['publisher', 'application/vnd.helix.attestation+json', 'publisher-attestation', { schema: 'helix.attestation/1', kind: 'publisher', authority: 'HELIX' }],
|
|
329
|
+
['source', 'application/vnd.helix.attestation+json', 'source-attestation', { schema: 'helix.attestation/1', kind: 'source', source: 'HELIX Palette Showcase' }],
|
|
330
|
+
];
|
|
331
|
+
const objects = definitions.map(([name, mediaType, role, value]) => {
|
|
332
|
+
const bytes = (0, helix_manifest_1.canonicalJsonBytes)(value);
|
|
333
|
+
const reference = { cid: (0, helix_manifest_1.cidFromBytes)(bytes), bytes: bytes.byteLength, mediaType, role };
|
|
334
|
+
return { reference, source: { kind: 'inline', bytes, filename: `palette-showcase-${name}.json`, audience: 'public' } };
|
|
335
|
+
});
|
|
336
|
+
const pkg = {
|
|
337
|
+
schema: helix_manifest_1.CONTINUUM_PACKAGE_SCHEMA,
|
|
338
|
+
id: (0, identity_1.deterministicContinuumUuid)('helix.palette.showcase.runtime'),
|
|
339
|
+
type: 'runtime-module',
|
|
340
|
+
name: 'HELIX Palette Showcase Runtime',
|
|
341
|
+
};
|
|
342
|
+
const packageVersion = {
|
|
343
|
+
schema: helix_manifest_1.CONTINUUM_PACKAGE_VERSION_SCHEMA,
|
|
344
|
+
package: { id: pkg.id, type: pkg.type },
|
|
345
|
+
version: exports.PALETTE_SHOWCASE_VERSION,
|
|
346
|
+
root: objects[0].reference,
|
|
347
|
+
dependencies: [],
|
|
348
|
+
variants: [],
|
|
349
|
+
compatibility: { contract: 'helix.runtime-module/1', requires: [], provides: ['spawn-anchor/1'] },
|
|
350
|
+
provenance: { kind: 'authored', source: 'HELIX Palette Showcase', sourceId: 'palette.showcase.spawn' },
|
|
351
|
+
expectedClosure: {
|
|
352
|
+
objectCount: objects.length,
|
|
353
|
+
totalBytes: objects.reduce((sum, object) => sum + object.reference.bytes, 0),
|
|
354
|
+
},
|
|
355
|
+
runtimeModule: {
|
|
356
|
+
kind: 'system',
|
|
357
|
+
targets: ['client-worker'],
|
|
358
|
+
capabilities: { required: [], optional: [] },
|
|
359
|
+
budget: { memoryMiB: 8, cpuMsPerTick: 1, stateBytes: 4096, networkBytesPerSecond: 1024 },
|
|
360
|
+
publisherAttestation: objects[1].reference,
|
|
361
|
+
sourceAttestation: objects[2].reference,
|
|
362
|
+
},
|
|
363
|
+
};
|
|
364
|
+
const reference = {
|
|
365
|
+
packageId: pkg.id,
|
|
366
|
+
version: packageVersion.version,
|
|
367
|
+
manifestCid: (0, helix_manifest_1.continuumPackageVersionCid)(packageVersion),
|
|
368
|
+
};
|
|
369
|
+
const closure = { package: reference, root: packageVersion.root, objects: objects.map((object) => object.reference) };
|
|
370
|
+
return { package: pkg, packageVersion, reference, closure, objects };
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=paletteShowcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paletteShowcase.js","sourceRoot":"","sources":["../src/paletteShowcase.ts"],"names":[],"mappings":"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"}
|