Render Layers
Since density maps are recorded alongside the movement maps, it's possible to combine the data and use the density map as an alpha channel.
Instead of adding in a duplicate set of options in the GUI specifically for this, a basic layer system would be a lot more adaptable. Each layer should get its own render settings with a simple blend mode (eg. replace, add, max, multiply), channels and opacity. The render options should then give the necessary control to adjust the image similar to how "levels" in Photoshop works.
It'll be hidden behind the "show advanced" checkbox as the complexity won't be needed in 99% of cases.
Examples:
-
Movement with alpha (above image) Background: Mouse Movement Layer 1: Mouse Density, blur: 0, clipping: 0.85, contrast: 0.5, blend mode: multiply, channels: alpha
-
Separate colours per click (see #30) Background: Mouse Clicks, LMB only, colour map: BlackToRed Layer 1: Mouse Clicks, RMB only, colour map: BlackToGreen, blend mode: add Layer 2: Mouse Clicks, MMB only, colour map: BlackToBlue, blend mode: add
Did a brief mockup to demonstrate how it might look.
Blending Modes: Overlay, Replace, Add, Subtract, Multiply, Divide, Maximum, Minimum
Coded in a small test with some manually coded layers.
The transparency on grey doesn't look great in the GUI (both light and dark modes), so I'll have a look at adding a background option, or at least a default one like Photoshop's checkerbox pattern.
When rendered and brought into photoshop:
Different colours for mouse buttons:
Implemented the blending modes and opacity now, it's a lot harder than you'd expect.
In my testing I ended up with this style which I thought looked interesting, I'll have to add some presets.
Layer 1: Mouse Movement, Chalk Layer 2: Mouse Speed, TransparentBlackToBlackToGreen