Three.js: R112 рдореЗрдВ рдирдИ MeshStandardMaterial рдХреБрдЫ GPU рдкрд░ рдмреИрдВрдбрд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рджрд┐рд╕ре░ 2019  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

R112 рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ MeshStandardMaterial (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм glTF рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рднреА) рдХреБрдЫ GPU рдкрд░ рдмреИрдВрдбрд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣рд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓рдмреБрдХ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдлреЛрди рдХреА рд╣рд░ рдкреАрдврд╝реА рдкрд░ рджреЗрдЦрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдПрдирд╡реАрдбрд┐рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдЬреАрдкреАрдпреВ рдкрд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рди рд╣реА рдУрдХреБрд▓рд╕ рдЧреЛ рдпрд╛ рдУрдХреБрд▓рд╕ рдХреНрд╡реЗрд╕реНрдЯ рдкрд░ред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдирдП рд╢реЗрдбрд░ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП r111 рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкреНрд░рджрд░реНрд╢рди рдорд╛рд░рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВ (рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓рдмреБрдХ рдкрд░ рддреАрди .js r112 рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд)

Screenshot 2019-12-29 at 9 15 19 PM

рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдПрдХ рд╣реА рдкрд┐рдХреНрд╕реЗрд▓рдмреБрдХ рдкрд░ рддреАрди.js r111 рдХреЗ рд╕рд╛рде рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛)

Screenshot 2019-12-29 at 9 24 31 PM

рд▓рд╛рдЗрд╡ рд▓рд┐рдВрдХ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ r112 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░: https://xrdinosaurs.com

рдЙрд╕ рдкреГрд╖реНрда рдХреЗ рд╕рднреА рдбрд╛рдпрдирд╛рд╕реЛрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлреНрд▓реИрдЯ рдпрд╛ рдЪрд┐рдХрдиреЗ рд░рдВрдЧ рдХреЗ рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдкреЗрдЯ) рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЕрдзрд┐рдХ рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА (рдиреАрдЪреЗ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЪрд┐рдкрдХрд╛рдИ рдЧрдИ) glTF рдПрдХреНрд╕рдЯреЗрдВрд╢рди "KHR_materials_pbrSpecularGlossiness" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдлреИрд▓рд╛рдирд╛, рд╕рд╛рдорд╛рдиреНрдп, рдФрд░ рд╕реНрдкреЗрдХреНрдпреБрд▓рд░ / рдЧреНрд▓реЛрд╕рдиреЗрд╕ рдмрдирд╛рд╡рдЯ рд╣реИред

    {
      "doubleSided": true,
      "emissiveFactor": [
        0,
        0,
        0
      ],
      "extensions": {
        "KHR_materials_pbrSpecularGlossiness": {
          "diffuseFactor": [
            0.46512957319999998,
            0.46512957319999998,
            0.46512957319999998,
            1
          ],
          "diffuseTexture": {
            "index": 4,
            "texCoord": 0
          },
          "glossinessFactor": 0.27610518290000002,
          "specularFactor": [
            0.92244664629999995,
            0.92244664629999995,
            0.92244664629999995
          ],
          "specularGlossinessTexture": {
            "index": 6,
            "texCoord": 0
          }
        }
      },
      "name": "TRex",
      "normalTexture": {
        "index": 5,
        "scale": 1,
        "texCoord": 0
      }
    }

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг PMREMGenerator devicePixelRatio рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИред

рдирд╛рдордорд╛рддреНрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ pixelRatio рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╣рдо рдЙрддреНрдкрдиреНрди рдмрдирд╛рд╡рдЯ рдкрд░ "рдЦрд░рд╛рдм" mipmap рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ рдЫреЛрдЯреЗ рдЕрдВрддрд░рд╛рд▓ рдФрд░ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдЧрд░ рдореЗрд░реА рдорд╢реАрди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ (0.899 ..) рдпрд╛ рдСрдирд▓рд╛рдЗрди (1) рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд░рд╣реА рд╣реИ рддреЛ devicePixelRatios рдФрд░ рдЗрд╕реАрд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ setPixelRatio рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ PMREMGenerator рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@toji @ plut0nist рдорди рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ?

