frame-generation-streaming
Streaming Frame Generation
Overview
ovrtx enables DLSS Frame Generation from two attributes on the RenderProduct: bool omni:rtx:dlss:frameGeneration and int omni:rtx:dlss:frameGenerationInterpolatedFrameCount. When it engages, every render step returns N+1 frames: the interpolated frames first, the simulated frame last, with strictly increasing times that end at the step boundary. ovstream knows nothing about generation; the application presents the frames one per tick at the delivered rate.
Generation is a runtime finding. It needs the real-time path tracing render mode, LdrColor as the only render var on the product, both dimensions at least 126, an Ada or newer GPU and a supported driver; whether it engages on a given GPU, driver and display configuration is verified by counting frames, never assumed.
Enable
Author the two attributes on the RenderProduct in the layer that defines it, and rewrite them at runtime through ovstage when the user toggles generation.
Source:
examples/python/app_stream/app_stream/assets/render_products.usdaandexamples/python/app_stream/app_stream/scene.pysnippetruntime-product-writes
Classify every step
Treat the frame contract as a specification and check it: the last frame ends at the step end, interpolated frames are evenly spaced, and exactly one frame per step was rendered. Timing alone cannot separate a generated frame from a camera firing twice per step; ovrtx marks generated frames with a progression of 0 (never rendered), so a step with more than one rendered frame is a scheduling error, not generation.
Source:
examples/python/app_stream/app_stream/contract.pysnippetclassify-frames