Threaded View

Strange issue with additive blending of floating point texture framebuffer

Hello.

I have a simple renderer that renders spherical lights. The renderer simply renders one pass
per light, blending the results with additive blending, writing the results to a texture. The texture
is then displayed with a screen-aligned quad in the usual manner (with an overlay grid, some
axes, and some small spheres indicating the origins of the lights, for debugging purposes).

See the top two images for the results of each light pass. The third image is the result of blending
the two light passes using an RGBA8 framebuffer. However, if I use a 32-bit or 16-bit floating point
texture as the framebuffer's color buffer, the result is the bottom image, which is clearly not the
result I'd expect.

Having not used floating point textures before: Is this the sort of thing I should be seeing?
Is there something extra I should be doing when rendering to a floating point texture?