Interesting idea from Call Of Juarez 2 about rendering deferred light geometry. When deferred light geometry intersects with camera you need to switch culling and turn off zbuffer. In COJ2, instead of testing intersection on CPU and switching states, they just push out light geometry vertices:
// vertex shader float3 posCS = mul( in.pos, worldToCamera ).xyz; posCS.z = max( posCS.z, nearPlaneZ + offset ); out.pos = mul( float4( posCS, 1. ), cameraToScreen );
Could be a win if You are CPU bound.