Thank you squarepusher and maister, for hammering out the shader framework that
made this possible and being so receptive to my feedback for Retroarch and the
libretro Cg shader spec.  Thank you especially maister, for designing the sRGB
support with me and implementing all the code for both sRGB FBO's and mipmapped
FBO's in less time than it took me to add mipmapped LUT's alone!

I want to thank xythen and DOLLS for inspiring me with their early efforts:
    http://board.byuu.org/viewtopic.php?f=10&t=147
    http://board.byuu.org/viewtopic.php?p=3820#p3834
I've never spoken with them, but I never would have thought to make this shader
if xythen hadn't gotten the ball rolling, or if DOLLS hadn't made his point
about just how far CRT emulation could go with his phosphor mask prototypes,
convergence error images, and barrel distortion code.

I also want to thank hunterk for his excellent blog, especially this post:
    http://filthypants.blogspot.com/2011/05/
        more-emulator-pixel-shaders-crt-updated.html
Along with caligari's work, his PhosphorLUT shader provoked me to experiment
with game-style bloom as a way to reconcile shadow masks with full brightness.
Along with Pulp Fiction, he also gets credit for helping me name this shader. :D

Thank you Hyllian for your enthusiasm: It kept me focused on actually releasing
this shader instead of refining it in perpetuity!

Finally, I want to thank cgwg for everything he has done for CRT emulation:
He was the first to consider the effects of halation, and (in addition to
caligari?) he did the most research on the Gaussian properties of scanline
electron beams.  His forum posts and links to academic research were very
helpful, and so were the few PM's we exchanged many months ago: I originally
meant to wet my feet by extending his shader with cylindrical curvature before
writing my own.  I never managed to understand his curvature code (due to all of
the different algebraic/trigonometric stages being rolled into one), and I gave
up and started from scratch, but talking with him helped me piece together how
his spherical uv<=>xyz mapping worked mathematically.  My own is subtly
different, but not on purpose. ;)  A lot of the user parameters for geometry
were inspired by his own (including Euler angle tilt and a "view distance" for
controlling the field of view with a simplified near-plane).  Last but not
least, my border dimming code was based more directly off of his: I did what I
could to write a fresh implementation of his algorithm with new features, but
the line between code and algorithm is pretty thin in that function, and it's
a testament to him coming up with such an elegant solution.

TroggleMonkey
