|
| 1 | +Minutes from OpenVDB TSC meeting, March 19th, 2024 |
| 2 | + |
| 3 | +Attendees: *Jeff* L., *Andre* P, *Dan* B., *Greg* H., *Rich* J. |
| 4 | + |
| 5 | +Additional Attendees: |
| 6 | +Dhruv Govil, Ivo Kondapaneni |
| 7 | + |
| 8 | +Regrets: *Ken* M., *Nick* A. |
| 9 | + |
| 10 | +Agenda: |
| 11 | + |
| 12 | +1) Confirm quorum |
| 13 | +2) Secretary |
| 14 | +3) OpenVDB Half Grids |
| 15 | +4) Load as Half Patch |
| 16 | +5) Next meeting |
| 17 | + |
| 18 | +------------ |
| 19 | + |
| 20 | +1) Confirm quorum |
| 21 | + |
| 22 | +Quorum is present. |
| 23 | + |
| 24 | +2) Secretary |
| 25 | + |
| 26 | +Secretary is Jeff Lait. |
| 27 | + |
| 28 | +3) OpenVDB Half Grids |
| 29 | + |
| 30 | +Support for half without a compute type is much slower and has |
| 31 | +significant errors. Proposal is to add a Tree::ComputeType that is |
| 32 | +identity with ValueType, but float for Half. |
| 33 | + |
| 34 | +For many tools, like stencils or volumes, should they return Compute |
| 35 | +Type? Does this break ABI? It shouldn't as the typedef should decay |
| 36 | +to the base type for mangling? We could use an enable if to work |
| 37 | +around if it somehow does mess up ABI. |
| 38 | + |
| 39 | +What should be compute types? |
| 40 | + |
| 41 | +Stencils have a value type that is there value type, different from |
| 42 | +the tree's value type, so they can logically set this to the tree's |
| 43 | +ComputeType. |
| 44 | + |
| 45 | +How to get accessors or setters to use ComputeType? We could have |
| 46 | +getComputeValue or getValue for the two types. But widening is free? |
| 47 | + |
| 48 | +Should I be able to make stencils any compute type? With the tree's |
| 49 | +compute type just the default? Eventually do we want float grids with |
| 50 | +a compute type of double? Probably yes, but beyond this PR. |
| 51 | + |
| 52 | +Import and export doesn't conflict with save float as half - they are |
| 53 | +independent and this flag is ignored with half. |
| 54 | + |
| 55 | +What half type do we use? All of our half types are the same |
| 56 | +underlying bit pattern so it doesn't matter. |
| 57 | + |
| 58 | +4) Arnold support for Half |
| 59 | + |
| 60 | +How to load a float grid as a half grid. Add a scalarConversion type |
| 61 | +for what the new grid's type should be. |
| 62 | + |
| 63 | +We set that to the stream's metadata, and the grid descriptor uses |
| 64 | +that. This creates a CreatingReaderFactory to read the source and |
| 65 | +write out as the desired type. |
| 66 | + |
| 67 | +Raw is.read() with reinterpret are replaced by the converting reader |
| 68 | +that might do some casting internally. |
| 69 | + |
| 70 | +seek should be seekElement() and take the count and position to make |
| 71 | +it clear what it is doing. |
| 72 | + |
| 73 | +Delayed loading will work as the stream has the converter attached to |
| 74 | +it. |
| 75 | + |
| 76 | +Will be made as a PR for further discussion. |
| 77 | + |
| 78 | +5) Next meeting |
| 79 | + |
| 80 | +Next meeting is on March 26th, 2024. 2pm-3pm EDT (GMT-4) |
0 commit comments