DEV рдЙрджрд╛рд╣рд░рдг
рдЯреЗрд╕реНрдЯ рдЙрджрд╛рд╣рд░рдг

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЕрдкрдиреЗ рдкрд┐рдХреНрд╕реЗрд▓ (1) рдкрд░ рдЧреНрд▓рд┐рдЪ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рддрдм рд▓рдЧрддреА рд╣реИрдВ рдЬрдм KHR_materials_pbrSpecularGlossiness рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

18042 рдиреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдПрдВрдЯреА-рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, GLTFLoader , lights_physical_fragment shader рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ:

https://github.com/mrdoob/three.js/blob/3ba0553208cfc9113152f5f39b4036a448cf3f25/examples/js/loaders/GLTFLoader.js#L683 -L688

@toji рдХреНрдпрд╛ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░ рдЕрдкрдиреЗ рдРрдк рдХреЗ GLTFLoader рдХреЙрдкреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

var lightPhysicalFragmentChunk = [
    'PhysicalMaterial material;',
    'material.diffuseColor = diffuseColor.rgb;',
    'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',
    'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',

    'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',
    'material.specularRoughness += geometryRoughness;',
    'material.specularRoughness = min( material.specularRoughness, 1.0 );',
    'material.specularColor = specularFactor.rgb;',
].join( '\n' );

@ рд▓рд┐рд▓рд┐рд╢ рднрд▓реЗ рд╣реА рдпрд╣ рдкреИрдЪ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ GLTFLoader рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

@ рдореБрдЧреЗрдВ87 рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдиреЗ Pixel 3 рдкрд░ рднреА рд░рд┐рдкреНрд░реЛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@toji рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб 10 рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд┐рдХреНрд╕реЗрд▓ 3 рдкрд░ рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рдирд╣реАрдВ рд╣реИ ...

рдбреНрд░рд╛рдЗрд╡рд░ рдмрдЧ? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд▓рд╛рдЗрди рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣реА рд╣реИред рдЬрд┐рдпреЛрдореЗрдЯреНрд░рд┐рдХ рдПрдВрдЯреА-рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рдореМрдЬреВрджрдЧреА / рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрдирд╛ рдкрд╛рдПрдЧреА, рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИред

@toji рдореИрдВ рднреА рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рд╕рдорд░реНрдкрд┐рдд рдЧрдВрджреЗ рдкрд░реАрдХреНрд╖рдХ рдлреЛрди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдПрдХ рдЕрд▓реНрдХрд╛рдЯреЗрд▓ рдЬреЛ рд▓рдХреНрд╖реНрдп рд╕реЗ $ 30 рд╣реИ)ред рдореБрдЭреЗ рдмреИрдВрдбрд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрд╕рдорд╛рди рдХрд╛рд▓рд╛ рд╣реИред рдЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ: рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдордХреНрдЦрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд┐ 3 рдбреА рджреГрд╢реНрдп рдЗрд╕ рдлреЛрди рдкрд░ 2 рдбреА рдХреАрдмреЛрд░реНрдб рдпреВрдЖрдИ рд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЬрд╛рдУ рдкрддрд╛ рд▓рдЧрд╛рдУред

рдЙрд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд▓реЗ рдЖрдХрд╛рд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреАрдПрдордЖрд░рдИрдПрдо рдкреАрдврд╝реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рдЕрдЬреАрдм рдмрдЧ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдХрд╛рд░рдг рд╣реИ: рд╣рдордиреЗ рдкрд╛рдпрд╛: https://github.com/GoogleWebCompords/model-viewer/pull/920ред рдореИрдВ рдЗрд╕реЗ r112 рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдлрд┐рд╕рд▓ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдУрдкреА рдХреЗ рдмрдЧ рд╕реЗ рдЕрд╕рдВрдмрджреНрдз рд╣реИред

рдореИрдВрдиреЗ Chrome рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рджреЛрдиреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ OnePlus 5T рдкрд░ рдУрдкреА рдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ред

рдзрдиреНрдпрд╡рд╛рдж! рдкреИрдЪ рдХреЛ GLTFLoader рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдмреИрдВрдбрд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдкреИрдЪ рд╕реЗ рдкрд╣рд▓реЗ:

