 		vec4 deluxe = texture2D(u_DeluxeMap, var_TexLight);
 		vec3 lightDir = normalize(2.0 * deluxe.xyz - 1.0);
 	#else
-		// Compute light direction in world space from light grid.
-		vec4 texel = texture3D(u_LightGrid2, lightGridPos);
-		vec3 lightDir = normalize(texel.xyz - (128.0 / 255.0));
+		#if !defined(HACK_NO_BSP_GRID_LIGHTDIR)
+			// Compute light direction in world space from light grid.
+			vec4 texel = texture3D(u_LightGrid2, lightGridPos);
+			vec3 lightDir = normalize(texel.xyz - (128.0 / 255.0));
+		#endif
 	#endif
 
 	#if defined(USE_LIGHT_MAPPING)
 		// Compute light color from world space lightmap.
 		vec3 lightColor = texture2D(u_LightMap, var_TexLight).rgb;
 
-		color.rgb = vec3(0.0);
+		#if !defined(HACK_NO_BSP_GRID_LIGHTDIR)
+			color.rgb = vec3(0.0);
+		#else
+			color.rgb = lightColor.rgb * diffuse.rgb;
+		#endif
 	#else
 		// Compute light color from lightgrid.
 		vec3 ambientColor, lightColor;

		https://github.com/DaemonEngine/Daemon/issues/299#issuecomment-606186347
		*/

		// Divide by cosine term to restore original light color.
		lightColor /= clamp(dot(normalize(var_Normal), lightDir), 0.3, 1.0);
	#endif

	// Blend static light.
	computeLight(lightDir, normal, viewDir, lightColor, diffuse, material, color);

	// Blend dynamic lights.
	computeDLights(var_Position, normal, viewDir, diffuse, material, color);

	color.a = diffuse.a;

	#if !defined(USE_LIGHT_MAPPING) || !defined(USE_DELUXE_MAPPING)
		#if !defined(HACK_NO_BSP_GRID_LIGHTDIR)
			// Compute light grid position.
			vec3 lightGridPos = (var_Position - u_LightGridOrigin) * u_LightGridScale;
		#endif
	#endif

	#if defined(USE_DELUXE_MAPPING)
