Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
0b6cf9a
fix: Keep a tipped liquid inside its glass, and colour its drops
dzolotov Oct 3, 2026
35feb51
feat: Colour the solutions by what they absorb, and drops as drops
dzolotov Oct 3, 2026
4282516
fix: Mirror the glass in the tabletop; make its shadow as faint as glass
dzolotov Oct 3, 2026
eea291e
fix: Lean and lift a glass smoothly, so a small lean spills nothing
dzolotov Oct 3, 2026
907ecd5
fix: Let photons land on the bench, and pour at the flow the hand wants
dzolotov Oct 3, 2026
11b5a49
fix: Leave out photons stretched past sixteen times their spacing
dzolotov Oct 3, 2026
9a59c73
fix: Stop drops where they land on the bench or a glass
dzolotov Oct 3, 2026
bb74138
feat: Let spilt liquid lie on a floor as a puddle
dzolotov Oct 3, 2026
d59b36e
feat: Lean a tube up to a half turn, lifted alike either way
dzolotov Oct 3, 2026
16eba77
feat: Draw the tail of a stopped pour back into a bulb
dzolotov Oct 3, 2026
cbef4f0
fix: Let go what is short of a particle once no more liquid comes
dzolotov Oct 3, 2026
451b4c1
feat: Mirror streams, drops and puddles in the tabletop
dzolotov Oct 3, 2026
42dcdbd
fix: Filter what see-through casters let through as the opaque edge is
dzolotov Oct 3, 2026
8a489b0
fix: Keep a poured liquid's colour and soften the bench's shadows
dzolotov Oct 3, 2026
4729aed
perf: Make pouring with drops ten times cheaper
dzolotov Oct 3, 2026
bbb4bdd
feat: Give the fluid world air: drag, wind and evaporation
dzolotov Oct 3, 2026
cd31590
feat: Let the Reynolds number choose laminar or turbulent flow
dzolotov Oct 3, 2026
70afe24
feat: Hold drops by contact angle hysteresis, per surface
dzolotov Oct 3, 2026
f60ad1b
feat: Slow a body turning in a liquid by Stokes's torque
dzolotov Oct 3, 2026
e95a127
feat: Let gravity vary from place to place with attractors
dzolotov Oct 3, 2026
12d6459
refactor: Run the particle fluid's pair loops as kernels over flat bu…
dzolotov Oct 3, 2026
6f763a1
feat: Run the particle fluid's kernels natively where a C compiler is
dzolotov Oct 3, 2026
8e8e0ee
perf: Fly each drop as one body, particles only on walls
dzolotov Oct 3, 2026
989520b
perf: Solve each meniscus once, quickly, for every vessel alike
dzolotov Oct 3, 2026
580a934
fix: Keep the meniscus solve off libm, and record the bench again
dzolotov Oct 3, 2026
4006905
perf: Work out new cross-sections and menisci on another isolate
dzolotov Oct 3, 2026
8bfc898
perf: Work out a surface's modes natively with the native kernels
dzolotov Oct 3, 2026
971a796
perf: Solve menisci natively with the native kernels
dzolotov Oct 3, 2026
239016d
perf: Read neighbour candidates in cell order in the native search
dzolotov Oct 3, 2026
c829046
perf: Find drops and neighbours in fewer steps on the Dart path
dzolotov Oct 3, 2026
3bff513
docs: Say what else the native kernels switch moves into C
dzolotov Oct 3, 2026
84904be
perf: Pick the SIMD width of the running processor for the native loops
dzolotov Oct 3, 2026
a770c00
perf: Take AVX2's four lanes on x86-64 even where AVX-512 is there
dzolotov Oct 3, 2026
b13b5af
test: Run the native and background tests on the VM only
dzolotov Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,30 @@ jobs:
sdk: '3.13.0'
- run: tool/flat_dart_check.sh

# **The native pair loops at every width this processor has** — x86-64, so
# the AVX2 and AVX-512 widths, which `src/pbf_kernels.c` picks at run time
# by what the processor says, are real here and on no developer's arm64
# machine. Each width is held to the scalar loop, and timed: which width a
# processor should take by default is a measurement, and this is where it
# can be made. Built with gcc and with clang, which reach the wider widths
# through different pragmas. Seconds; no Dart, no Flutter.
native-lanes:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- run: grep -o -m1 -w -E 'avx512f|avx2|sse2' /proc/cpuinfo | sort -u
- name: gcc
working-directory: packages/flutter3d_physics
run: |
gcc -O3 -fno-math-errno -Wall -Werror -Isrc src/pbf_kernels.c test/native/lanes_check.c -lm -o lanes-gcc
./lanes-gcc
- name: clang
working-directory: packages/flutter3d_physics
run: |
clang -O3 -fno-math-errno -Wall -Werror -Isrc src/pbf_kernels.c test/native/lanes_check.c -lm -o lanes-clang
./lanes-clang

# **A second engine opens the files this one writes, which nothing here had
# ever checked.** The design plan's line is "the exported file opens in Godot
# and Unity", and K2 closed on 2026-09-09 with: headless Godot in CI —
Expand Down
2 changes: 1 addition & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2691,7 +2691,7 @@ storage.
|---|---|
| Style | `dart format` |
| Analysis | `flutter analyze` clean across the workspace, no warnings |
| Unit tests | **11340 tests** across 43 packages and 10 applications |
| Unit tests | **11377 tests** across 43 packages and 10 applications |
| Structure rules | 35, `dart run tool/structure.dart`, the first CI step |
| CI | GitHub Actions over `tool/ci.sh`, on `ubuntu-latest`, with no graphics card |

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Or one package at a time:
(cd packages/flutter3d_physics && dart test) # plain Dart, no Flutter needed
```

There are 11340 tests across forty-three packages and nine applications. The
There are 11377 tests across forty-three packages and nine applications. The
only ones that need a GPU are the Impeller half of the golden set. The other
half is rendered by the software backend, which is what makes 90 scenes
checkable in a headless run.
Expand Down
8 changes: 7 additions & 1 deletion packages/education/chemlab/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,12 @@ class _BenchScreenState extends State<BenchScreen>
@override
void initState() {
super.initState();
// The frame the bench draws, pass by pass, for a tool attached to it
// (`ext.flutter3d.render.*`), as the games have it.
registerRenderExtensions(
() => _ready?.renderer,
timeout: const Duration(seconds: 20),
);
_open();
}

Expand Down Expand Up @@ -312,7 +318,7 @@ class _Controls extends StatelessWidget {
const Text('Tilt'),
Expanded(
child: Slider(
value: vessel.tilt.clamp(
value: vessel.leanTo.clamp(
-bench.maxLean(vessel),
bench.maxLean(vessel),
),
Expand Down
Loading
Loading