Threejs | MeshStandardMaterial сторона: THREE.DoubleSide Другой рендеринг в старых телефонах - PullRequest
0 голосов
/ 27 мая 2020

enter image description here

Я новичок в трех js.

Выше представлены два изображения одной и той же модели на двух телефонах. Старый телефон имеет глянцевый вид, в то время как новый телефон передает его довольно хорошо.

this.mesh.traverse( (child) => {
                if ( child instanceof THREE.Mesh ) {
                    child.material = new THREE.MeshStandardMaterial( {
                        side : THREE.DoubleSide,
                        map: texture,
                        bumpMap,
                        normalMap,
                        roughnessMap,
                        envMap: this.envMap
                    });
                    child.material.needsUpdate = true;
            }
          });

Так визуализируется материал. EnvMap взят из изображения HDRI.

Теперь, если я поставил

side : THREE.FrontSide,

для материала. Оба телефона будут отображать хорошее качество. Эффект глянца отсутствует даже в старых телефонах.

EXT_frag_depth, WEBGL_draw_buffers, EXT_shader_texture_lod не поддерживаются в старом телефоне. Я получил их в консоли.

Как заставить работать рендеринг на старых телефонах с включенным DoubleSide? Или есть способ придать цвет обратной стороне и визуализировать другой цвет на лицевой стороне, не создавая другого меня sh для внутренней поверхности, или я должен написать собственный шейдер?

...