iOS render HDR darker for Standard Material / Pixel2 like glass

Hey all

I’m finding iOS renders a lot darker a standard material that uses a metal map and using HDR cube.

Android Pixel 2 doesn’t render it as if it was reflective glass.

I tested https://threejs.org/examples/#webgl_materials_standard in these devices and work correctly. Also an obj using standard material with no metalness applied looks fine too.

Here’s the PC render:

Android:

Iphone 8, 6S and iPad Pro 2019:

When loading on iPad the objects render looked fine until the HDR images load. https://drive.google.com/open?id=1VpBzEgsAMYsPdhVIjFeQMv2eXNou5ZlR

Any thoughts what I should consider please?

Thanks a bunch for your help

HDR code references:

function hdrDefinitions(){
				var hdrUrls = [ 'px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr' ];
				hdrCubeMap = new HDRCubeTextureLoader()
					.setPath( 'Photog_Glace1/cube/MyHDR/LeaderHall/' )
					.load( hdrUrls, function () {

						var pmremGenerator = new PMREMGenerator( hdrCubeMap );
						pmremGenerator.update( renderer );
						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
						pmremCubeUVPacker.update( renderer );
						hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
						hdrCubeMap.magFilter = THREE.LinearFilter;
						hdrCubeMap.needsUpdate = true;
						pmremGenerator.dispose();
						pmremCubeUVPacker.dispose();

					} );
}

var renderTarget, cubeMap;

switch ( settings.envMap ) {

    case 'HDR':
        renderTarget = hdrCubeRenderTarget;
	cubeMap = hdrCubeMap;
	break;
}

var newEnvMap = renderTarget ? renderTarget.texture : null;

if ( newEnvMap && newEnvMap !== vaseMesh.material.envMap ) {
    vaseMesh.material.envMap = newEnvMap;
   vaseMesh.material.needsUpdate = true;
   planeMesh.material.map = newEnvMap;
   planeMesh.material.needsUpdate = true;
}
   scene.background = cubeMap;
   renderer.toneMappingExposure = settings.exposure;
   renderer = new THREE.WebGLRenderer({ antialias: true } );
   renderer.toneMapping = THREE.LinearToneMapping;

Similar issue here:
the scene is lit only with an ambientLight and an HDR used as envMap for all the materials:

PC / MAC / ANDROID:

IOS:

Using r110

Sorry @kevor I didn’t find a solution :frowning:

I’m observing something similar. However in my case it is darker on Android and ok on desktop and iOS. Also only some Android devices render it darker Galaxy S20+ renders ok but Galaxy S7 renders it in dark. Galaxy Note 10+ renders dark as well.

This issue at GitHub seems related to this topic:

1 Like

Thanks @Mugen87 for your reply. I tried the fix that was made in that issue and unfortunately doesn’t solve my issue.
Looking closer it appears like on these particular devices the envMap might have an offset for whatever reason

It seems that

flipping the texture along Y mitigates the problem a bit.
Very strange that on some devices there seems to be an automatic flip happening and on some not.

1 Like