uniform float	u_pbr;

#if defined(FAKE_PPL)
	out	vec4	fragData[4];
	void PackData (in vec4 C, in vec3 N, in vec3 S, in vec3 sN, in vec3 lightMapSample, in float glossy)
	{
		fragData[0] = C;
		N = normalize(N);	// be sure that N normalized! Don't delete it!!!
		fragData[1] = vec4(N.xy / (1.0000001 - N.z), lightMapSample.r, u_pbr);	// Stereographic projection
		// store specular and glossy
		fragData[2] = vec4(S, glossy * 0.99);	// multiple glossy to 0.99 for avoidance 1.0 (fragData[2].a = 1.0 is a special case for portal/mirror mark)
		// store surface normal
		sN = normalize(sN);	// be sure that sN normalized! Don't delete it!!!
		fragData[3] = vec4(sN.xy / (1.0000001 - sN.z), lightMapSample.gb);	// Stereographic projection
	}
#else
	out	vec4	fragData[3];
	void PackData (in vec4 C, in vec3 N, in vec3 S, in float glossy)
	{
		fragData[0] = C;
		N = normalize(N);	// be sure that N normalized! Don't delete it!!!
		fragData[1] = vec4(N, u_pbr);	/// Remember: you could save here 1 float if pack N to 2 floats ;)
		// store specular and glossy
		fragData[2] = vec4(S, glossy * 0.99);	// multiple glossy to 0.99 for avoidance 1.0 (fragData[2].a = 1.0 is a special case for portal/mirror mark)
	}
#endif
