Convert the receiver into a B3DPrimitiveLight that can be handled by the shader primitive directly. Light sources that cannot be represented as primitive should return nil. This will result in the callback of #shadeVertexBuffer from the shader.
This is the generic shading function similar to the primitive.
Subclasses may implement optimized versions but should evaluate
exactly to the same value as in here if they are to be converted into
B3DPrimitiveLights.