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;