@genex-ai/cli-demo 0.93.0 → 0.94.0-dev.249
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/index.js +26 -5
- package/package.json +1 -1
- package/templates/skills/genex-ai-model/SKILL.md +3 -2
- package/templates/skills/genex-ai-skybox/SKILL.md +4 -4
- package/templates/skills/genex-ai-texture/SKILL.md +1 -1
- package/templates/skills/genex-ai-video/SKILL.md +1 -1
- package/templates/skills/genex-game-director/SKILL.md +321 -411
- package/templates/skills/genex-game-director/references/design-contract.md +130 -179
- package/templates/skills/genex-game-director/references/routing-map.md +242 -362
- package/templates/skills/genex-getting-started/SKILL.md +2 -2
- package/templates/skills/genex-threejs-exposure-color-grading/SKILL.md +3 -7
- package/templates/skills/genex-threejs-multiplayer/SKILL.md +19 -2
- package/templates/skills/genex-threejs-procedural-assets/SKILL.md +112 -0
- package/templates/skills/genex-threejs-procedural-materials/SKILL.md +3 -7
- package/templates/skills/genex-threejs-procedural-vfx/SKILL.md +6 -11
- package/templates/skills/genex-threejs-shadow-systems/SKILL.md +2 -3
- package/templates/skills/genex-threejs-visual-validation/SKILL.md +0 -4
- package/templates/skills/genex-updates/SKILL.md +1 -1
- package/templates/skills/genex-threejs-atmosphere-aerial-perspective/SKILL.md +0 -46
- package/templates/skills/genex-threejs-atmosphere-aerial-perspective/references/atmosphere.md +0 -213
- package/templates/skills/genex-threejs-bloom/SKILL.md +0 -44
- package/templates/skills/genex-threejs-bloom/references/bloom.md +0 -187
- package/templates/skills/genex-threejs-exposure-color-grading/references/exposure-grading.md +0 -205
- package/templates/skills/genex-threejs-game-content/SKILL.md +0 -198
- package/templates/skills/genex-threejs-game-content/references/content-tables.md +0 -269
- package/templates/skills/genex-threejs-image-pipeline/SKILL.md +0 -56
- package/templates/skills/genex-threejs-image-pipeline/references/image-pipeline.md +0 -197
- package/templates/skills/genex-threejs-lighting-design/SKILL.md +0 -144
- package/templates/skills/genex-threejs-lighting-design/references/light-recipes.md +0 -137
- package/templates/skills/genex-threejs-open-world/SKILL.md +0 -149
- package/templates/skills/genex-threejs-open-world/references/terrain-streaming.md +0 -215
- package/templates/skills/genex-threejs-precipitation-surfaces/SKILL.md +0 -59
- package/templates/skills/genex-threejs-precipitation-surfaces/references/precipitation-surfaces.md +0 -181
- package/templates/skills/genex-threejs-procedural-architecture/SKILL.md +0 -50
- package/templates/skills/genex-threejs-procedural-architecture/references/architecture-systems.md +0 -509
- package/templates/skills/genex-threejs-procedural-fields/SKILL.md +0 -61
- package/templates/skills/genex-threejs-procedural-fields/references/field-systems.md +0 -232
- package/templates/skills/genex-threejs-procedural-geometry/SKILL.md +0 -39
- package/templates/skills/genex-threejs-procedural-geometry/references/mesh-systems.md +0 -202
- package/templates/skills/genex-threejs-procedural-materials/references/material-systems.md +0 -198
- package/templates/skills/genex-threejs-procedural-planets/SKILL.md +0 -48
- package/templates/skills/genex-threejs-procedural-planets/references/planet-systems.md +0 -498
- package/templates/skills/genex-threejs-procedural-vegetation/SKILL.md +0 -52
- package/templates/skills/genex-threejs-procedural-vegetation/references/vegetation-systems.md +0 -314
- package/templates/skills/genex-threejs-procedural-vfx/references/vfx-systems.md +0 -218
- package/templates/skills/genex-threejs-raymarched-space-effects/SKILL.md +0 -37
- package/templates/skills/genex-threejs-raymarched-space-effects/references/space-effects.md +0 -194
- package/templates/skills/genex-threejs-screen-space-ambient-occlusion/SKILL.md +0 -35
- package/templates/skills/genex-threejs-screen-space-ambient-occlusion/references/ambient-occlusion.md +0 -441
- package/templates/skills/genex-threejs-spectral-ocean/SKILL.md +0 -52
- package/templates/skills/genex-threejs-spectral-ocean/references/spectral-ocean.md +0 -473
- package/templates/skills/genex-threejs-temporal-surfaces/SKILL.md +0 -41
- package/templates/skills/genex-threejs-temporal-surfaces/references/temporal-surfaces.md +0 -207
- package/templates/skills/genex-threejs-visual-validation/references/visual-validation.md +0 -427
- package/templates/skills/genex-threejs-volumetric-clouds/SKILL.md +0 -49
- package/templates/skills/genex-threejs-volumetric-clouds/references/volumetric-clouds.md +0 -579
- package/templates/skills/genex-threejs-water-optics/SKILL.md +0 -57
- package/templates/skills/genex-threejs-water-optics/references/water-optics.md +0 -195
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
# Touch-history frost accumulation
|
|
2
|
-
|
|
3
|
-
Use this reference for screen-space frost whose visible mask and refractive response depend on persistent touch history, reduced-resolution scene blur, static crystalline fields, and two-scale normals.
|
|
4
|
-
|
|
5
|
-
## Contents
|
|
6
|
-
|
|
7
|
-
- Exact pass graph
|
|
8
|
-
- Render-target ownership
|
|
9
|
-
- Persistent pointer state
|
|
10
|
-
- Frost composite
|
|
11
|
-
- Refraction output
|
|
12
|
-
- Observed defects and required corrections
|
|
13
|
-
- Diagnostic contract
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## Exact pass graph
|
|
17
|
-
|
|
18
|
-
The frame graph owns these targets:
|
|
19
|
-
|
|
20
|
-
| Target | Resolution | Lifetime | Purpose |
|
|
21
|
-
| --- | --- | --- | --- |
|
|
22
|
-
| root | display DPR | every frame | source scene |
|
|
23
|
-
| vertical blur | `0.4` DPR | every frame | first separable blur axis |
|
|
24
|
-
| horizontal blur | `0.4` DPR | every frame | broad blurred source |
|
|
25
|
-
| frost composite | display DPR | every frame | scene, blur, structure, interaction |
|
|
26
|
-
| pointer read/write | display DPR, half-float | persistent | touched/cleared history plus tilt |
|
|
27
|
-
| frost noise | `0.4` DPR | once | coarse crystalline structure |
|
|
28
|
-
| frozen noise | display DPR | once | dense frozen structure |
|
|
29
|
-
| highlight noise | display DPR | once | highlight breakup |
|
|
30
|
-
|
|
31
|
-
Per-frame order is fixed:
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
root scene
|
|
35
|
-
-> vertical blur
|
|
36
|
-
-> horizontal blur
|
|
37
|
-
-> frost composite
|
|
38
|
-
-> pointer history write and swap
|
|
39
|
-
-> display output samples the new frost target
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
The frost pass therefore reads the pointer state from the previous completed
|
|
43
|
-
frame. Preserve that one-frame history relationship unless changing it
|
|
44
|
-
deliberately and validating the response.
|
|
45
|
-
|
|
46
|
-
## Render-target ownership
|
|
47
|
-
|
|
48
|
-
The single-target helper:
|
|
49
|
-
|
|
50
|
-
1. stores `renderer.autoClear`;
|
|
51
|
-
2. sets the requested clear mode;
|
|
52
|
-
3. binds the target;
|
|
53
|
-
4. renders;
|
|
54
|
-
5. restores the default target;
|
|
55
|
-
6. restores `autoClear`;
|
|
56
|
-
7. disposes the target on owner teardown.
|
|
57
|
-
|
|
58
|
-
The double-target helper writes only to `write`, exposes `read.texture` before
|
|
59
|
-
the draw, swaps after the draw, and returns the new `read.texture`.
|
|
60
|
-
|
|
61
|
-
```text
|
|
62
|
-
read = completed state
|
|
63
|
-
write = destination for this update
|
|
64
|
-
render(write, sampling read)
|
|
65
|
-
swap(read, write)
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Both targets resize together. A production adaptation must also define whether
|
|
69
|
-
resize preserves, resamples, or clears state. The hook resizes the
|
|
70
|
-
targets but does not explicitly clear both histories.
|
|
71
|
-
|
|
72
|
-
## Persistent pointer state
|
|
73
|
-
|
|
74
|
-
The pointer target uses:
|
|
75
|
-
|
|
76
|
-
```text
|
|
77
|
-
R = accumulated interaction mask
|
|
78
|
-
A = accumulated tilt-response mask
|
|
79
|
-
G/B = duplicate R in the output
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Defaults:
|
|
83
|
-
|
|
84
|
-
```text
|
|
85
|
-
decay per rendered frame = 0.002
|
|
86
|
-
noise strength = 0.16
|
|
87
|
-
frost-noise strength = 0.10
|
|
88
|
-
mask strength = 0.30
|
|
89
|
-
radius = 0.15 -> 0.17
|
|
90
|
-
corner fade = 0.50 -> 0.60
|
|
91
|
-
side fade = 0.00 -> 0.50
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
The update is:
|
|
95
|
-
|
|
96
|
-
```text
|
|
97
|
-
previous = max(previous - decay, 0)
|
|
98
|
-
center = pointer * 0.5 + 0.5
|
|
99
|
-
distance = aspect-corrected distance to center
|
|
100
|
-
deposit = edge-masked noisy radial brush when touching
|
|
101
|
-
Rnext = clamp(Rprevious + noisyDeposit, 0, 1)
|
|
102
|
-
Anext = clamp(Aprevious + lower-noiseDeposit, 0, 1)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
The side and corner masks keep a circular deposit from clipping abruptly at
|
|
106
|
-
viewport boundaries. The alpha channel deliberately uses a less noisy brush so
|
|
107
|
-
device tilt can react smoothly while the visible thaw/frost boundary stays
|
|
108
|
-
irregular.
|
|
109
|
-
|
|
110
|
-
## Frost composite
|
|
111
|
-
|
|
112
|
-
The frost pass inverts pointer history:
|
|
113
|
-
|
|
114
|
-
```text
|
|
115
|
-
clearAmount = 1 - pointer.R
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
It combines three static structures:
|
|
119
|
-
|
|
120
|
-
```text
|
|
121
|
-
base structure = mix(frozenNoise, highlightNoise, 0.30)
|
|
122
|
-
coarse frost = contrast(frostNoise * 1.70 + frostAmount, 1.60)
|
|
123
|
-
mask = contrast(base structure + coarse frost * clearAmount, 1.80)
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
The scene treatment is coupled:
|
|
127
|
-
|
|
128
|
-
```text
|
|
129
|
-
blurMix = clamp(clearAmount * (mask + 0.30), 0, 1)
|
|
130
|
-
scene = mix(sharpScene, blurredScene, blurMix)
|
|
131
|
-
scene *= (0.90, 0.90, 1.03)
|
|
132
|
-
saturation *= 1.20
|
|
133
|
-
brightness *= 0.70
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Frost color then mixes:
|
|
137
|
-
|
|
138
|
-
```text
|
|
139
|
-
thin tint = (0.82, 0.86, 1.05)
|
|
140
|
-
thick tint = (0.92, 0.96, 1.10)
|
|
141
|
-
frost tint strength = 0.70
|
|
142
|
-
highlight tint strength = 0.80
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
The composite alpha stores the structural frost mask before the pointer is
|
|
146
|
-
applied. The output pass uses that alpha to gate normal-map refraction.
|
|
147
|
-
|
|
148
|
-
## Refraction output
|
|
149
|
-
|
|
150
|
-
The final pass samples two mirrored-repeat normal maps in screen coordinates:
|
|
151
|
-
|
|
152
|
-
```text
|
|
153
|
-
main scale size = 1200, strength = 0.30
|
|
154
|
-
sub scale size = 350, strength = 2.0
|
|
155
|
-
IOR = 1.31
|
|
156
|
-
thickness = 1.0
|
|
157
|
-
source inset = 0.17
|
|
158
|
-
Fresnel strength = 0.80
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
The main map also produces a grayscale height weight for the sub-map. Device
|
|
162
|
-
tilt rotates the view vector, with pointer alpha contributing up to `0.8`.
|
|
163
|
-
Refraction is mixed only where both frost alpha and the inverse pointer mask
|
|
164
|
-
permit it.
|
|
165
|
-
|
|
166
|
-
## Observed defects and required corrections
|
|
167
|
-
|
|
168
|
-
Do not preserve these weaknesses silently:
|
|
169
|
-
|
|
170
|
-
- Pointer decay is per frame, not per second. Convert it to
|
|
171
|
-
`1 - exp(-rate * deltaSeconds)` or an equivalent time-based update.
|
|
172
|
-
- The alpha-aware blur divides RGB and alpha by `sumW`. Fully transparent
|
|
173
|
-
neighborhoods can make `sumW == 0`; guard with an epsilon and define the
|
|
174
|
-
transparent result.
|
|
175
|
-
- Blur alpha is accumulated with unmodified kernel weights but divided by the
|
|
176
|
-
alpha-weighted RGB denominator. Treat RGB normalization and alpha
|
|
177
|
-
normalization separately.
|
|
178
|
-
- Pointer aspect is assigned from the low-resolution target although pointer
|
|
179
|
-
state is high resolution. The ratio is normally equal, but ownership should
|
|
180
|
-
use the actual pointer target.
|
|
181
|
-
- Static targets opt out of auto-resize. A resize policy must regenerate or
|
|
182
|
-
remap them.
|
|
183
|
-
- Screen-space state follows the viewport, not the depicted surface. Do not use
|
|
184
|
-
this representation for world footprints or object-bound paint.
|
|
185
|
-
|
|
186
|
-
## Diagnostic contract
|
|
187
|
-
|
|
188
|
-
Expose:
|
|
189
|
-
|
|
190
|
-
```text
|
|
191
|
-
root scene
|
|
192
|
-
vertical blur
|
|
193
|
-
horizontal blur
|
|
194
|
-
each static noise target
|
|
195
|
-
previous pointer R/A
|
|
196
|
-
current deposit R/A
|
|
197
|
-
next pointer R/A
|
|
198
|
-
frost mask before pointer
|
|
199
|
-
frost mask after pointer
|
|
200
|
-
sharp/blur mix
|
|
201
|
-
main and sub refraction offsets
|
|
202
|
-
final without refraction
|
|
203
|
-
final
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
Add pause and single-step controls. Verify decay at 30, 60, and 120 FPS after
|
|
207
|
-
correcting it to time-based behavior.
|
|
@@ -1,427 +0,0 @@
|
|
|
1
|
-
# Graphics validation protocol
|
|
2
|
-
|
|
3
|
-
Use this protocol to evaluate authored graphics through deterministic final
|
|
4
|
-
frames, mechanism-isolation views, temporal evidence, scale tests, seed sweeps,
|
|
5
|
-
and explicit GPU budgets.
|
|
6
|
-
|
|
7
|
-
## Contents
|
|
8
|
-
|
|
9
|
-
- Acceptance principle
|
|
10
|
-
- Visual contract
|
|
11
|
-
- Required inspection controls
|
|
12
|
-
- Mechanism-specific evidence
|
|
13
|
-
- No-post and isolation gates
|
|
14
|
-
- Determinism and captures
|
|
15
|
-
- Temporal validation
|
|
16
|
-
- Performance and resolution
|
|
17
|
-
- Rejection criteria
|
|
18
|
-
- Sign-off record
|
|
19
|
-
|
|
20
|
-
## Acceptance principle
|
|
21
|
-
|
|
22
|
-
Accept an implementation only when all four layers agree:
|
|
23
|
-
|
|
24
|
-
```text
|
|
25
|
-
declared visual mechanism
|
|
26
|
-
-> inspectable implementation
|
|
27
|
-
-> diagnostic evidence
|
|
28
|
-
-> final image that satisfies the visual contract
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Code plausibility is insufficient. A visually weak result means the mechanism
|
|
32
|
-
is incomplete, misweighted, or badly presented. A beautiful final frame is
|
|
33
|
-
also insufficient when it hides field instability, broken depth, temporal
|
|
34
|
-
failure, or dependence on post-processing.
|
|
35
|
-
|
|
36
|
-
## Visual contract
|
|
37
|
-
|
|
38
|
-
Write this before tuning:
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
type VisualContract = {
|
|
42
|
-
subject: string
|
|
43
|
-
identity: string[]
|
|
44
|
-
silhouette: string[]
|
|
45
|
-
materialSeparation: string[]
|
|
46
|
-
motion: string[]
|
|
47
|
-
cameraEnvelope: {
|
|
48
|
-
near: number
|
|
49
|
-
design: number
|
|
50
|
-
far: number
|
|
51
|
-
}
|
|
52
|
-
lightingEnvelope: string[]
|
|
53
|
-
invariants: string[]
|
|
54
|
-
allowedDivergences: string[]
|
|
55
|
-
frameBudgetMs: number
|
|
56
|
-
memoryBudgetMB?: number
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Each invariant must be observable. Replace “looks cinematic” with statements
|
|
61
|
-
such as:
|
|
62
|
-
|
|
63
|
-
```text
|
|
64
|
-
the primary rim remains visible without bloom
|
|
65
|
-
the water horizon does not reveal the mesh boundary
|
|
66
|
-
tree card roots remain attached under maximum wind
|
|
67
|
-
planet coast width is stable from orbit to mid approach
|
|
68
|
-
cloud history rejects across a foreground disocclusion
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
When matching a supplied visual reference, record the mechanisms that create
|
|
72
|
-
its identity and every deliberate divergence in backend, resolution, asset,
|
|
73
|
-
scale, or composition. Do not substitute a generic category match for the
|
|
74
|
-
specific visual contract.
|
|
75
|
-
|
|
76
|
-
For a Meshy player character, the pre-animation sign-off record additionally
|
|
77
|
-
contains:
|
|
78
|
-
|
|
79
|
-
```text
|
|
80
|
-
two or three discussed visual directions
|
|
81
|
-
the inspected references, when the user named one
|
|
82
|
-
three actual concept-image URLs, all neutral A-pose
|
|
83
|
-
the user's selected candidate
|
|
84
|
-
high-detail source URL in R2
|
|
85
|
-
front / back / left / right high-detail views
|
|
86
|
-
measured high-detail face count
|
|
87
|
-
the user's explicit approval of the separate 10,000-face triangle remesh
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Do not accept a dynamic-pose concept, a silent T-pose fallback, or a rig built
|
|
91
|
-
from the unremeshed high-detail source. Warn before generation when held,
|
|
92
|
-
slung, or overlapping props and straps can fuse into the body or hide limbs.
|
|
93
|
-
Animation naturally leaves the A-pose; its limb rotations remain native.
|
|
94
|
-
Never freeze or correct arm, hand, leg, or foot tracks. Only horizontal root or
|
|
95
|
-
hip translation may be normalized for Rapier.
|
|
96
|
-
|
|
97
|
-
## Required inspection controls
|
|
98
|
-
|
|
99
|
-
Any runnable inspection surface should expose the controls relevant to its
|
|
100
|
-
mechanism:
|
|
101
|
-
|
|
102
|
-
```text
|
|
103
|
-
pause / resume
|
|
104
|
-
fixed time or time scale
|
|
105
|
-
fixed seed
|
|
106
|
-
fixed camera bookmarks
|
|
107
|
-
viewport and DPR
|
|
108
|
-
quality tier
|
|
109
|
-
debug mode
|
|
110
|
-
canvas capture
|
|
111
|
-
runtime metrics
|
|
112
|
-
reset history
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
At minimum, provide:
|
|
116
|
-
|
|
117
|
-
- one design camera;
|
|
118
|
-
- near and far camera bookmarks;
|
|
119
|
-
- final and no-post views;
|
|
120
|
-
- every controlling field or pass needed to prove the mechanism;
|
|
121
|
-
- a deterministic reset;
|
|
122
|
-
- visible runtime errors and performance metrics.
|
|
123
|
-
|
|
124
|
-
Controls must alter the actual pipeline. A debug dropdown that only changes a
|
|
125
|
-
label is worse than no diagnostic because it creates false confidence.
|
|
126
|
-
|
|
127
|
-
## Mechanism-specific evidence
|
|
128
|
-
|
|
129
|
-
### Procedural growth
|
|
130
|
-
|
|
131
|
-
Report topology separately from final composition:
|
|
132
|
-
|
|
133
|
-
```text
|
|
134
|
-
branch jobs by level
|
|
135
|
-
terminal continuations by level
|
|
136
|
-
lateral children by level
|
|
137
|
-
ring and leaf-card counts
|
|
138
|
-
branch and leaf bounds
|
|
139
|
-
seed
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Inspect:
|
|
143
|
-
|
|
144
|
-
- hierarchy-only;
|
|
145
|
-
- continuation branches;
|
|
146
|
-
- foliage roots and rounded normals;
|
|
147
|
-
- final composition;
|
|
148
|
-
- maximum wind;
|
|
149
|
-
- at least three seeds.
|
|
150
|
-
|
|
151
|
-
The species identity must survive the seed sweep. Seed changes may alter
|
|
152
|
-
branch placement and crown asymmetry; they may not turn one growth model into
|
|
153
|
-
another.
|
|
154
|
-
|
|
155
|
-
### Spectral water
|
|
156
|
-
|
|
157
|
-
Require:
|
|
158
|
-
|
|
159
|
-
```text
|
|
160
|
-
disjoint wavelength ownership per cascade
|
|
161
|
-
independent FFT impulse and frequency tests
|
|
162
|
-
height and horizontal displacement fields
|
|
163
|
-
transformed derivative maps
|
|
164
|
-
Jacobian or breaking metric
|
|
165
|
-
persistent foam history
|
|
166
|
-
shared sky/reflection parameters
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Inspect individual cascades, resolved normals, breaking/foam state, and final
|
|
170
|
-
shading. A plausible ocean frame does not prove that the FFT, derivatives, or
|
|
171
|
-
history are correct.
|
|
172
|
-
|
|
173
|
-
### Analytic water
|
|
174
|
-
|
|
175
|
-
Require displacement and normals to derive from the same wave bundle. Inspect:
|
|
176
|
-
|
|
177
|
-
```text
|
|
178
|
-
displacement only
|
|
179
|
-
resolved normals
|
|
180
|
-
Fresnel
|
|
181
|
-
reflection
|
|
182
|
-
refraction
|
|
183
|
-
absorption or thickness estimate
|
|
184
|
-
crest response and foam
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
Test near-grazing views, far-horizon minification, and a high-DPR capture.
|
|
188
|
-
Reject sparkling micro-bands that survive below one pixel.
|
|
189
|
-
|
|
190
|
-
### Planet fields and atmosphere
|
|
191
|
-
|
|
192
|
-
Require:
|
|
193
|
-
|
|
194
|
-
```text
|
|
195
|
-
undeformed sphere direction
|
|
196
|
-
macro height
|
|
197
|
-
continents and coast
|
|
198
|
-
climate or biome causes
|
|
199
|
-
resolved normals and roughness
|
|
200
|
-
surface lighting without atmosphere
|
|
201
|
-
atmosphere only
|
|
202
|
-
combined final
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Inspect orbit, mid approach, and close approach. Surface and atmosphere must
|
|
206
|
-
share body center, radius, sun direction, and scale conversion. A shell that
|
|
207
|
-
looks acceptable only against black space is not sufficient evidence of
|
|
208
|
-
ground-to-space continuity.
|
|
209
|
-
|
|
210
|
-
### Volumetric clouds
|
|
211
|
-
|
|
212
|
-
Require:
|
|
213
|
-
|
|
214
|
-
```text
|
|
215
|
-
weather channels
|
|
216
|
-
base-shape density
|
|
217
|
-
detail erosion
|
|
218
|
-
bounded ray interval
|
|
219
|
-
beauty transmittance
|
|
220
|
-
lighting contribution
|
|
221
|
-
history confidence or rejection
|
|
222
|
-
cloud shadow
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Test camera translation, foreground disocclusion, sun-angle changes, and
|
|
226
|
-
quality-tier transitions. Still frames cannot validate temporal reconstruction.
|
|
227
|
-
|
|
228
|
-
### Curved-ray and volumetric effects
|
|
229
|
-
|
|
230
|
-
Expose:
|
|
231
|
-
|
|
232
|
-
```text
|
|
233
|
-
integration bounds
|
|
234
|
-
step or iteration count
|
|
235
|
-
accumulated steering
|
|
236
|
-
density contribution
|
|
237
|
-
remaining transmittance
|
|
238
|
-
background lookup direction
|
|
239
|
-
capped or invalid pixels
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Use a stress camera that approaches the singular or highest-curvature region.
|
|
243
|
-
Reject NaNs, persistent capped bands, and unexplained asymmetry.
|
|
244
|
-
|
|
245
|
-
### Temporal surfaces
|
|
246
|
-
|
|
247
|
-
Expose the complete state transition:
|
|
248
|
-
|
|
249
|
-
```text
|
|
250
|
-
previous history
|
|
251
|
-
current deposit or erase input
|
|
252
|
-
next history
|
|
253
|
-
blurred scene
|
|
254
|
-
static structure
|
|
255
|
-
composite mask
|
|
256
|
-
resolved normal/refraction
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
Test reset, resize, pointer release, repeated deposition, frame-rate changes,
|
|
260
|
-
and long idle decay. Per-frame decay must be converted to a
|
|
261
|
-
frame-rate-independent response.
|
|
262
|
-
|
|
263
|
-
### Shadows and post-processing
|
|
264
|
-
|
|
265
|
-
For shadows, inspect:
|
|
266
|
-
|
|
267
|
-
```text
|
|
268
|
-
level ownership
|
|
269
|
-
committed light-space centers
|
|
270
|
-
texel grid
|
|
271
|
-
levels refreshed this frame
|
|
272
|
-
cross-level blend weights
|
|
273
|
-
normal bias in world units
|
|
274
|
-
unshadowed outside-coverage weight
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
For post effects, inspect the pre-effect signal, contribution, and final
|
|
278
|
-
composite. Tone mapping and output conversion must have one owner.
|
|
279
|
-
|
|
280
|
-
## No-post and isolation gates
|
|
281
|
-
|
|
282
|
-
Every example with image effects must expose:
|
|
283
|
-
|
|
284
|
-
```text
|
|
285
|
-
final
|
|
286
|
-
no bloom or presentation treatment
|
|
287
|
-
effect contribution only
|
|
288
|
-
controlling field or mask
|
|
289
|
-
normal / depth / history when relevant
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Reject when:
|
|
293
|
-
|
|
294
|
-
- bloom supplies the only readable silhouette;
|
|
295
|
-
- atmosphere hides flat planet fields;
|
|
296
|
-
- post blur hides aliasing;
|
|
297
|
-
- a normal map implies waves absent from displaced geometry;
|
|
298
|
-
- temporal output cannot show previous state, deposit, and next state;
|
|
299
|
-
- a raymarch cannot reveal iteration pressure or capped pixels;
|
|
300
|
-
- shadows are judged only in the final graded image.
|
|
301
|
-
|
|
302
|
-
## Determinism and captures
|
|
303
|
-
|
|
304
|
-
Freeze:
|
|
305
|
-
|
|
306
|
-
```text
|
|
307
|
-
seed
|
|
308
|
-
camera transform and projection
|
|
309
|
-
viewport
|
|
310
|
-
DPR
|
|
311
|
-
time or paused state
|
|
312
|
-
quality tier
|
|
313
|
-
backend
|
|
314
|
-
asset versions
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
Capture:
|
|
318
|
-
|
|
319
|
-
```text
|
|
320
|
-
design view
|
|
321
|
-
near/detail view
|
|
322
|
-
far/silhouette view
|
|
323
|
-
no-post baseline
|
|
324
|
-
one controlling diagnostic
|
|
325
|
-
one failure-sensitive diagnostic
|
|
326
|
-
one stress condition
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
Use exact camera matrices or named camera bookmarks. Reproducing a comparison
|
|
330
|
-
by manually orbiting until it “looks close” invalidates image evidence.
|
|
331
|
-
|
|
332
|
-
For stochastic pixels, either freeze the stochastic sequence or compare a
|
|
333
|
-
stable accumulated result. Do not loosen image thresholds until they stop
|
|
334
|
-
detecting real regressions.
|
|
335
|
-
|
|
336
|
-
## Temporal validation
|
|
337
|
-
|
|
338
|
-
Use fixed-duration clips or sampled checkpoints for:
|
|
339
|
-
|
|
340
|
-
- camera motion;
|
|
341
|
-
- object motion;
|
|
342
|
-
- history accumulation and rejection;
|
|
343
|
-
- shadow-cache refresh;
|
|
344
|
-
- ocean foam persistence;
|
|
345
|
-
- cloud reconstruction;
|
|
346
|
-
- wind deformation;
|
|
347
|
-
- particle birth, death, and pool reuse.
|
|
348
|
-
|
|
349
|
-
Record at least:
|
|
350
|
-
|
|
351
|
-
```text
|
|
352
|
-
t = 0 reset
|
|
353
|
-
t = first visible response
|
|
354
|
-
t = steady state
|
|
355
|
-
t = disocclusion or invalidation
|
|
356
|
-
t = recovery
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
Inspect at normal playback speed and frame-by-frame. Still captures cannot
|
|
360
|
-
prove the absence of shimmer, swimming, stale history, or lifetime pops.
|
|
361
|
-
|
|
362
|
-
## Performance and resolution
|
|
363
|
-
|
|
364
|
-
Report:
|
|
365
|
-
|
|
366
|
-
```text
|
|
367
|
-
CPU frame time
|
|
368
|
-
GPU frame time when available
|
|
369
|
-
draw calls
|
|
370
|
-
triangles / points / instances
|
|
371
|
-
simulation resolution
|
|
372
|
-
render-target count, format, and dimensions
|
|
373
|
-
active quality tier
|
|
374
|
-
cache updates this frame
|
|
375
|
-
estimated GPU memory
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
Never infer GPU cost solely from CPU frame time. Run a warm-up period before
|
|
379
|
-
recording and separate shader compilation from steady-state cost.
|
|
380
|
-
|
|
381
|
-
When reducing quality, identify the preserved mechanism and expected loss:
|
|
382
|
-
|
|
383
|
-
| Reduction | Preserve | Expected loss |
|
|
384
|
-
| --- | --- | --- |
|
|
385
|
-
| lower cloud beauty resolution | density organization and lighting | edge fidelity and thin wisps |
|
|
386
|
-
| fewer atmosphere view steps | shared scattering model | horizon smoothness |
|
|
387
|
-
| smaller spectral grids | cascade and FFT architecture | high-frequency wave richness |
|
|
388
|
-
| reduced shadow update budget | stable committed maps | delayed coarse-level refresh |
|
|
389
|
-
| lower frost blur DPR | history and structure | refraction smoothness |
|
|
390
|
-
|
|
391
|
-
Do not silently lower resolution until a frame looks fast enough.
|
|
392
|
-
|
|
393
|
-
## Rejection criteria
|
|
394
|
-
|
|
395
|
-
Delete or withhold an example when any applies:
|
|
396
|
-
|
|
397
|
-
- it is visually weaker than the supplied reference in the target feature;
|
|
398
|
-
- its code is mostly generic material or noise boilerplate;
|
|
399
|
-
- mechanism-defining constants or ownership were replaced by guesses;
|
|
400
|
-
- it has no diagnostic mode proving the claimed mechanism;
|
|
401
|
-
- it relies on post-processing to manufacture missing form;
|
|
402
|
-
- it contains undisclosed backend, algorithm, asset, or scale divergences;
|
|
403
|
-
- deterministic reset or fixed-camera capture is impossible;
|
|
404
|
-
- the implementation cannot meet its declared performance envelope;
|
|
405
|
-
- the available evidence is too weak to support excellence-level guidance.
|
|
406
|
-
|
|
407
|
-
## Sign-off record
|
|
408
|
-
|
|
409
|
-
Record:
|
|
410
|
-
|
|
411
|
-
```text
|
|
412
|
-
skill and example ID
|
|
413
|
-
visual contract and invariants
|
|
414
|
-
Three.js version and backend
|
|
415
|
-
viewport, DPR, camera bookmark, seed, and time
|
|
416
|
-
mechanisms exercised
|
|
417
|
-
deliberate divergences
|
|
418
|
-
debug modes inspected
|
|
419
|
-
temporal cases inspected
|
|
420
|
-
performance and memory metrics
|
|
421
|
-
known defects
|
|
422
|
-
review decision
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
Publish only accepted examples. Repeat the same evidence set whenever
|
|
426
|
-
mechanism code, Three.js version, renderer backend, camera, or quality tier
|
|
427
|
-
changes.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: genex-threejs-volumetric-clouds
|
|
3
|
-
description: Build volumetric cloud systems for Genex Three.js games. Use for weather-shaped density, bounded raymarching, cloud layers, erosion detail, lighting cones, silver lining, temporal reconstruction, cloud shadows, quality tiers, and sky drama with controlled budgets.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Genex Three.js Volumetric Clouds
|
|
7
|
-
|
|
8
|
-
**Static clouds in a fixed sky → `$genex-ai-skybox` instead** (one command, a
|
|
9
|
-
real 360° image). This skill is for moving, weather-driven, or fly-through
|
|
10
|
-
clouds.
|
|
11
|
-
|
|
12
|
-
Cloud quality comes from density organization, lighting, and temporal stability—not from increasing march steps over unstructured noise.
|
|
13
|
-
|
|
14
|
-
## System order
|
|
15
|
-
|
|
16
|
-
1. Define the cloud volume and layer bounds.
|
|
17
|
-
2. Generate or source weather, base-shape, detail, and turbulence fields.
|
|
18
|
-
3. Build a density function with vertical and weather profiles.
|
|
19
|
-
4. Raymarch only the bounded occupied segment.
|
|
20
|
-
5. Integrate transmittance and lighting front-to-back.
|
|
21
|
-
6. Reconstruct low-resolution output temporally.
|
|
22
|
-
7. Project a separate low-cost cloud-shadow solution.
|
|
23
|
-
|
|
24
|
-
Read [references/volumetric-clouds.md](references/volumetric-clouds.md) before implementing or auditing the cloud system.
|
|
25
|
-
|
|
26
|
-
## Required controls
|
|
27
|
-
|
|
28
|
-
- coverage, cloud type, precipitation, and anvil bias;
|
|
29
|
-
- base/top altitude and vertical density profile;
|
|
30
|
-
- shape/detail scales and erosion;
|
|
31
|
-
- wind for each field;
|
|
32
|
-
- primary step count, light step count, and empty-space policy;
|
|
33
|
-
- history weight and disocclusion threshold;
|
|
34
|
-
- cloud-shadow extent, resolution, and update rate.
|
|
35
|
-
|
|
36
|
-
## Failure conditions
|
|
37
|
-
|
|
38
|
-
- density is only `fbm(position)`;
|
|
39
|
-
- the raymarch traverses the full camera range;
|
|
40
|
-
- detail noise adds density instead of eroding shaped masses;
|
|
41
|
-
- temporal history is accepted across disocclusion;
|
|
42
|
-
- shadows use the full beauty raymarch;
|
|
43
|
-
- every cloud layer shares the same wind and density profile.
|
|
44
|
-
|
|
45
|
-
## Routing boundary
|
|
46
|
-
|
|
47
|
-
Use `$genex-threejs-atmosphere-aerial-perspective` for molecular/aerosol scattering
|
|
48
|
-
without weather density. This skill owns weather-shaped cloud volumes,
|
|
49
|
-
reconstruction, cloud lighting, and cloud shadows.
|