Elapsed scene time used in custom shader uniform

If you create a custom shader you get access to a collection of uniform values, one is the uniforms::time() parameter which is defined as "the number of seconds that have elapsed since RealityKit began rendering the current scene" in this doc: https://developer.apple.com/metal/Metal-RealityKit-APIs.pdf

Is there some way to get this value from Swift code? I want to animate a value in my shader based on the time so I need to get the starting time value so I can interpolate the animation offset from that point. If I create a System in the update() function I get a SceneUpdateContext instance and that has a deltaTime property but not an elapsedTime property which I would assume would map to the shader time() value.

The time in the custom shader matches the .timebase property on the scene. You can use it like so, for example:

guard let time = event.scene.timebase.sourceTimebase?.sourceClock?.time.seconds else { return }

An alternative is to define your own "time" parameter on the shader and animate this parameter from a System.

Elapsed scene time used in custom shader uniform
 
 
Q