The exrdisplay program supports Nvidia Cg fragment shaders on hardware
that supports the fp30 fragment shader profile.  The fragment shader
is used to convert the raw half data from an OpenEXR image to
displayable 8-bit values in the framebuffer.

The built-in fragment shader was generated by running:

    cgc -profile fp30 -o exrdisplay.fp30 exrdisplay.cg

exrdisplay.cg and exrdisplay.fp30 are included for reference.

You can write your own fragment shader for exrdisplay as long as your
shader takes as input the required parameters.  exrdisplay sets the
following parameters as input to the fragment shader:

      name        type
    ----------   ------
    "exposure"   float
    "defog"      float3
    "gamma"      float
    "grayTarget" half
    "kneeLow"    half
    "kneeF"      half

See ImagView.cpp and ImageViewFragShader.cpp for details on how
exrdisplay uses these parameters.

To make exrdisplay use your fragment shader, compile it for an fp30
profile as above, and then pass the compiled shader to exrdisplay like
so:

    exrdisplay -f myfragshader.fp30

exrdisplay will warn you if there's a problem with your shader and
fall back to software in that case.


Credits
-------

Thanks to Nvidia, especially Simon Green <SGreen@nvidia.com> and Pat
Brown <pbrown@nvidia.com>, for their assistance.  Simon wrote the bulk
of the Cg OpenGL glue and provided a first pass at the fragment
shader.  Pat Brown provided technical assistance.
