v2.0.0-rc: Modernized core, revamped 3D visualization, and a richer set of command-line tools#975
Conversation
…ne settings and a rewritten fragment shader for Fresnel effects and additive blending.
…itecture for macOS runners.
…ture for Windows Qt installations.
… and refresh copyright year in README.
… application bundle icons.
…e GeometryInfo for surface calculations.
…odule build commands in CI workflows.
…ses and the `v2.0-dev` branch for development releases.
|
Wow — this is a massive contribution 🚀 It’s honestly exciting to see this project waking up from hibernation again. I really like what you did with the documentation. And porting over more of Matti’s code was a great move. The new 3D stuff looks amazing 👏 I still sometimes struggle to fully wrap my head around agentic workflows these days 😅 — and I honestly can’t believe how much time I spent implementing the first version of the disp_3d library back then. 3000+ files is definitely no small change 😄 But given that the project has been more or less in archive mode, I’m absolutely fine moving forward with this PR. I obviously didn’t review every single line (that would take a while), but overall I really appreciate the direction and the energy you’re putting into this. I do have a couple of questions/comments:
|
|
thx claude code haha ;) glad to see you folks still around 🤗 |
|
Thanks both — really appreciate the quick review (and the encouragement). Given the size, I’m glad you’re comfortable moving this forward. @LorenzE — quick answers:
@agramfort — haha 😄 great to be back 🤗 and indeed - next: SKILLS… |
|
@chdinh Please also update the required checks for PRs int repo's branch protection rules. Regarding the removal of the old Eigen version: My bad it looks like everything old has been removed already :) |
|
@LorenzE am I seeing this correctly? Since the pipelines were rewritten as well, we should probably merge into main to remove the old pipeline definitions. |
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).