getShadowMaterial = ( light ) => {

	let material = shadowMaterialLib.get( light );

	if ( material === undefined ) {

		const depthNode = light.isPointLight ? linearShadowDistance( light ) : null;

		material = new NodeMaterial();
		material.colorNode = vec4( 0, 0, 0, 1 );
		material.depthNode = depthNode;
		material.isShadowPassMaterial = true; // Use to avoid other overrideMaterial override material.colorNode unintentionally when using material.shadowNode
		material.name = 'ShadowMaterial';
		material.fog = false;

		shadowMaterialLib.set( light, material );

	}

	return material;

}
Retrieves or creates a shadow material for the given light source.

This function checks if a shadow material already exists for the provided light.
If not, it creates a new `NodeMaterial` configured for shadow rendering and stores it
in the `shadowMaterialLib` for future use.

@param {Light} light - The light source for which the shadow material is needed.
                        If the light is a point light, a depth node is calculated
                        using the linear shadow distance.
@returns {NodeMaterial} The shadow material associated with the given light.