tosijs-3d 0.8.4 → 0.8.6
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/CHANGELOG.md +362 -0
- package/dist/b3d-aircraft.d.ts +40 -0
- package/dist/b3d-aircraft.d.ts.map +1 -1
- package/dist/b3d-aircraft.js +158 -3
- package/dist/b3d-aircraft.js.map +1 -1
- package/dist/b3d-ambient.d.ts +5 -0
- package/dist/b3d-ambient.d.ts.map +1 -1
- package/dist/b3d-ambient.js +102 -54
- package/dist/b3d-ambient.js.map +1 -1
- package/dist/b3d-cloud-deck.d.ts +49 -0
- package/dist/b3d-cloud-deck.d.ts.map +1 -1
- package/dist/b3d-cloud-deck.js +375 -63
- package/dist/b3d-cloud-deck.js.map +1 -1
- package/dist/b3d-clouds.js +1 -1
- package/dist/b3d-clouds.js.map +1 -1
- package/dist/b3d-controllable.d.ts +3 -0
- package/dist/b3d-controllable.d.ts.map +1 -1
- package/dist/b3d-controllable.js +16 -0
- package/dist/b3d-controllable.js.map +1 -1
- package/dist/b3d-controller.d.ts.map +1 -1
- package/dist/b3d-controller.js.map +1 -1
- package/dist/b3d-input-focus.d.ts.map +1 -1
- package/dist/b3d-input-focus.js +4 -0
- package/dist/b3d-input-focus.js.map +1 -1
- package/dist/b3d-launcher.d.ts +9 -0
- package/dist/b3d-launcher.d.ts.map +1 -1
- package/dist/b3d-launcher.js +24 -2
- package/dist/b3d-launcher.js.map +1 -1
- package/dist/b3d-light-shafts.d.ts +74 -0
- package/dist/b3d-light-shafts.d.ts.map +1 -0
- package/dist/b3d-light-shafts.js +723 -0
- package/dist/b3d-light-shafts.js.map +1 -0
- package/dist/b3d-lightning.d.ts +82 -0
- package/dist/b3d-lightning.d.ts.map +1 -0
- package/dist/b3d-lightning.js +744 -0
- package/dist/b3d-lightning.js.map +1 -0
- package/dist/b3d-panel.d.ts +3 -0
- package/dist/b3d-panel.d.ts.map +1 -1
- package/dist/b3d-panel.js +5 -0
- package/dist/b3d-panel.js.map +1 -1
- package/dist/b3d-skybox.d.ts +6 -0
- package/dist/b3d-skybox.d.ts.map +1 -1
- package/dist/b3d-skybox.js +44 -4
- package/dist/b3d-skybox.js.map +1 -1
- package/dist/b3d-terrain.d.ts.map +1 -1
- package/dist/b3d-terrain.js +11 -7
- package/dist/b3d-terrain.js.map +1 -1
- package/dist/b3d-trail.d.ts +65 -0
- package/dist/b3d-trail.d.ts.map +1 -0
- package/dist/b3d-trail.js +228 -0
- package/dist/b3d-trail.js.map +1 -0
- package/dist/b3d-warhead.d.ts.map +1 -1
- package/dist/b3d-warhead.js +5 -2
- package/dist/b3d-warhead.js.map +1 -1
- package/dist/b3d-water.d.ts +38 -0
- package/dist/b3d-water.d.ts.map +1 -1
- package/dist/b3d-water.js +361 -4
- package/dist/b3d-water.js.map +1 -1
- package/dist/b3d-weather-cell.d.ts +51 -0
- package/dist/b3d-weather-cell.d.ts.map +1 -0
- package/dist/b3d-weather-cell.js +207 -0
- package/dist/b3d-weather-cell.js.map +1 -0
- package/dist/caustics.d.ts +34 -0
- package/dist/caustics.d.ts.map +1 -0
- package/dist/caustics.js +197 -0
- package/dist/caustics.js.map +1 -0
- package/dist/cloud-field.d.ts +33 -0
- package/dist/cloud-field.d.ts.map +1 -1
- package/dist/cloud-field.js +54 -0
- package/dist/cloud-field.js.map +1 -1
- package/dist/cloud-shadows.d.ts +9 -0
- package/dist/cloud-shadows.d.ts.map +1 -1
- package/dist/cloud-shadows.js +14 -0
- package/dist/cloud-shadows.js.map +1 -1
- package/dist/fly-by-wire.d.ts +24 -0
- package/dist/fly-by-wire.d.ts.map +1 -1
- package/dist/fly-by-wire.js +47 -9
- package/dist/fly-by-wire.js.map +1 -1
- package/dist/frame-panel.d.ts +22 -4
- package/dist/frame-panel.d.ts.map +1 -1
- package/dist/frame-panel.js +94 -2
- package/dist/frame-panel.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/land-and-sky.js +307 -20
- package/dist/land-and-sky.js.map +1 -1
- package/dist/landform.d.ts +39 -0
- package/dist/landform.d.ts.map +1 -1
- package/dist/landform.js +77 -0
- package/dist/landform.js.map +1 -1
- package/dist/light-rays.d.ts +61 -0
- package/dist/light-rays.d.ts.map +1 -0
- package/dist/light-rays.js +113 -0
- package/dist/light-rays.js.map +1 -0
- package/dist/lightning.d.ts +65 -0
- package/dist/lightning.d.ts.map +1 -0
- package/dist/lightning.js +164 -0
- package/dist/lightning.js.map +1 -0
- package/dist/scene-schemas.d.ts.map +1 -1
- package/dist/scene-schemas.js +17 -0
- package/dist/scene-schemas.js.map +1 -1
- package/dist/sdf-lattice.d.ts +26 -0
- package/dist/sdf-lattice.d.ts.map +1 -1
- package/dist/sdf-lattice.js +17 -0
- package/dist/sdf-lattice.js.map +1 -1
- package/dist/tosi-b3d.d.ts +44 -1
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +137 -22
- package/dist/tosi-b3d.js.map +1 -1
- package/dist/weather.d.ts +47 -0
- package/dist/weather.d.ts.map +1 -0
- package/dist/weather.js +99 -0
- package/dist/weather.js.map +1 -0
- package/package.json +1 -1
- package/static/attributes.json +401 -10
- package/static/attributes.txt +99 -6
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,368 @@ All notable changes to **tosijs-3d**. This project is pre-1.0 (`0.x`), so minor
|
|
|
6
6
|
versions may carry breaking peer-dependency changes — each is called out in a
|
|
7
7
|
**⚠️ Breaking** block in its version section below, with what a consumer must do.
|
|
8
8
|
|
|
9
|
+
## 0.8.6
|
|
10
|
+
|
|
11
|
+
**Other worlds.** Land and Sky becomes a world builder: presets you pick,
|
|
12
|
+
save and share, with Earth, Mars, Venus, the Moon, Io and Titan built in.
|
|
13
|
+
A crater field landform, volcano fields, ground palettes, sea colours, and
|
|
14
|
+
a sun whose size and brightness follow the world. Lightning casts shadows
|
|
15
|
+
and darkens the day, and the aircraft demo has weather to fly in.
|
|
16
|
+
|
|
17
|
+
Size: barrel (min, packages external) 885.2 KB raw / 296.3 KB gz, about
|
|
18
|
+
+0.3% on 0.8.5.
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Land and Sky presets** (board #2442, stage 1): a whole world as data
|
|
23
|
+
(terrain, sea, climate, weather, atmosphere, stars, moons, cloud colours,
|
|
24
|
+
sun) you pick from the ⚙ panel's new **World** section, save as a new
|
|
25
|
+
preset (kept in your browser) or copy and paste as JSON. Built in: Earth,
|
|
26
|
+
Mars and Venus. A preset lists only what it changes, over Earth.
|
|
27
|
+
- **The sun's size and brightness per world** (`b3d-skybox` `sunSize`,
|
|
28
|
+
`sunBrightness`): the disc (and its glow in vacuum and in the water
|
|
29
|
+
window's HDR capture) scales with 1/distance (Venus 1.39, Mars 0.66, Io
|
|
30
|
+
0.19, Titan 0.11); its light is set by how it LOOKS (a log curve), not by
|
|
31
|
+
the inverse square, because the eye adapts.
|
|
32
|
+
- **Venus is one giant lightning storm** under a maxed, sulfur-yellow deck;
|
|
33
|
+
Land and Sky's storm is preset-able (where, how big, the cover it adds,
|
|
34
|
+
how often it strikes). **Mars is red**: hot and bone-dry, so the palette's
|
|
35
|
+
red dust (temperature falls with altitude; a cooler Mars went grey). The
|
|
36
|
+
volcano is off for both until each world has its own landforms.
|
|
37
|
+
- **`craterField`** (landform): a whole cratered surface, seeded and
|
|
38
|
+
unbounded. Sizes in doubling classes, one grid per class sized to its
|
|
39
|
+
craters, so a real 1/size-squared population is one presence roll per
|
|
40
|
+
cell and a terrain sample checks one cell per class. Big (old) craters
|
|
41
|
+
first, small ones punch into them; each worn to its own age; complex
|
|
42
|
+
craters (flat floor, central peak) past `complexRadius`. Land and Sky has
|
|
43
|
+
a **craters** slider; Mars 0.35, Venus 0.06 (its surface is young). Dry
|
|
44
|
+
worlds have **no sea** (`sea: false`): no water plane, no shore colours.
|
|
45
|
+
- **Moon, Io and Titan presets.** The Moon: airless, saturated craters, grey
|
|
46
|
+
regolith, stars at noon, Earth in its sky. Io: a sulfur palette (frost,
|
|
47
|
+
yellow, orange-red, black lava), a field of hot volcanoes, a tiny sun.
|
|
48
|
+
Titan: orange haze and cloud over dark amber methane seas, a tiny, dim
|
|
49
|
+
sun. Land and Sky gains **volcanoes** (a seeded field), a **ground
|
|
50
|
+
palette** (swapped on the biome shader) and sea colours. `b3d-water`
|
|
51
|
+
gains **`fogColor`**: the colour of the water you are in, which the
|
|
52
|
+
underwater fog, the medium and the light shafts all read.
|
|
53
|
+
- **Venus: no rain, gentler relief.** Its sulfuric acid rain evaporates
|
|
54
|
+
before reaching the ground, and the surface is mostly smooth lava plains;
|
|
55
|
+
the storm's rain is now a preset setting (`stormRain`).
|
|
56
|
+
- **The aircraft demo has weather to fly in**: ⚙ sliders for wind (blowing
|
|
57
|
+
across your starting heading, so you crab) and storminess (a storm cell
|
|
58
|
+
over the whole arena), and a live turbulence readout.
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
|
|
62
|
+
- **Lightning bolts vanished into haze** while their light still lit the
|
|
63
|
+
ground (Tonio: "I see flashes but never seem to see lightning strokes"):
|
|
64
|
+
under a closed deck the scene fog swallowed the bolt meshes. Bolts ignore
|
|
65
|
+
fog now; they are far brighter than anything it hides.
|
|
66
|
+
- **Distant lightning strokes did not render**: a 1.6 m channel is a small
|
|
67
|
+
fraction of a pixel a few kilometres off, so under a big storm most bolts
|
|
68
|
+
vanished while their flash lit everything. Bolts (and their glow) now
|
|
69
|
+
scale with distance, never thinner than about a pixel and a half.
|
|
70
|
+
|
|
71
|
+
## 0.8.5
|
|
72
|
+
|
|
73
|
+
**Weather you can watch.** Storms that darken the day and strike: lightning
|
|
74
|
+
that lights the cloud from below, inside and above, lights the landscape and
|
|
75
|
+
throws shadows, with thunder at the speed of sound. Shafts of sun through a
|
|
76
|
+
broken sky, and the sky and sun seen through the water from below, with rays
|
|
77
|
+
fanning down from them. Rain and snow from the weather, the wind carrying
|
|
78
|
+
aircraft and buffeting them in a storm. And two long-hidden bugs: the cloud
|
|
79
|
+
deck's local weather was mirrored north-south, and on the doc site no shadow
|
|
80
|
+
map had rendered at all.
|
|
81
|
+
|
|
82
|
+
Size: barrel (min, packages external) 883.2 KB raw / 295.6 KB gz (+5.7% gz),
|
|
83
|
+
for lightning, light shafts, weather cells, trails and caustics.
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- **Lightning lit the land through cloud-shaped shadows** (Tonio: "the
|
|
88
|
+
directional light seems to be coming from above the cloud layer ... the
|
|
89
|
+
shadows are mostly cloud"). The projected cloud shadow multiplied the
|
|
90
|
+
whole lit colour, flash included; a flash starts BELOW the cloud, so the
|
|
91
|
+
cloud shadow now fades while the deck is flashing (`strengthSource`, read
|
|
92
|
+
at draw time).
|
|
93
|
+
- **Moonlight made shafts as bright as noon.** The shafts' colour was
|
|
94
|
+
normalised and never scaled by the light's intensity; the skybox puts the
|
|
95
|
+
moon in the same light at night. They now scale with it (moon shafts are
|
|
96
|
+
real, and faint).
|
|
97
|
+
- **Shafts are SMALL where they leave the deck or the surface** (Tonio: the
|
|
98
|
+
wider they are, the more obvious any mismatch with the gap): sky `width`
|
|
99
|
+
200 -> 40 m (4 m near closed cover), underwater rays 0.2-0.8 m.
|
|
100
|
+
|
|
101
|
+
- **No shadow map rendered on the doc site, the sun's included.** Babylon's
|
|
102
|
+
shadow generators lazy-load their shaders from code-split chunks, and each
|
|
103
|
+
chunk loaded a second copy of the site bundle (tosijs-ui#191), which threw,
|
|
104
|
+
so the shaders never loaded and every `isReady()` stayed false. The site
|
|
105
|
+
entry now imports the shadow shaders statically and tells the generators
|
|
106
|
+
they are loaded (site-only workaround; the library is unaffected).
|
|
107
|
+
|
|
108
|
+
- **Thunder kept playing after leaving the page** (Tonio). Thunder is
|
|
109
|
+
scheduled ahead on the audio clock (a storm 2 km off rumbles 6 s after its
|
|
110
|
+
flash, for 4 s), and disposing `<tosi-b3d-lightning>` neither stopped it
|
|
111
|
+
nor closed the context. It now closes its AudioContext, silencing
|
|
112
|
+
anything queued at once and no longer leaking a context per visit.
|
|
113
|
+
|
|
114
|
+
- **The cloud deck's local-weather texture was MIRRORED north-south.**
|
|
115
|
+
Babylon's ground rows run from +Z to -Z; the texture's rows the other way.
|
|
116
|
+
Everything reading the texture (local coverage, storm gloom, the cloud
|
|
117
|
+
shadow) put storms and orographic cloud at the mirror image of where they
|
|
118
|
+
were, invisible when a storm sat near the deck's centre. The lightning
|
|
119
|
+
demo's storm, 1.3 km off-centre, was drawn 1.3 km the other way, so every
|
|
120
|
+
strike lit empty sky. Pure `packWeatherTexture` flips the rows, tested.
|
|
121
|
+
- **A storm's sky only closed at its very core**, so from below you looked
|
|
122
|
+
up through gaps at the inside of the tower, which read as the deck's
|
|
123
|
+
BOTTOM bowing upward (Tonio). A storm now counts in full in the coverage
|
|
124
|
+
(its share is taken out of the ramped field and added back whole): a cell
|
|
125
|
+
of 1.8 closes the sky over the inner half of its radius, the base stays
|
|
126
|
+
flat, and only the top skin rises into the tower. From above the ceiling
|
|
127
|
+
bulges up; from below it is a flat, solid underside.
|
|
128
|
+
- **A strike lit the cloud one frame late** (the deck pushed its flash before
|
|
129
|
+
lightning set it); the flash is now written at draw time. It also lights
|
|
130
|
+
the TOP skin, so a tower seen from the side glows, and the ground light
|
|
131
|
+
sits halfway between the cloud base and the terrain under the strike.
|
|
132
|
+
|
|
133
|
+
- **The launcher demo's left stick did nothing** (board #2434). Since the
|
|
134
|
+
GTA-style remap the biped mapping sends A/D and left-stick X to `strafe`
|
|
135
|
+
and only the right stick to `turn`; three doc demos (launcher, warhead,
|
|
136
|
+
the controller's rover) still steered on `turn` alone, so the glass
|
|
137
|
+
pad's stick and A/D were dead. They now steer on either.
|
|
138
|
+
|
|
139
|
+
- **Orographic cloud filled the whole sky over land** (Tonio: "orographic is
|
|
140
|
+
the problem. It fills the transparent areas without changing apparent
|
|
141
|
+
cloud coverage"). The lift was measured from ABSOLUTE height, so with Land
|
|
142
|
+
and Sky's sea at 147 m every bit of land counted as mountain and added
|
|
143
|
+
+0.5 to +0.75 coverage: a 0.3 sky rendered as a solid grey sheet. It is
|
|
144
|
+
now measured from the SEA (the scene's water surface) and weighted to
|
|
145
|
+
RIDGES (ground above its surroundings); a high flat plateau keeps 35% of
|
|
146
|
+
it. Pure: `cloud-field`'s `orographicLift`, tested. `orographicPeak` is now
|
|
147
|
+
the height above the sea.
|
|
148
|
+
|
|
149
|
+
### Added
|
|
150
|
+
|
|
151
|
+
- **Lightning casts shadows** (Tonio: "spin up a shadow map and retain it
|
|
152
|
+
between strokes and just use it for the brightest strike"). ONE shadow map,
|
|
153
|
+
kept; re-rendered once per new brightest ground strike, never per frame.
|
|
154
|
+
The strike's light is a POINT light by default (`flashLight`), from the
|
|
155
|
+
middle of the channel, so shadows radiate from the bolt (a cube map: six
|
|
156
|
+
renders per strike); `'directional'` is the one-render option for low-end
|
|
157
|
+
devices. Casters within `shadowRange` of you (and of the strike, for a
|
|
158
|
+
point light); `shadows`, `shadowSize`. It replaces the old point light, so
|
|
159
|
+
the scene stays within a material's 4-light budget. The lightning demo now
|
|
160
|
+
has hills, trees and a hamlet under the storm.
|
|
161
|
+
- **A storm darkens the day around it** (Tonio: "cut ambient and even sun
|
|
162
|
+
brightness somewhat when lightning is flashing ... by half"): new
|
|
163
|
+
`darken` on `<tosi-b3d-lightning>` (0.5) takes the sun and the ambient
|
|
164
|
+
fill down by half at full storm, easing with distance and strength,
|
|
165
|
+
through the cloud deck's own light handling (`deck.stormDim`) so the two
|
|
166
|
+
cannot compound. The deck's gloom no longer dims lightning's own lights
|
|
167
|
+
(it was cutting the landscape flash by up to 90% under cover).
|
|
168
|
+
- **Land and Sky: a "lightning storm" toggle** beside the volcano: the storm
|
|
169
|
+
gathers in front of you over 20 s, strikes, rains and throws strike
|
|
170
|
+
shadows, then drifts away east.
|
|
171
|
+
- **Lightning is dramatic** (Tonio: "having the lightning be dramatically
|
|
172
|
+
bright"): each strike lights the WHOLE landscape from above (falling off
|
|
173
|
+
with the storm's distance), the tower from inside, harder, and the bolt
|
|
174
|
+
carries an additive halo. New `brightness` (the drama) and `rate` (how
|
|
175
|
+
often, a multiple of the natural rate; pure `strikesBetween` takes it,
|
|
176
|
+
tested) on `<tosi-b3d-lightning>`; `groundLight` default 2.5 -> 6. Storm
|
|
177
|
+
lightning also brightens the WHITEOUT when you are inside the cloud. The
|
|
178
|
+
landscape flash is strong enough for a dark ground to read as lit (peak
|
|
179
|
+
3.5, halving at 6 km; the ground light reaches 6 km). The
|
|
180
|
+
demo has a scene panel: storm size,
|
|
181
|
+
how often, cloud cover, brightness, time of day. A storm is no longer a
|
|
182
|
+
TOWER by default (Tonio: "it basically looks terrible"): the deck's
|
|
183
|
+
`stormRise` defaults to 0 (opt-in, domed when on), so a storm is more
|
|
184
|
+
cover and lightning. From below the flash lights the underside and the
|
|
185
|
+
ground, inside it the whiteout, above it the top.
|
|
186
|
+
- **Weather reaches the airframe** (board #1125). `<tosi-b3d-aircraft>` asks
|
|
187
|
+
the scene for the weather where it is: the WIND carries it (it chases an
|
|
188
|
+
air-relative velocity, so a crosswind crabs it downwind), and a STORM
|
|
189
|
+
buffets it — seeded disturbance on pitch, roll and climb that the attitude
|
|
190
|
+
controller fights back toward the stick. Strong wind alone adds a little.
|
|
191
|
+
New attributes **`turbulence`** (`'on'`/`'off'`, default on) and
|
|
192
|
+
**`turbulenceScale`** (default `1`), and a read-only **`turbulenceLevel`**
|
|
193
|
+
(0–1) for a HUD or a debug readout. The disturbance is the pure, seeded
|
|
194
|
+
**`turbulence(t, seed, level)`** in `fly-by-wire`. Nothing happens on the
|
|
195
|
+
ground or in an owner without the weather service.
|
|
196
|
+
- **Light shafts** (WEATHER-DESIGN stage 4, board #1084), to Tonio's model
|
|
197
|
+
(pure half: **`light-rays`**): **`<tosi-b3d-light-shafts>`** hangs shafts
|
|
198
|
+
from the gaps in the cloud deck, BELOW it, running along the sun and
|
|
199
|
+
widening slightly (`spread`), and as broad as the gaps: `width` at the
|
|
200
|
+
0.5 threshold down to slits as the cover closes toward 1. An additive,
|
|
201
|
+
flat fill of the sun's colour — `strength` 0.35 at the cloud, linear to 0 — most prominent looking toward
|
|
202
|
+
the sun (a forward-scatter phase, per pixel), and only where the local
|
|
203
|
+
cover is broken: 0.5 up to (not including) 1. Placement searches a fine
|
|
204
|
+
grid near you as well as a coarse one far out, keeps one shaft per gap,
|
|
205
|
+
and only refuses a shaft that would pass through you, so a deck just
|
|
206
|
+
above your head (Land and Sky) gets shafts too. The same model runs UNDER
|
|
207
|
+
THE WATER: shafts from the surface, bent by Snell's law, sunlight tinted
|
|
208
|
+
by the water's fog, shimmering as cells come and go (`underwater`,
|
|
209
|
+
`underwaterCount`). SURFACE TURBULENCE drives them (the wind over the
|
|
210
|
+
water, its `waveHeight` and `bumpHeight`): calm water gives a few broad,
|
|
211
|
+
slow rays, choppy water many narrow ones that flicker (`waterRoughness`,
|
|
212
|
+
`waterRayShape`; `waterRoughness` on the element reads it back). The doc
|
|
213
|
+
page has an underwater demo. Shafts are RECTANGULAR (`spread` 0), so
|
|
214
|
+
perspective alone makes them radiate from the sun; sky placement is
|
|
215
|
+
weighted hard toward the sun's position in view, and underwater rays are
|
|
216
|
+
biased toward the viewer so the middle of the view is not empty. Rain adds
|
|
217
|
+
to the strength.
|
|
218
|
+
- **The weather-cell demo has a frame of reference** (Tonio: "it has no
|
|
219
|
+
frame of reference so it just looks like leaves blowing around"): a row of
|
|
220
|
+
flagpoles you fly past, each flag showing the wind WHERE IT STANDS
|
|
221
|
+
(streaming downwind, limp in the lee), and the lee's edge drawn as a ring
|
|
222
|
+
on the water.
|
|
223
|
+
- **The sky through the water, from below** (`b3d-water` `undersideSky`,
|
|
224
|
+
default 1; Tonio: "we want to see the sky and sun through and distorted by
|
|
225
|
+
the water surface"). The window no longer shows a flat colour: a small
|
|
226
|
+
reflection probe photographs the sky with its fog and veil OFF, and the
|
|
227
|
+
underside refracts it through the water's own ripples, so the sky and the
|
|
228
|
+
sun arrive bent and moving. Clearest in the shallows, fading with depth,
|
|
229
|
+
giving way to the dark mirror at grazing angles. The probe is HALF-FLOAT
|
|
230
|
+
and captures the sun as HDR (a new skybox uniform, `b3dSunHdr`, 0 in
|
|
231
|
+
normal rendering), so the sun still punches through the partial
|
|
232
|
+
transmission of the surface (Tonio: "our skybox isn't HDR so its glare
|
|
233
|
+
doesn't punch through"). (It replaces a glare sprite that looked fake.) Underwater rays are fewer (`underwaterCount`
|
|
234
|
+
12, lower presence).
|
|
235
|
+
- **Rain and snow from the weather** (WEATHER-DESIGN stage 5, board #1124).
|
|
236
|
+
`b3d-ambient` gains `weather: 'rain' | 'snow'`: emission follows the
|
|
237
|
+
PRECIPITATION where the viewer is, so a storm brings its own rain and it
|
|
238
|
+
eases in and out as the storm passes; the local temperature splits rain
|
|
239
|
+
from snow (sleet between). Rain now draws as STREAKS stretched along its
|
|
240
|
+
velocity, so the wind visibly slants it. Land and Sky's storm rains.
|
|
241
|
+
- **Lightning and thunder** (WEATHER-DESIGN stage 3, board #1123):
|
|
242
|
+
**`<tosi-b3d-lightning>`** strikes under every weather cell with
|
|
243
|
+
`storminess`, seeded (same seed, same storm; frame rate cannot change it).
|
|
244
|
+
Cloud-to-ground strikes draw a jagged, branching bolt that flickers through
|
|
245
|
+
its re-strokes and light the ground; every strike lights the cloud deck from
|
|
246
|
+
INSIDE around it (`deck.flash()`, a new hook: why storms want coverage past
|
|
247
|
+
1); thunder is procedural and arrives at the speed of sound, so you can
|
|
248
|
+
count the distance; and over strong storms, rarely, **sprites**: brief
|
|
249
|
+
red-pink crowns with purple tendrils high above the tower. Each strike
|
|
250
|
+
dispatches `strike` with `{ kind, x, z, t, distance }`. The pure model is
|
|
251
|
+
`lightning.ts` (`strikesBetween`, `boltPath`, `flashAt`, `thunderDelay`).
|
|
252
|
+
Land and Sky's storm now brings lightning.
|
|
253
|
+
- **Weather, stage 2: a storm you can see** (board #1122). A
|
|
254
|
+
`<tosi-b3d-weather-cell>` with `coverage` joins the cloud deck's local
|
|
255
|
+
weather field: denser cloud over it, a greyer, heavier underside (its own
|
|
256
|
+
"gloom" channel, so orographic cloud still never repaints fair weather as
|
|
257
|
+
foul), the storm's shadow on the ground beneath (the shadow reads the same
|
|
258
|
+
field), and full strength even when the global dial says clear. A drifting
|
|
259
|
+
cell re-bakes about once per 10 m of travel.
|
|
260
|
+
Land and Sky has a **storm** toggle in its Weather group: a storm drifting
|
|
261
|
+
with the wind (the scene's wind now matches the deck's) that passes over
|
|
262
|
+
you and recedes into view.
|
|
263
|
+
Cells gain **`grow`** (seconds to gather from nothing to full), so a storm
|
|
264
|
+
builds rather than appearing; the deck re-bakes in 1% strength steps as it
|
|
265
|
+
does. Across SPACE a cell was already gradual: a smoothstep over its whole
|
|
266
|
+
radius, smoothed again by the deck.
|
|
267
|
+
**Storm towers:** cell coverage now runs to 2, and past 1 is THICKNESS,
|
|
268
|
+
as on the deck's own dial: the deck lifts its top skin there by up to
|
|
269
|
+
`stormRise` (1,500 m), whatever the global dial says, so a storm is a dark
|
|
270
|
+
heavy base from below and a bright tower from above, and the thing
|
|
271
|
+
lightning will light from inside. The cell channels get one smoothing pass,
|
|
272
|
+
not the orographic field's four (which flattened a storm's excess from 0.7
|
|
273
|
+
to 0.18). Land and Sky's storm is coverage 1.7.
|
|
274
|
+
- **Weather, stage 1: the weather where you are** (WEATHER-DESIGN.md, board
|
|
275
|
+
#255). `b3d.weatherAt(x, z)` (and `weatherHere()`) answers what every
|
|
276
|
+
weather consumer asks: the scene's base wind plus every
|
|
277
|
+
**`<tosi-b3d-weather-cell>`** that reaches the point, composed per quantity
|
|
278
|
+
(wind and temperature sum, coverage sums clamped, precipitation and
|
|
279
|
+
storminess take the max). Clouds, water and ambient now read the wind AT
|
|
280
|
+
THE VIEWER rather than one scene-wide value, so a lee is calm and a squall
|
|
281
|
+
is local. A cell with `drift="wind"` travels with the wind (a weather
|
|
282
|
+
system), and `lifetime` grows, holds and ends it. The pure model is
|
|
283
|
+
`weather.ts`. Measured on the new page: leaves' wind 12 → 0.96 m/s crossing
|
|
284
|
+
a lee's centre.
|
|
285
|
+
- **Caustics** (board #198, tosijs-3d#16): light through the moving surface,
|
|
286
|
+
dancing on whatever is beneath a `twoSided` `b3d-water` (`caustics`,
|
|
287
|
+
`'auto'` = on whenever `twoSided`; `causticsStrength`, `causticsScale`).
|
|
288
|
+
Projected by world position through a material plugin (the cloud-shadow
|
|
289
|
+
technique), so terrain, hulls and the player all get it with no per-mesh
|
|
290
|
+
setup; slants with the sun, shimmers (two moving layers, combined with
|
|
291
|
+
`min`), fades with depth and fog, and goes with the sun. The pattern is a
|
|
292
|
+
seeded, tiling cellular web (`causticPattern`), with no file to fetch.
|
|
293
|
+
- **One lattice per world, enforced where code can** (board #257,
|
|
294
|
+
tosijs-3d#75): every `extractChunk` result carries its `lattice` identity
|
|
295
|
+
(`latticeIdentity(cfg)`), and `assertLatticesWeld(chunks)` throws on a
|
|
296
|
+
mismatch instead of leaving a crack. TUNNEL-DESIGN.md records the decision
|
|
297
|
+
that carves are world-level objects provinces declare but don't own, so a
|
|
298
|
+
tunnel between provinces is just a carve in the field.
|
|
299
|
+
- **Snell's window: the water's underside** (board #197, tosijs-3d#15). Looking
|
|
300
|
+
up from under a `twoSided` `b3d-water` used to show flat dark blue. Now
|
|
301
|
+
(`underside`, `'auto'` = on whenever `twoSided`) it is a bright window onto
|
|
302
|
+
the sky overhead, darkening to a mirror of the depths toward grazing angles,
|
|
303
|
+
rippling with the same normal map as the surface, and fading in with the
|
|
304
|
+
underwater fog's own band weight. One plane, one draw call, only while
|
|
305
|
+
submerged. `undersideColor` / `undersideDepthColor` tune the two ends. It
|
|
306
|
+
stays OPAQUE and the sky stays fogged, unlike the prototype, so a level look
|
|
307
|
+
under water still sees murk rather than sky.
|
|
308
|
+
- **`b3d.debugFogColor`** (`'#ff00ff'`) paints the composited fog a colour
|
|
309
|
+
nothing else is, to tell fog from surface from sky; also a toggle on the
|
|
310
|
+
Perf Stats panel's new Fog row (with density, end and veil), for a headset.
|
|
311
|
+
- **`<tosi-b3d-trail>`** — a ribbon behind anything that moves (contrails,
|
|
312
|
+
missile smoke, a fast enemy's wake), lifted from manta-recon's engine
|
|
313
|
+
contrails (tosijs-3d#4, board #186). Nest it in the mover, give it a local
|
|
314
|
+
offset; it measures speed at its own emitter (so it works on anything),
|
|
315
|
+
fades below `minSpeed`, takes `underwaterColor` below a `<tosi-b3d-water>`,
|
|
316
|
+
re-attaches when the host's mesh is replaced (respawn, async load), and
|
|
317
|
+
resets on a floating-origin shift. **`attachTrail(node, scene, options)`**
|
|
318
|
+
is the same for a node you hold, such as a spawned missile.
|
|
319
|
+
Missiles get it for free: `<tosi-b3d-launcher missile-trail="on">`, or
|
|
320
|
+
`trail` on `spawnProjectile`/`spawnMissile` for your own rounds.
|
|
321
|
+
- **Frame panels are usable as menus** (board #768, tosijs-3d#92, from
|
|
322
|
+
manta-recon moving its outer game to viewer-relative panels):
|
|
323
|
+
- **They route pointers.** A `panel3d` on a frame panel now takes presses,
|
|
324
|
+
drags and hover from mouse, touch and XR rays (the same routing
|
|
325
|
+
`b3d-svg-plane` has), and repaints immediately on press and release rather
|
|
326
|
+
than on the texture's 400 ms timer. Before, the buttons drew and ignored
|
|
327
|
+
every click, with no error.
|
|
328
|
+
- `attachFramePanel` returns its **`mesh`**.
|
|
329
|
+
- **`resolution`** on `FramePanelSpec` (and `<tosi-b3d-panel resolution>`):
|
|
330
|
+
384 suits a reticle, not a menu of text.
|
|
331
|
+
- **`flatFrame` applies to any panel**, not only hand panels, so
|
|
332
|
+
`flatFrame: 'face'` measures a flat panel's elevation from the VIEW rather
|
|
333
|
+
than the off-screen horizon of a pitched camera.
|
|
334
|
+
- **Flying under water feels like water** (board #185, manta's #3). A
|
|
335
|
+
`submersible` aircraft now meets a thicker MEDIUM below the surface:
|
|
336
|
+
`waterDrag` (×10 by default, the 2010 Manta's air:water ratio) multiplies
|
|
337
|
+
drag, blended over `waterTransition` metres. The controls are unchanged; full
|
|
338
|
+
throttle settles at ~32% of `maxSpeed`. **`surface-crossed`** fires on each
|
|
339
|
+
crossing with `{ entering, point, speed, aircraft }` for splash, wake and
|
|
340
|
+
audio cues, and **`submerged`** (0–1) is readable. In the pure model:
|
|
341
|
+
`FlyByWireConfig.mediumDrag`, and drag now clamps at rest instead of
|
|
342
|
+
overshooting into reverse on a long frame.
|
|
343
|
+
|
|
344
|
+
### Fixed
|
|
345
|
+
|
|
346
|
+
- **Replacing the player left input focus on the removed one** (board #2421,
|
|
347
|
+
from manta-recon's respawn): the new craft got no input and its crash was
|
|
348
|
+
ignored by `b3d-death`. A controllable now releases focus when it is
|
|
349
|
+
disposed, and `adoptIfVacant` treats a disconnected focused entity as a
|
|
350
|
+
vacant seat. No more `releaseFocus()` before the swap.
|
|
351
|
+
- **Ambient wind accumulated every frame and flung particles away**: the
|
|
352
|
+
preset's direction vectors were assigned by reference, and the per-frame
|
|
353
|
+
`direction.set(preset + wind)` wrote into the preset, so the wind grew frame
|
|
354
|
+
on frame (drops at kilometres a second, never seen). Cloned now, and the
|
|
355
|
+
particles take the INHERITED wind (scene and weather cells), not only the
|
|
356
|
+
element's own `windX`/`windZ`.
|
|
357
|
+
- **Flat eye-anchored panels trailed a moving camera by one frame** (board
|
|
358
|
+
#767, found by manta-recon at 2.15 m per frame behind b3d-aircraft's follow
|
|
359
|
+
camera). The flat frames are now posed on `onBeforeCameraRenderObservable`,
|
|
360
|
+
after anything that moves the camera during the render. Measured: 0.000 m
|
|
361
|
+
gap over 64 frames of a camera moving 2 m per frame.
|
|
362
|
+
- **Every scene with a glass gamepad logged a type warning** (`gamepad is
|
|
363
|
+
declared boolean … but was written string`). `gamepad` is genuinely
|
|
364
|
+
`boolean | string` (`true` = the default layout, a string = a layout), so
|
|
365
|
+
it is now a plain property read once at setup rather than a typed attribute.
|
|
366
|
+
Markup (`gamepad`, `gamepad="…"`) and `b3d({ gamepad })` are unchanged.
|
|
367
|
+
- **`b3d-terrain.recenter()` threw away an authored `worldU`/`worldV`** (board
|
|
368
|
+
#458), resetting them to the defaults. It now clears the travel (the
|
|
369
|
+
floating-origin offset) and leaves the placement alone.
|
|
370
|
+
|
|
9
371
|
## 0.8.4
|
|
10
372
|
|
|
11
373
|
**A sky you can actually see the stars in, and a world with things growing on
|
package/dist/b3d-aircraft.d.ts
CHANGED
|
@@ -78,6 +78,23 @@ export declare class B3dAircraft extends B3dControllable {
|
|
|
78
78
|
* (or `groundY`) beneath it.
|
|
79
79
|
*/
|
|
80
80
|
submersible: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* How much thicker water is than air, as a drag multiplier (submersible
|
|
83
|
+
* only). The 2010 Manta ran identical thrust at drag 0.1 above water and
|
|
84
|
+
* 1.0 below, so ×10: full throttle settles at ~32% of `maxSpeed`
|
|
85
|
+
* underwater and the controls feel the same, just heavier.
|
|
86
|
+
*/
|
|
87
|
+
waterDrag: number;
|
|
88
|
+
/**
|
|
89
|
+
* `'off'` ignores the weather: no wind drift, no buffeting. On by default
|
|
90
|
+
* because a calm scene has no weather to feel, so it changes nothing
|
|
91
|
+
* until a wind or a storm is declared.
|
|
92
|
+
*/
|
|
93
|
+
turbulence: "on" | "off";
|
|
94
|
+
/** Scales the buffeting (1 = as the weather says). */
|
|
95
|
+
turbulenceScale: number;
|
|
96
|
+
/** Metres over which the drag blends from air to water across the surface. */
|
|
97
|
+
waterTransition: number;
|
|
81
98
|
crashSpeed: number;
|
|
82
99
|
weapons: string;
|
|
83
100
|
gunRate: number;
|
|
@@ -116,6 +133,17 @@ export declare class B3dAircraft extends B3dControllable {
|
|
|
116
133
|
};
|
|
117
134
|
airspeed: number;
|
|
118
135
|
altitude: number;
|
|
136
|
+
/** Current turbulence 0–1 from the weather here (a HUD or audio can read it). */
|
|
137
|
+
turbulenceLevel: number;
|
|
138
|
+
private _turbulenceSeed;
|
|
139
|
+
/**
|
|
140
|
+
* How far under the water the airframe is, 0 (air) … 1 (fully submerged),
|
|
141
|
+
* blended over `waterTransition`. 0 whenever the scene has no water or the
|
|
142
|
+
* craft is not `submersible`. Read it for camera, audio or HUD cues.
|
|
143
|
+
*/
|
|
144
|
+
submerged: number;
|
|
145
|
+
private _waterEl;
|
|
146
|
+
private _wasUnder;
|
|
119
147
|
throttleLevel: number;
|
|
120
148
|
vtolActive: boolean;
|
|
121
149
|
stalling: boolean;
|
|
@@ -270,6 +298,18 @@ export declare class B3dAircraft extends B3dControllable {
|
|
|
270
298
|
* Water is ground to something that cannot go under it, and scenery to
|
|
271
299
|
* something that can. That is one rule, so it lives in one place.
|
|
272
300
|
*/
|
|
301
|
+
/**
|
|
302
|
+
* THE MEDIUM, sampled at the airframe: 0 in air, 1 underwater, blended
|
|
303
|
+
* across `waterTransition` so the drag change is felt as a thickening
|
|
304
|
+
* rather than a wall. Also the one place that notices the surface being
|
|
305
|
+
* CROSSED, and says so with a `surface-crossed` event (splash, wake, audio,
|
|
306
|
+
* camera cues are the game's; this only reports the moment).
|
|
307
|
+
*
|
|
308
|
+
* The water level is read from the MESH, like the biped's: water is
|
|
309
|
+
* viewer-centred and not origin-shifted, so the mesh is the honest answer.
|
|
310
|
+
* Looked up once and cached; a scene with no water costs nothing per frame.
|
|
311
|
+
*/
|
|
312
|
+
private _medium;
|
|
273
313
|
private skipForCollision;
|
|
274
314
|
/** World nose direction (unit) and a muzzle point `ahead` metres in front.
|
|
275
315
|
* Computed through the WORLD matrix, never node.position: with a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"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"}
|