Lightmap difference on PC and MAC

I’m making an iOS game and noticed that there is a big difference between lightmaps on PC and MAC. Here is the same project screens on Pc :

And MAC :

On PC lightmaps create brighter result, and I would like to achieve it on MAC. On PC version you can see high contrast directional light beams on the wall.

What could be the reason why there is no contrast on MAC and increasing intensity of Directional light just makes everything brighter?

P.S. And what’s more interesting, this is baked on MAC and then the same project opened on PC, but PC shows definitetly better result.

Thanks!!!

I don’t see the use of this posting if you post in iOS Development and talk about mac and pc.
was mac meant to be ‘iOS target’? If so then you have to realize that its no desktop and that the HDR aspect of the EXR lightmaps is lost for mobile so if you want to overbright something this insanely you have to really do that already in the lightmap calculation (within the regular float range, not just due to the 128bit precision on desktop platforms) which you can ensure by calculating the lightmap on the iOS project in the right exposure - the calcs will not be crossplatform beside ‘more or less the same on android too’ but thats to expect

I didn’t think unity currently took advantage of the 128 bit format for lightmaps. Does it?

To me it looks like something you could fix by editing some things in shaderlab. I found certain calls in shaderlab come out different on ios.

For example, look at this shader, basically a stripped down mobile Unlit shader with a color add and multiply added:

// Unlit shader. Simplest possible textured shader.
// - SUPPORTS lightmap
// - no lighting
// - no per-material color

Shader "Mobile/Unlit Reflective (Supports Lightmap)" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _AddColor  ("Add Color", Color) = (1,1,1,1)
	_MainTex ("Base (RGB)", 2D) = "white" {}
	_Reflect ("Reflection", 2D) = "black" { TexGen SphereMap }		
}

SubShader {
	Tags { "RenderType"="Opaque" }
	LOD 100
	

	
	// Lightmapped, encoded as RGBM
	Pass {
		Tags { "LightMode" = "VertexLMRGBM" }
		
		Lighting Off
		BindChannels {
			Bind "Vertex", vertex
			Bind "texcoord1", texcoord0 // lightmap uses 2nd uv
			Bind "texcoord", texcoord1 // main uses 1st uv
		}
		
		
		SetTexture [unity_Lightmap] {
			matrix [unity_LightmapMatrix]
			combine texture * texture 
		}
		SetTexture [_MainTex] 
		{	
			combine texture * previous 
		}
		SetTexture [_Color]
		{
		    constantColor [_Color]			
			combine previous * constant double
		} 
        SetTexture [_MainTex]
        {    
        	constantColor [_AddColor]
			combine previous +- constant double
        }
	    SetTexture [_Reflect] 
	    {
			combine texture + previous alpha
		}        
	}	
	

}
}

I found that the order of the setTexture calls actually effected the way the resulting texture looked on a device. So the same shader would look highly contrasted on the desktop, but then really washed out on iOS. Also the ‘double’, ‘QUAD’ and ‘alpha’ tags seem to come out different on iOS sometimes.

Unfortunately I don’t have a solution to this, and I don’t even really remember what did what and how it changed on iOS. All I remember is that the order of those settexture calls and their following double, quad or alpha flags resulted in a shader where the lightmapping would look different on different devices.

which version of unity is it? 3.3 has bugs with lightmap uv generation between mac and pc.

What’s your mac’s technical specifications (gpu, especially) ?

Are quality settings for editor and game set to fantastic on both?

yes unity makes use of the 128bit dynamics in the lightmap when generating the compressed version, the realtime used lightmap. the delta you see there is basically exactly what happens if you scale the exr back to 32bit for example png first, you lose the whole dynamic ‘over darkening - over brightening’ it will look dull.