2025-10-05 02:02:22 +02:00
|
|
|
Design Process : Optimiser
|
|
|
|
|
==========================
|
|
|
|
|
|
|
|
|
|
|
2025-09-08 04:04:39 +02:00
|
|
|
[options="autowidth"]
|
|
|
|
|
|====================================
|
|
|
|
|
|*State* | _Parked_
|
|
|
|
|
|*Date* | _2007-06-07_
|
|
|
|
|
|*Proposed by* | ct
|
|
|
|
|
|====================================
|
2012-08-30 20:49:16 +02:00
|
|
|
|
|
|
|
|
Render Optimizer
|
|
|
|
|
----------------
|
2025-09-08 04:04:39 +02:00
|
|
|
Render only parts of a frame which are necessary for the Output;
|
|
|
|
|
optimize render pipeline for efficiency
|
2012-08-30 20:49:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
Description
|
|
|
|
|
~~~~~~~~~~~
|
|
|
|
|
This Idea is just stored here for later reference/implementation.
|
|
|
|
|
|
|
|
|
|
Effects give some information on which data their output depends (like
|
|
|
|
|
transitions, temporal dependencies, color/alpha etc) and what the operation
|
|
|
|
|
costs. Based on this information we optimize the render pipeline, for example
|
|
|
|
|
if the output is a zoom, then we only need to calculate the parts of a frame
|
|
|
|
|
which will be viewable in the output (plus some more dependencies, like blur
|
|
|
|
|
has radius and so on). Further in some cases it might be favorable to reorder
|
|
|
|
|
some effects for the actual render process, as long it would produce the same
|
|
|
|
|
output as the original sequence of effects.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comments
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
Possible classification for video filters:
|
2025-09-08 04:04:39 +02:00
|
|
|
|
2012-08-30 20:49:16 +02:00
|
|
|
1. The filter only changes the color of each pixel in the same way
|
|
|
|
|
2. The filter deforms the image but leaves the color
|
|
|
|
|
3. The filter makes complex things. The only additional hint it can export is
|
2025-09-08 04:04:39 +02:00
|
|
|
the number of referenced past frames, if such a limit exists (sometimes it
|
2012-08-30 20:49:16 +02:00
|
|
|
doesn't).
|
|
|
|
|
|
|
|
|
|
Filters of type 1 and type 2 never use any previous frames, and are strictly
|
2025-09-08 04:04:39 +02:00
|
|
|
one frame in -- one frame out. Filters of type 1 can always be swapped with
|
2012-08-30 20:49:16 +02:00
|
|
|
filters of type 2, the output is the same. All other filters cannot be swapped
|
|
|
|
|
in general.
|
|
|
|
|
|
|
|
|
|
The good news is, that:
|
|
|
|
|
|
2025-06-07 23:59:57 +02:00
|
|
|
1. All commonly used filters are either type 1 or type 2
|
2025-09-08 04:04:39 +02:00
|
|
|
(type 3 are more the fun effects)
|
2012-08-30 20:49:16 +02:00
|
|
|
2. Filters of type 2 are colormodel agnostic
|
2025-09-08 04:04:39 +02:00
|
|
|
3. If a filter of type 1 makes only linear transformations of the color vectors +
|
|
|
|
|
(i.e.: new_color ≔ matrix · old_color),
|
|
|
|
|
then the matrix can be transformed from e.g. RGB to YUV, so these filters can
|
2012-08-30 20:49:16 +02:00
|
|
|
always work in both colorspaces directly
|
|
|
|
|
|
|
|
|
|
|
2025-10-05 02:02:22 +02:00
|
|
|
|
|
|
|
|
.State -> Parked
|
2012-08-30 20:49:16 +02:00
|
|
|
Generally this is accepted but needs some more polishing when we go over it.
|
|
|
|
|
|
2025-09-08 04:04:39 +02:00
|
|
|
Christian Thaeter:: 'Thu 14 Apr 2011 03:06:42 CEST'
|
2012-08-30 20:49:16 +02:00
|
|
|
|
|
|
|
|
|
2025-10-05 02:02:22 +02:00
|
|
|
.Reassessment : remains valid
|
|
|
|
|
[underline]#Relevance confirmed 2025.#
|
|
|
|
|
This RfC is written narrow enough to just define the goal of an optimised
|
|
|
|
|
render pipeline -- which _was_ and _is_ a central goal of the Lumiera project.
|
|
|
|
|
|
|
|
|
|
Approaching this topic however _requires much more work_ and notably a detailed
|
|
|
|
|
analysis of the possibilities, based on *facts and measurements*. There is the
|
|
|
|
|
real danger to get attached to some implementation idea deemed enticing,
|
|
|
|
|
leading to very specific tweaks which limit the ability to adapt to
|
|
|
|
|
other relevant requirements.
|
|
|
|
|
|
|
|
|
|
Furthermore, since Lumiera aims at being library / framework agnostic,
|
|
|
|
|
a significant difficulty to overcome first is the build-up of an abstract
|
|
|
|
|
framework to describe and engage viable optimisations, which can then be
|
|
|
|
|
applied as transformations within the Builder -- quite similar to the
|
|
|
|
|
proceedings of an optimising compiler. The description of possible
|
|
|
|
|
optimisations likely involves elements of knowledge representation,
|
|
|
|
|
combined with heuristical aspects, possibly augmented by
|
|
|
|
|
machine learing.
|
|
|
|
|
|
|
|
|
|
To summarise: this is a *long-term vision*.
|
|
|
|
|
|
|
|
|
|
Ichthyostega:: '2025-09-20'
|
2012-08-30 20:49:16 +02:00
|
|
|
|
|
|
|
|
|
2025-09-08 04:04:39 +02:00
|
|
|
''''
|
|
|
|
|
Back to link:/x/DesignProcess.html[Lumiera Design Process overview]
|