Screenshot 2019-12-30 at 12 11 36 PM

рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрд╛рдж:

Screenshot 2019-12-30 at 12 10 35 PM

рдореВрд▓ рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреИрдВрдб рдХреЛ рддрдп рдХрд░рддрд╛ рд╣реИред :

рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдЦреБрд╢ рд╣реЛрдирд╛, рдпрд╛ рдЖрдк рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк https://github.com/toji/xr-dinosaurs рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред (рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред)

рдЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ: рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдордХреНрдЦрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред Performance рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рдЧрдИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ r112 рдХреЗ рдЕрджреНрдпрддрди рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдЧрдорди рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ @mrdoob рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдирдпрд╛, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдорд╛рдирдХ рд╢реЗрдбрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MeshLambertMaterial рд╕рд╛рде рдХреБрдЫ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЙрдбрд▓ рдиреЗ рдкреАрдмреАрдЖрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╡реИрд╕реЗ рднреА рдореИрдВ рдЗрд╕реЗ рд▓реИрдореНрдмрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдХрд┐рд╕реА рднреА рдкреВрд░реНрдг рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдХреБрдЫ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИред) рдбрд╛рдпрдирд╛рд╕реЛрд░ рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдорд╛рдирдХ рд╕рд╛рдордЧреНрд░реА рдЪреВрдВрдХрд┐ рд╡реЗ "рд╣реАрд░реЛ" рд╕рдВрдкрддреНрддрд┐ рд╣реИрдВред

рд╕рд┐рдбреЗрдиреЛрдЯ: Scene.environment рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм GLTFLoader рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд╕реЗ MeshStandardMaterial рд▓рд┐рдП рд░реЗрдВрдбрд░рд░ рдЪреЗрдХ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдЯреНрдЯреЗрдмрд╛рдЬреЛрдВ / рдЪрдордХ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

https://github.com/mrdoob/three.js/blob/dd81aad5513d66e35e51f3a3b42555bc8aef5cbc/src/renderers-WebGLRenderer.js#L1633

рд╣рд╛рд▓рд╛рдВрдХрд┐, GLTFLoader рдкреНрд░рддреНрдпреЗрдХ рд╕рдЯреНрдЯреЗрдмрд╛рдЬ / рдЪрдордХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП ShaderMaterial рдмрдирд╛рддрд╛ рд╣реИред рдЯреА-рд░реЗрдХреНрд╕ рдореЙрдбрд▓ ^ ^ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЖрдЬ рдпрд╣ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖред рдЦреИрд░, # 14099 рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдгред

рдЬрдм рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдмреИрдВрдбрд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рддрд░рд╣ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ (1) рдкрд░рд┐рд╡реЗрд╢ рдФрд░ рдмрд┐рдВрджреБ рдкреНрд░рдХрд╛рд╢ рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рдеред

рдЙрдо, рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреМрддрд┐рдХ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВред рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ 1, рдПрдВрдбреНрд░реЙрдЗрдб 10 рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рджреЗрдЦреЗрдВред

https://threejs.org/examples/webgl_materials_envmaps_exr

Screenshot_20200106-111923

https://threejs.org/examples/webgl_materials_physical_clearcoat

Screenshot_20200106-111856

https://threejs.org/examples/webgl_materials_envmaps_hdr

Screenshot_20200106-111809

рдореИрдВ рдЕрдкрдиреЗ iMac рдкрд░ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореЗрд░реА рдорд╢реАрди рдкрд░ рдХреБрдЫ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдЬреЛ рдирдП PMREMGenerator ред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдкрд░; рдЙрдиреНрд╣реЗрдВ рдСрдирд▓рд╛рдЗрди рджреЗрдЦрдиреЗ рдкрд░ (рддреАрдиjs.org рдкреЗрдЬ рд╕реЗ) рд╡реЗ рд╕рднреА рд╕рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдХрднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛ рдЧрдпрд╛ рд╣реВрдВред

