Files
UnrealEngine/Engine/Source/ThirdParty/OpenVDB/openvdb-12.0.0/tsc/meetings/2024-03-19.md
2025-05-18 13:04:45 +08:00

2.2 KiB

Minutes from OpenVDB TSC meeting, March 19th, 2024

Attendees: Jeff L., Andre P, Dan B., Greg H., Rich J.

Additional Attendees: Dhruv Govil, Ivo Kondapaneni

Regrets: Ken M., Nick A.

Agenda:

  1. Confirm quorum
  2. Secretary
  3. OpenVDB Half Grids
  4. Load as Half Patch
  5. Next meeting

  1. Confirm quorum

Quorum is present.

  1. Secretary

Secretary is Jeff Lait.

  1. OpenVDB Half Grids

Support for half without a compute type is much slower and has significant errors. Proposal is to add a Tree::ComputeType that is identity with ValueType, but float for Half.

For many tools, like stencils or volumes, should they return Compute Type? Does this break ABI? It shouldn't as the typedef should decay to the base type for mangling? We could use an enable if to work around if it somehow does mess up ABI.

What should be compute types?

Stencils have a value type that is there value type, different from the tree's value type, so they can logically set this to the tree's ComputeType.

How to get accessors or setters to use ComputeType? We could have getComputeValue or getValue for the two types. But widening is free?

Should I be able to make stencils any compute type? With the tree's compute type just the default? Eventually do we want float grids with a compute type of double? Probably yes, but beyond this PR.

Import and export doesn't conflict with save float as half - they are independent and this flag is ignored with half.

What half type do we use? All of our half types are the same underlying bit pattern so it doesn't matter.

  1. Arnold support for Half

How to load a float grid as a half grid. Add a scalarConversion type for what the new grid's type should be.

We set that to the stream's metadata, and the grid descriptor uses that. This creates a CreatingReaderFactory to read the source and write out as the desired type.

Raw is.read() with reinterpret are replaced by the converting reader that might do some casting internally.

seek should be seekElement() and take the count and position to make it clear what it is doing.

Delayed loading will work as the stream has the converter attached to it.

Will be made as a PR for further discussion.

  1. Next meeting

Next meeting is on March 26th, 2024. 2pm-3pm EDT (GMT-4)