LUMIERA.clone/src/steam/engine/render-environment.hpp
Ichthyostega 259d0a5728 BufferProvider: now able to relocate OutputSlot into Vault Layer
The old implementation of `DiagnosticOutputSlot` is now disabled
and will be re-written from scratch, and no longer tangled to `BufferProvider`

 - `OutputManager` remains in Steam-Layer for now
 - the `Timings` and `OutputSlot` are now a self-contained
2026-03-10 23:12:30 +01:00

67 lines
2.3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
RENDER-ENVIRONMENT.hpp - setup of the Lumiera Render Engine
Copyright (C)
2026, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
*/
/** @file render-environment.hpp
** A configuration context for processing within the Render Engine.
** This context can be accessed from within the ongoing render processes to query
** strategy settings; actually, all the global support facilities within the Render Engine
** are attached here. Thus it might also be used to control the lifecycle (2026 not clear yet)
** @todo 2026 the concept is quite old, but I have reestablished it now to use it as an anchor.
** it is not clear yet if there will be several sub environments for different playback
** configurations; effectively, this is a conceptual placeholder now and needs to be
** put into actual use to see where this leads us to.... ////////////////////////////////////////////TICKET #1409
**
** @todo 4/2023 »Playback Vertical Slice« -- effort towards first integration of render process ////////////TICKET #1221
*/
#ifndef STEAM_ENGINE_RENDER_ENVIRONMENT_H
#define STEAM_ENGINE_RENDER_ENVIRONMENT_H
#include "steam/common.hpp"
#include "steam/engine/dispatcher.hpp"
#include "vault/out/timings.hpp"
//#include "lib/nocopy.hpp"
namespace steam {
namespace engine{
using vault::out::Timings;
/**
* Abstract definition of the environment
* hosting a given render activity (CalcStream).
* Exposes all the operations necessary to adjust the
* runtime behaviour of the render activity, like e.g.
* re-scheduling with modified playback speed. Since the
* CalcStream is an conceptual representation of "the rendering",
* the actual engine implementation is kept opaque this way.
*/
class RenderEnvironment
{
public:
virtual ~RenderEnvironment() { } ///< this is an interface
virtual Timings& effectiveTimings() =0;
virtual Dispatcher& getDispatcher() =0;
};
}} // namespace steam::engine
#endif /*STEAM_ENGINE_RENDER_ENVIRONMENT_H*/