Added LightVolume fragment shader.
Changed ShaderPipeline to always keep ShaderObjects alive.
Added clear() to VisualCollector so collected Visual list can/must be manually cleared.
Added shallowCopy() to Visual.
Added setUniform() functions that check if uniform exists in shader before attempting to set it.
Added UnitSphere.fbx model.
Refactored RenderJob - only takes list of Visuals now, VisualCollector must be run manually before executing RenderJob and Visuals passed in. Added option to provide shader to use to render all Visuals and ignore material Shader.
Changed BaseApp so it works with RenderJob changes.
Added temporary createRenderTarget() function to Texture to separate creation of normal texture from render target textures. Changed bind() to take texture unit argument.
Update BaseApp to work with refactoring.
DeferredRenderingApp - Added light visuals, GBuffer, GBufferShaders, multiple passes in render().