147{
148 state.ticks = frame + 1;
149 const double now = static_cast<double>(frame) / state.frame_rate;
150
152 for (auto& layer : state.layers) {
154
155 if (now < layer.delay) {
156 continue;
157 }
158
159 const auto age = static_cast<float>(now - layer.delay);
160
161 if (layer.picture) {
162 if (layer.dirty && state.buffer->submit_layer(
current, *layer.picture)) {
163 layer.dirty = false;
164 stamp(state,
current, glm::vec4(age, 0.0F, 0.0F, 1.0F));
165 }
166 continue;
167 }
168
169 if (frame % layer.interval != 0) {
170 continue;
171 }
172
173 if (layer.image) {
174 if (state.buffer->submit_layer(
current, layer.image)) {
175 stamp(state,
current, glm::vec4(age, 0.0F, 0.0F, 1.0F));
176 }
177 } else if (layer.ring) {
179 } else if (layer.collection) {
181 }
182 }
183}
static void stamp(State &state, uint32_t index, const glm::vec4 &timing)
static void collect(State &state, Layer &layer, uint32_t index, double elapsed)
static void feed(State &state, Layer &layer, uint32_t index, double elapsed)