Skip to content

v2.0.0-rc: Modernized core, revamped 3D visualization, and a richer set of command-line tools#975

Merged
chdinh merged 246 commits intomainfrom
v2.0-dev
Mar 7, 2026
Merged

v2.0.0-rc: Modernized core, revamped 3D visualization, and a richer set of command-line tools#975
chdinh merged 246 commits intomainfrom
v2.0-dev

Conversation

@chdinh
Copy link
Member

@chdinh chdinh commented Feb 22, 2026

Summary

This PR merges the v2.0-dev line into main, bringing the project to the v2.0 baseline: Qt6 + modern toolchain, a major 3D visualization refactor replacing legacy Qt3D usage, and an expanded set of command-line / offline tools beyond the classic GUI apps.

Major changes

1. Build & platform modernization

Update build baseline (CMake-based, C++20) and raise minimum build requirements (Qt6, modern compilers).

Centralize Qt component discovery to reduce repeated find-package warnings and streamline subproject configuration.

2. Qt3D refactor → disp3D_rhi (Qt6 RHI-based 3D renderer)

Replace the previous disp3D (Qt3D-based) library with disp3D_rhi, built on Qt6 RHI (QRhi) and compiled shader assets.

disp3D_rhi requires Qt6::GuiPrivate for QRhi headers; if unavailable, the library is skipped (explicit guard in CMake).

Applications depending on 3D inspection are conditionally built only if mne_disp3D_rhi is present.

3. Expanded application & CLI tool surface

In addition to the existing core apps (mne_scan, mne_analyze, mne_anonymize, mne_rt_server, mne_forward_solution, mne_edf2fiff, mne_dipole_fit), v2.0-dev adds/extends build targets for additional utilities:

New/added apps/tools: mne_browse, mne_inspect, mne_show_fiff, mne_compute_raw_inverse, mne_setup_mri, mne_surf2bem, mne_setup_forward_model, plus FreeSurfer-gated tools mne_watershed_bem and mne_flash_bem.

Introduce FreeSurfer detection at configure time and only build watershed/flash BEM tools when FreeSurfer is available.

Notable internal/library structure updates

Library set now includes additional components compared to main (e.g., lsl, mri, and disp3D_rhi), aligning with the new runtime + visualization and device/streaming capabilities.

Breaking / migration notes

Qt6 upgrade and updated compiler baselines are required for building main after merge.

3D rendering stack changed from Qt3D-era implementation to the new RHI-based pipeline (disp3D_rhi); downstream integrations relying on old disp3D internals may need adjustment.

Testing

CI should validate the new baseline; locally: cmake -S . -B build && cmake --build build (per updated build guidance).

chdinh added 30 commits January 30, 2026 22:05
…ne settings and a rewritten fragment shader for Fresnel effects and additive blending.
…ses and the `v2.0-dev` branch for development releases.
@larsoner
Copy link
Member

larsoner commented Mar 2, 2026

I played just a little bit with the browser, looks like an awesome start! I did notice the performance issue but I assume that'll be fixed at some point

chdinh and others added 23 commits March 3, 2026 01:15
Updated citation information for RTC-MNE and added a new reference.
The reference forward solution was generated from the full sample_audvis_raw.fif
(range=0.000305176, correct Neuromag hardware range), but the test uses the
truncated sample_audvis_trunc_raw.fif (range=1.0, default lost during truncation).
EEG channels also have different scanNo values due to extra channels in the full
raw file.

Both fields were never actually compared before because the old
FiffChInfo::operator== had a comma-operator bug (fixed in 1daca51) that made
it only check coord_frame. This change maintains the same effective precision
while properly comparing all other channel info fields (logNo, kind, cal, chpos,
unit, unit_mul, coil_trans, eeg_loc, coord_frame).

Also cleans up debug diagnostic output from previous debugging sessions.
Bumps [svgo](https://github.com/svg/svgo) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/svg/svgo/releases)
- [Commits](svg/svgo@v3.3.2...v3.3.3)

---
updated-dependencies:
- dependency-name: svgo
  dependency-version: 3.3.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Root cause: sample_audvis_trunc_raw.fif in mne-cpp-test-data had range=1.0
(FiffChInfo default) for all 376 channels instead of the original Neuromag
values. This caused the forward solution test to fail because the reference
fwd file has correct range values from the original MNE-sample-data.

Fix: patched the test data raw file with correct range values from
MNE-sample-data/sample_audvis_raw.fif (mne-cpp-test-data@5b167b4).
Removed all [diag-range]/[diag-sizes] fprintf diagnostics.
@chdinh chdinh marked this pull request as ready for review March 7, 2026 12:25
@chdinh chdinh merged commit 8b3b690 into main Mar 7, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants