HLSL has what appears to be an undocumented namespace feature
namespace Lights
{
float PointLightAttenuation( ... );
}
//... later
float att = Lights::PointLightAttenuation(...);
What's weird is that namespaces don't seem to stack. If you have two hlsli files:
namespace Lights
Comment too long. Click here to view the full text.