рдореИрдВ GeForce GTX 750 TI рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ 10 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдкрд░; рдЙрдиреНрд╣реЗрдВ рдСрдирд▓рд╛рдЗрди рджреЗрдЦрдиреЗ рдкрд░ (рддреАрдиjs.org рдкреЗрдЬ рд╕реЗ) рд╡реЗ рд╕рднреА рд╕рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдЬреНрдЮрд╛рдд рд╣реЛ рдХрд┐ dev рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ prod рдирд╣реАрдВ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди master рд╢рд╛рдЦрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдкрд╣рд▓реА рдмрд╛рдд рдореИрдВрдиреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд╡рд╣реА рдкрд░рд┐рдгрд╛рдоред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрд╕реБрдХред

рдХреНрдпрд╛ рдЖрдк рдЧреБрдкреНрдд рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХрднреА-рдХрднреА рд╕рд╛рдорд╛рди рдХреИрд╢реНрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЧреБрдкреНрдд, рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдХреА рдХреЛрд╢рд┐рд╢ рдХреА :(

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреИрдВрдбрд┐рдВрдЧ рдерд┐рдпреЛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣реА рд╣реИред
рдПрдордЖрдИрдкреА рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди, рдореЗрд░рд╛ рд╕реНрдерд╛рдиреАрдп (рдЧрд▓рдд) рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдмреНрд▓реИрдХ рдмреИрдВрдб рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЗрд╡ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

local
online

рдпрд╣ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рддрдХ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдХреБрдЫ рдЧрд▓рдд рд╕рдордиреНрд╡рдпрди рдирдореВрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрдирд┐рд╕реЛрдЯреНрд░реЛрдкрд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдкрд┐рди-рдкреЙрдЗрдВрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯ рдирд╣реАрдВ рд╕рдХрддрд╛, рдХреНрдпреЛрдВ рдпрд╣ рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

@ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг PMREMGenerator devicePixelRatio рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИред

рдирд╛рдордорд╛рддреНрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ pixelRatio рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╣рдо рдЙрддреНрдкрдиреНрди рдмрдирд╛рд╡рдЯ рдкрд░ "рдЦрд░рд╛рдм" mipmap рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ рдЫреЛрдЯреЗ рдЕрдВрддрд░рд╛рд▓ рдФрд░ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдЧрд░ рдореЗрд░реА рдорд╢реАрди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ (0.899 ..) рдпрд╛ рдСрдирд▓рд╛рдЗрди (1) рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд░рд╣реА рд╣реИ рддреЛ devicePixelRatios рдФрд░ рдЗрд╕реАрд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ setPixelRatio рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ PMREMGenerator рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@toji @ plut0nist рдорди рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ?

DEV рдЙрджрд╛рд╣рд░рдг
рдЯреЗрд╕реНрдЯ рдЙрджрд╛рд╣рд░рдг

@sciecode рдореВрд▓ рдХрд╛рд░рдг рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@ рд╕рд┐рд╕реНрдХреЛрдЯ : рдореЗрд░реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рддред DEV рдЙрджрд╛рд╣рд░рдг рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд╛рд▓реА рд░реЗрдЦрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ TEST рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ, рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдмреЗрд╣рдж рдЙрддреНрд╕реБрдХ рдерд╛ рдХрд┐ PMREMGenerator рдЖрд╡рд╢реНрдпрдХрддрд╛ devicePixelRatio рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреНрдпреЛрдВ рди рд╣реЛ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреЛрджрддрд╛ рдЪрд▓рд╛ рдЧрдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ renderer.setViewport() рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдореЗрдВ рдбреАрдкреАрдЖрд░ рдХрд╛ рдХрд╛рд░рдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлреНрд░реЗрдордмрдлрд╝рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдЬреЛ рд╕рдЯреАрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдиреБрдкрд╛рдд рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ рдмрд┐рд▓реНрдХреБрд▓ред рдореИрдВ рдпрд╣рд╛рдВ "рд╕рд╣реА" рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ rendere.setViewport() рдХрд╛ рдЙрдкрдпреЛрдЧ getTargetPixelRatio() rendere.setViewport() рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ 1 рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ рдЬрдм рд╕рдХреНрд░рд┐рдп рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдХрдореНрдкреАрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