Toy example improvements

Here is a random list of improvements for the Toy example:

  • Make the application takes the path of the shader as an argument (e.g. it could start the ghcid hot reload process with a known spv file location).
  • !20 (merged) Add mouse clicks (e.g. keep the last clicked location in a vec2 value)
  • !20 (merged) Add mouse scroll (e.g. keep a counter in a float value)
  • Add window dimension vec2 value (even if it is static)
  • Add running time float value
  • !20 (merged) Support toggle controller
  • Support discret controller (e.g. Int for max iteration)
  • Support vec2/vec3 controller (e.g. one slider per dimension).
  • !22 (merged) Since it is often useful to render a single shader twice with different settings (e.g. by swapping z and c), it would be really neat if the Toy application could create two windows. Then we need a way to share an uniform value between both windows (e.g. on the "map" window, a click would draw a marker and set the c value on the "julia" window).
  • !21 (merged) Skip rendering when the inputs haven't change, this save energy when doing live reload edits.
  • Add animations
Edited by Tristan de Cacqueray