summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/blender/blender.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/blender/blender.c b/src/blender/blender.c
new file mode 100644
index 0000000..0e0835d
--- /dev/null
+++ b/src/blender/blender.c
@@ -0,0 +1,15 @@
1#include "blender/blender.h"
2#include <assert.h>
3#include <math.h>
4
5static ColorComponent blend_components(ColorComponent origin, ColorComponent target, TimeVector frame) {
6 return (ColorComponent) sqrt((TIME_UNIT - frame) * pow(origin, 2) + frame * pow(target, 2));
7}
8
9Color blender_blend_colors(Color origin, Color target, TimeVector frame) {
10 assert(frame >= TIME_ORIGIN && frame <= TIME_UNIT);
11 return (Color) {{blend_components(origin.rgba.r, target.rgba.r, frame),
12 blend_components(origin.rgba.g, target.rgba.g, frame),
13 blend_components(origin.rgba.b, target.rgba.b, frame),
14 blend_components(origin.rgba.a, target.rgba.a, frame)}};
15}