Binds the rendering pipeline to ossia processes.
This namespace contains the machinery that ties the rendering features provided by score::gfx to the ossia execution engine and data model.
It works as follows:
Every time processes execute, visual processes will mark themselves as executed, by notifying Gfx::GfxExecutionAction.
This is necessary because the visual graph is dynamic: processes can come on and off at any point during execution.
- After all the ossia execution graph nodes have executed, the new edges between nodes are sent to the graphics processing thread, to Gfx::GfxContext.
- This thread regularly updates the graph with the incoming information, either before VSync if VSync is enabled or with a timer otherwise:
- Edges are updated with the currently running nodes in the score
- Parameters, audio data... sent to the ossia processes in the execution graph are converted into uniforms corresponding to the shaders used, and uploaded to the GPU.
|
| enum class | ShaderFamily {
Unknown
, RawRaster
, GeometryFilter
, Compute
,
VertexShaderArt
} |
| |
| enum class | PreviewContent { Black
, PerOutputTestCard
, GlobalTestCard
, OutputIdentification
} |
| |
| enum class | WindowMode : int { Single = 0
, Background = 1
, MultiWindow = 2
} |
| |
| enum class | SwapchainFlag : int { NoFlag = 0
, sRGB = (1 << 2)
} |
| |
| enum class | SwapchainFormat : int { SDR
, HDRExtendedSrgbLinear
, HDR10
, HDRExtendedDisplayP3Linear
} |
| |
| enum class | OutputLockMode : int { Free = 0
, AspectRatio = 1
, OneToOne = 2
, FullLock = 3
} |
| |
|
|
std::shared_ptr< CameraDeviceEnumerator > | make_camera_enumerator () |
| |
| std::string | cameraFormatName (int codec, int pixelformat) noexcept |
| |
|
const CommandGroupKey & | CommandFactoryName () |
| |
| std::vector< ossia::net::parameter_base * > | addControlGroup (ossia::net::device_base &dev, ossia::net::node_base &parent, const std::string &group, const std::vector< TreeControl > &controls) |
| | Creates <parent>/<group>/<name> for each control.
|
| |
|
template<typename Vector > |
| int64_t | index_of (Vector &&v, const typename std::remove_reference_t< Vector >::value_type &t) |
| |
|
ossia::value | fromImageSet (const std::span< score::gfx::Image > &images) |
| |
|
void | releaseImages (std::vector< score::gfx::Image > &imgs) |
| |
|
std::vector< score::gfx::Image > | getImages (const ossia::value &val, const score::DocumentContext &ctx) |
| |
| Process::ControlInlet * | makeLongInputControl (const isf::long_input &v, const QString &name, Id< Process::Port > id, QObject *parent) |
| | The control of an ISF / CSF / geometry-filter long input.
|
| |
| void | updateToGlsl45 (ShaderSource &program) |
| |
|
ShaderFamily | shaderFileFamily (const QString &path) noexcept |
| |
| QString | vertexShaderSibling (const QString &fsPath) noexcept |
| |
| QString | fragmentShaderSibling (const QString &vsPath) noexcept |
| |
| QString | locateShaderPath (const QString &path, const QObject &process) noexcept |
| |
|
ShaderSource | programFromISFFragmentShaderPath (const QString &fsFilename, QByteArray fsData, ShaderSource::ProgramType type=ShaderSource::ProgramType::ISF) |
| |
|
ShaderSource | programFromVSAVertexShaderPath (const QString &vertexFilename, QByteArray vertexData) |
| |
|
std::pair< QByteArray, QString > | preprocessShaderIncludes (QByteArray source, const QString &originPath={}) noexcept |
| |
| void | logShaderError (const QObject &process, const QString &error) noexcept |
| |
|
const isf::sampler_config * | declaredSampler (const isf::descriptor &desc, const QString &name) noexcept |
| | The sampler desc declares for its input named name, or null.
|
| |
|
CGLContextObj | nativeContext (QRhi &rhi) |
| |
| score::gfx::OutputNode * | makeSyphonOutput (const SharedOutputSettings &s) |
| |
|
| MODEL_METADATA_IMPL_CPP (TextureInlet) |
| |
|
| MODEL_METADATA_IMPL_CPP (TextureOutlet) |
| |
|
QImage | renderTestCard (int w, int h) |
| |
| QPoint | windowPositionForSource (QPoint p) noexcept |
| | Where to put the window of an output whose source starts at p.
|
| |
The control of an ISF / CSF / geometry-filter long input.
With VALUES it is a ComboBox whose entries carry those values (LABELS name them when there are as many), initially on the entry def indexes. Without VALUES it is an IntSpinBox over whichever of MIN and MAX are given, the int range on a side that is not, starting at def: a bare long used to become an arbitrary 0 / 1 / 2 ComboBox, and one with a single bound too (shader board U11).