The output that renders, for the editor's previews, the nodes no output of the patch renders.
More...
The output that renders, for the editor's previews, the nodes no output of the patch renders.
Each preview of such a node takes one of its inputs. The node renders into a target of the size the preview asks, and the preview's tap reads it back in this output's render list, as it would in a list of the patch. All of them share this one render list and device: a chain several previews show renders once.
|
|
int | acquireInput () |
| | A free input, or -1 when they are all taken.
|
| |
|
void | releaseInput (int k) |
| |
|
bool | anyInputUsed () const noexcept |
| |
|
void | setInputSize (int k, QSize size) |
| | The size the node on input k renders at.
|
| |
|
QSize | inputSize (int k) const noexcept |
| |
| void | startRendering () override |
| |
| void | render () override |
| |
| void | onRendererChange () override |
| |
| bool | canRender () const override |
| |
| void | stopRendering () override |
| |
| void | setRenderer (std::shared_ptr< RenderList > r) override |
| |
| RenderList * | renderer () const override |
| |
| void | createOutput (OutputConfiguration conf) override |
| |
| void | destroyOutput () override |
| |
| void | updateGraphicsAPI (GraphicsApi api) override |
| |
| std::shared_ptr< RenderState > | renderState () const override |
| |
| TextureRenderTarget | currentRenderTarget () const noexcept override |
| | The output's current backing render target + render-pass descriptor, as the upstream nodes should render into it NOW.
|
| |
| OutputNodeRenderer * | createRenderer (RenderList &r) const noexcept override |
| | Create a renderer in a given context for this node.
|
| |
| Configuration | configuration () const noexcept override |
| |
| virtual void | setVSyncCallback (std::function< void()>) |
| | Set a callback to drive rendering when there is a single output.
|
| |
| GpuResourceRegistry & | acquireRegistry () |
| | Persistent GPU resource registry for this output.
|
| |
|
GpuResourceRegistry * | registry () const noexcept |
| | Non-owning accessor. Returns null if no registry has been acquired yet (e.g. queried before the first RenderList::init).
|
| |
| void | releaseRegistry () |
| | Tear down the registry's QRhi resources directly. Idempotent.
|
| |
| virtual bool | deviceLost () const noexcept |
| | True once the output's graphics device was reported lost.
|
| |
|
void | handleDeviceLost (const char *output) noexcept |
| | Mark the device as lost; logs once per device.
|
| |
|
const std::shared_ptr< PointerState > & | pointerState () const noexcept |
| | The mouse and touch points over this output, decoded from the window's events into vertexshaderart's slots (PointerState). The window device publishes them as its touch/points address; nothing reads them here.
|
| |
|
| Node (const Node &)=delete |
| |
|
| Node (Node &&)=delete |
| |
|
Node & | operator= (const Node &)=delete |
| |
|
Node & | operator= (Node &&)=delete |
| |
|
virtual void | renderedNodesChanged () |
| | Whenever render nodes are added / removed.
|
| |
| virtual void | process (Message &&msg) |
| | Process a message from the execution engine.
|
| |
|
virtual void | update () |
| |
|
void | materialChange () noexcept |
| | Used to notify a material change from the model to the renderers.
|
| |
|
bool | hasMaterialChanged (int64_t &renderer) const noexcept |
| |
|
void | renderTargetChange () noexcept |
| | Used to notify a render target (texture inlet) change from the model to the renderers.
|
| |
|
bool | hasRenderTargetChanged (int64_t &renderer) const noexcept |
| |
| bool | hasExplicitRenderTargetSize (int32_t port) const noexcept |
| | Whether a given port has a user-specified render target size.
|
| |
| bool | hasExplicitRenderTargetSpecs (int32_t port) const noexcept |
| | Whether the user set a size or a format on a texture inlet.
|
| |
|
QSize | resolveRenderTargetSize (int32_t port, RenderList &renderer) const noexcept |
| |
|
RenderTargetSpecs | resolveRenderTargetSpecs (int32_t port, RenderList &renderer) const noexcept |
| |
| virtual void | adjustRenderTargetSpecs (int32_t port, RenderTargetSpecs &spec) const noexcept |
| |
| std::optional< RenderTargetSpecs > | firstInputRenderTargetSpecs () const noexcept |
| | What the first texture input asks to be rendered into.
|
| |
|
void | process (int32_t port, const ossia::render_target_spec &v) |
| |
|
| bool | preview {} |
| |
| bool | previewHub {} |
| |
|
std::vector< Port * > | input |
| | Input ports of that node.
|
| |
| ossia::small_pod_vector< Port *, 1 > | output |
| | Output ports of that node.
|
| |
|
ossia::flat_map< RenderList *, score::gfx::NodeRenderer * > | renderedNodes |
| | Map associating each RenderList to a Renderer for this model.
|
| |
|
std::vector< std::shared_ptr< PreviewTap > > | previewTaps |
| | Previews of the outputs of this node, read back by a render list of the patch that renders it. See PreviewTap.
|
| |
| ossia::flat_map< int32_t, ossia::render_target_spec > | renderTargetSpecs |
| | Render target info.
|
| |
|
std::atomic_int64_t | materialChanged {0} |
| |
|
std::atomic_int64_t | renderTargetSpecChanged {-1} |
| |
|
int32_t | nodeId = score::gfx::invalid_node_index |
| |
|
bool | requiresDepth {} |
| |
|
bool | checkDeviceLost (const OffscreenFrame &frame, QRhi &rhi, const char *output) noexcept |
| | Calls handleDeviceLost when the frame or the QRhi report a lost device. Returns deviceLost().
|
| |
|
bool | checkDeviceLost (int frameOpResult, QRhi &rhi, const char *output) noexcept |
| |
|
void | resetDeviceLost () noexcept |
| |
| void | releaseOwnedRenderList () |
| | Invoke OutputConfiguration::onReleaseRenderList, if any.
|
| |
|
std::function< void()> | m_onReleaseRenderList |
| |
|
std::unique_ptr< GpuResourceRegistry > | m_registry |
| |
|
std::shared_ptr< PointerState > | m_pointerState {std::make_shared<PointerState>()} |
| |
|
bool | m_deviceLost {} |
| |
The output's current backing render target + render-pass descriptor, as the upstream nodes should render into it NOW.
A sink whose render target / render-pass descriptor can be recreated mid-session (e.g. an offscreen BackgroundNode on a viewport resize, which deleteLater()s the old target and installs a fresh one) must override this so that a renderer which cached the target by value at construction can re-adopt the live handles when it is rebuilt (RenderList::maybeRebuild or rebuildOutputTargets -> OutputNodeRenderer::init). The default returns an empty target, meaning "nothing to refresh — keep the value
captured at createRenderer() time".
Without this, the resize fast-path (resizeSwapchainSizedTargets, which re-inits the output renderer in place instead of reconstructing it) leaves the upstream node's final pass bound to the freed render-pass descriptor — a Vulkan use-after-free of the VkRenderPass.
Reimplemented from score::gfx::OutputNode.