|
| 1 | +Minutes from OpenVDB TSC meeting, February 11th, 2026, (EDT) |
| 2 | + |
| 3 | +Attendees: *Ken* M., *Dan* B., *Nick* A., *Jeff* L., *Andre* P. |
| 4 | + |
| 5 | +Additional Attendees: Jonathan Swartz (NVIDIA) |
| 6 | + |
| 7 | +Regrets: *Greg* H., *Rich* J. |
| 8 | + |
| 9 | +Agenda: |
| 10 | + |
| 11 | +1) Confirm quorum |
| 12 | +2) Secretary |
| 13 | +3) TAC meeting preparation |
| 14 | +4) Example files & artifacts.aswf.io |
| 15 | +5) IO refactor: Delayed loading removal |
| 16 | +6) Houdini integration demo |
| 17 | +7) Read options API design |
| 18 | +8) Next meeting |
| 19 | + |
| 20 | +-------------------- |
| 21 | + |
| 22 | +1) Confirm quorum |
| 23 | + |
| 24 | +Quorum is present. |
| 25 | + |
| 26 | +2) Secretary |
| 27 | + |
| 28 | +Secretary is Andre P. |
| 29 | + |
| 30 | +3) TAC Meeting Preparation |
| 31 | + |
| 32 | +* Ken preparing for annual TAC review/update next Wednesday. |
| 33 | +* New file format / IO system (justification: new compression schemes, performance improvements, smaller file sizes). |
| 34 | +* CI changes (switched off nightly builds, adjusted job categories). |
| 35 | +* SIGGRAPH course from last year. |
| 36 | +* Need slide with highlights of new file system. |
| 37 | +* Need on GPU CI issue |
| 38 | + |
| 39 | +### CI Changes Update |
| 40 | + |
| 41 | +* Changes implemented: |
| 42 | + * Removed nightly builds. |
| 43 | + * Reduced from 3 categories (per-commit, nightly, weekly) to 2 categories (per-commit, weekly). |
| 44 | + * Enabled asserts in release builds for per-commit CI. |
| 45 | + |
| 46 | +4) Example Files & artifacts.aswf.io |
| 47 | + |
| 48 | +* Issue: `explosions.vdb` on downloads page no longer loads (written before OpenVDB open-sourced). |
| 49 | +* All example files currently stored in `artifacts.aswf.io` (S3). |
| 50 | +* ~16-20 example files pointing to artifacts.aswf.io. |
| 51 | +* No clear documentation on how to access or update these files. |
| 52 | + |
| 53 | +**Proposed Solution:** |
| 54 | +* Download all files using `download_vdb_caches.py` script (in CI folder). |
| 55 | +* Rewrite files using new format. |
| 56 | +* Upload to Git LFS in website repo. |
| 57 | +* Update hyperlinks in website repo. |
| 58 | +* Contact ASWF about artifacts.aswf.io usage (ask if others use it, or if it's just OpenVDB). |
| 59 | + |
| 60 | +**Note:** |
| 61 | +* Most example files written as half-precision; should maintain same format when rewriting. |
| 62 | +* Files should get smaller with new compression (some improvements since old root node mask compression). |
| 63 | + |
| 64 | +5) IO Refactor: Delayed Loading Removal |
| 65 | + |
| 66 | +### Overview |
| 67 | + |
| 68 | +* PR on `feature/io` branch removes delayed loading entirely. |
| 69 | +* Substantial change: removed ~4,000 lines, added ~400 lines. |
| 70 | +* Removes dependencies: boost iostreams, boost interprocess, IO temp file. |
| 71 | +* API remains backward compatible (ABI compatible); code recompiles but functionality removed. |
| 72 | + |
| 73 | +### API Changes |
| 74 | + |
| 75 | +* Most impactful change: `open()` method with delayed loading parameter. |
| 76 | + * Previously: `open(bool delayed)` was optional parameter (when delayed loading enabled at compile time). |
| 77 | + * Now: Parameter still exists but does nothing; deprecated with warnings. |
| 78 | + * Common pattern throughout codebase: `open(false)` to disable delayed loading. |
| 79 | + * Deprecation warnings guide users to remove the parameter. |
| 80 | +* Similar changes to `stream` API. |
| 81 | +* Delay load metadata removed (performance optimization that's no longer needed). |
| 82 | + |
| 83 | +### Tooling Updates |
| 84 | + |
| 85 | +* Public methods updated: |
| 86 | + * `isOutOfCore()` → returns `true` (always in-core), deprecated. |
| 87 | + * `memUsageIfLoaded()` → deprecated in favor of `memUsage()`. |
| 88 | + * `readNonResidentTiles()` → no-op, deprecated. |
| 89 | +* Private methods removed (e.g., `leafBuffer`). |
| 90 | +* All tools updated: Houdini tools, AX, VDB binaries, unit tests. |
| 91 | + |
| 92 | +### Compatibility Notes |
| 93 | + |
| 94 | +* Weta's custom delayed loading (ring buffer, eviction) is separate implementation. |
| 95 | +* Backward compatibility: old files still load, but new files cannot be loaded by old OpenVDB versions. |
| 96 | + |
| 97 | +### Outstanding Items |
| 98 | + |
| 99 | +* Value accessor optimizations still present but not harmful; can be removed later. |
| 100 | +* Unused atomics, mutexes remain for ABI compatibility; should be removed in future ABI bump. |
| 101 | +* Mesh-to-volume interrupt test: occasional CI failures (threshold increased from 1s to 2s); may need investigation. |
| 102 | + |
| 103 | +6) Houdini Integration Demo (Dan) |
| 104 | + |
| 105 | +* UI updates to align with File SOP. |
| 106 | +* New "Load" dropdown replaces metadata-only toggle: |
| 107 | + * Options: All Geometry, Metadata Only, Topology Only. |
| 108 | + * Topology Only: loads topology, creates float grid with zero values (no value data read). |
| 109 | +* New features: |
| 110 | + * "Read Float as Half" option (for Andre's half-grid work). |
| 111 | + * Clipping options: bounding box, mask VDBs, camera frustum (with inside/outside options). |
| 112 | + * VDB Points: attribute filtering at read time. |
| 113 | + * World space clipping (converts to index space internally). |
| 114 | +* Future addition: option to read voxel data as integer grid for points-per-voxel visualization. |
| 115 | + |
| 116 | +7) Read Options API Design (Dan) |
| 117 | + |
| 118 | +* `ReadOptions` struct provides immutable options for all grids being read. |
| 119 | +* Per-grid read options available (e.g., point attribute filters for point data grids). |
| 120 | +* Options passed through read pipeline: `readGrid()` → `readTopology()` → `readBuffers()`. |
| 121 | +* Codec-specific data (`CodecData`) allows passing information between topology and buffer reading phases. |
| 122 | +* Options are "hints" - codecs can choose to ignore them. |
| 123 | + * Rationale: Not all codecs support all options; allows flexibility for new codec types. |
| 124 | +* Struct-based approach chosen over function parameters: |
| 125 | + * Easier to pass through multiple layers. |
| 126 | + * Named initializers (C++20) improve readability. |
| 127 | + * Tradeoff: Harder to deprecate struct members vs. function signatures. |
| 128 | + |
| 129 | +### Concerns & Discussion |
| 130 | + |
| 131 | +* Users may not know which options were actually applied. |
| 132 | +* Deprecating struct members: |
| 133 | + * Function signatures easier to deprecate (new function, old deprecated). |
| 134 | + * Struct members require keeping both old and new members during transition. |
| 135 | + * Suggestion: Only add to struct, move uncertain options to map for flexibility. |
| 136 | +* "hints" being ignored silently: |
| 137 | + * Need way to know which options were actually applied. |
| 138 | + * Suggestion: Output struct or log stream with warnings/errors. |
| 139 | +* Other points: |
| 140 | + * Codec-specific map for experimental options (can change quickly). |
| 141 | + * Main read options stay static. |
| 142 | + * Output log/struct separate from input options (so options remain reusable). |
| 143 | + |
| 144 | +8) Next Meeting |
| 145 | + |
| 146 | +Next meeting is Wednesday Feb 25, 2026 at 13:00 PST. |
0 commit comments