Loading from EXR files. Not tested yet.
hdr2exr tool. Initializing - needs a lot more work.
hdr2exr mostly complete.
Update .gitignore
Fix a bug in EXR reading.
Add a few remappings.
Pre-lecture commit: implement cubemap environment (but don't actually use it).

Also, some cubemaps for testing. Using the forest HDR probe from Paul Debevec's repository.
Hours 1 & 2
Reflection, Glossy reflections, refraction, layered shader and Fresnel texture.
Replace getRandomDiscPoint() with a smarter version.
Arrange a different scene. Add a fix for CsgDiff normals issue.

Also, implement Geometry::isInside() (related to the CsgDiff fix) for all
known geometries.
Add a hack to speed up the rendering of glossy reflections.

Don't evaluate fully a glossy reflection if the ray we're dealing with
isn't a camera ray (depth = 0). If it's somewhere deeper in the pipeline,
shoot out 5 rays only.

This pretty much avoids the combinatorial explosion that the scene
exhibits: when the numSamples of the glossy sphere is increased
to 120, the rendertime increases almost exponentially. Some figures:

120 samples, without the hack: rendertime: 753 seconds (!!)
120 samples, with the hack   : rendertime: 9 seconds.
hdr2exr: Fix a bug with the rescaling algo.
hdr2exr: add the image file name and size to the preview window.
Refactoring: avoid duplicating code in trinity and hdr2exr

Now using the original bitmap.cpp/environment.cpp/.h files from trinity.
Remove bitmap.*/util.* in here. The new bitmap class (BitmapExt) inherits
Bitmap and implements the additional functionality.
This required loadImage to be made virtual.

Implement Cubemap->Spherical map conversion of environment maps.

Add mouse wheel control in the preview window - it changes the exposure (just like +/-).
A tiny beautification.
hdr2exr: Working on ::convertSphericalToCubemap()...
hdr2exr: Spherical->Cubemap complete
Correct I/O gamma treatment.

The output image, on transfer from vfb[][] to SDL's buffer, is gamma-compressed
(converted to sRGB).

The input images (on load in BitmapTexture's constructor) are
gamma-decompressed (a sRGB->linear conversion by default; if a particular
parameter is given to the assumedGamma value, and it is not 2.2, the
conversion is a simple power-law curve with the specified gamma value).