Now that I’ve got register machines working, one of the next ideas I had was to implement different wrapping modes. Currently, as it stands, X
and Y
are passed into the machine as floating point numbers from [0, 1] across the image and output is expected to be [0, 1] for each of R
, G
, and B
. Any values that end up outside of that range, we truncate down to that range. But some of our mathematical functions (multiplication, exponentiation, negation, etc) tend to generate numbers way out of this range. But they don’t have to!