Three.js: рдХреБрдЫ ES6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдкрдирд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдкреНрд░реИрд▓ 2015  ┬╖  74рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

ES6 рдЖ рд░рд╣рд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдм рддреЗрдЬреА рд╕реЗ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ES6 рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдИ рдЧрдИ рдХреБрдЫ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ THREE.js рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рд▓рд╛рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрд╣рд╕ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдП рд╣реИрдВред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░
  • рдмреНрд▓реЙрдХ-рд╕реНрдХреЛрдк let рдХреАрд╡рд░реНрдб
  • Iterators + For..Of
  • рдХрдХреНрд╖рд╛рдУрдВ
  • рддреАрд░ рдХрд╛рд░реНрдп
  • рдЬреЗрдирд░реЗрдЯрд░
  • рдореЙрдбреНрдпреВрд▓

рдХрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдг

import Object3D from '../core/Object3D';
import Geometry from '../core/Geometry';
import MeshBasicMaterial from '../materials/MeshBasicMaterial';

class Mesh extends Object3D {
    constructor(
        geometry = new Geometry(),
        material = new MeshBasicMaterial({color: Math.random() * 0xffffff}
    ) {
        super();

        this.geometry = geometry;
        this.material = material;

        this.updateMorphTargets();
    }
}

export default Mesh;

рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЬреЗрдирд░реЗрдЯрд░ рдЙрджрд╛рд╣рд░рдг

class Object3D {
    constructor() {
        ...
    }

    traverse(callback) {
        callback(this);

        for (let object of this.children) {
            object.traverse(callback);
        }
    },

    *traversalGenerator() {
        this.traverse(object => yield object);
    }

    ...
}

рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЬрдирд░реЗрдЯрд░:

for (let object of scene.traversalGenerator()) {
    if (object.name === 'Blah') {
        break;
    }
}

рдиреЛрдЯ: рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ

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

https://github.com/mrdoob/three.js/commit/1017a5432eede4487436d6d34807fda24b506088

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо let рдФрд░ const рд╕реЗ src/ рд╢реБрд░реБрдЖрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢рд╛рдпрдж рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

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

рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдЬрд▓реНрджреА? рд╕рдорд░реНрдерди рд▓рдЧрд╛рддрд╛рд░ рдорд╣рд╛рди рдХреНрд░реЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рд╣реИ: http://kangax.github.io/compat-table/es6/

let рдПрдлрдПрдл рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рдХреНрд░реЛрдо рдФрд░ рдЖрдИрдИ рдореЗрдВ 100% рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВред
generators IE рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ
class рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдореЗрдВ рд╣реИ, Win10 рдФрд░ FF39 рдХреЗ рд▓рд┐рдП IE12 (рд╕реНрдкрд╛рд░реНрдЯрди) рддрдХрдиреАрдХреА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рджреЛ рдКрдкрд░ рд╣реИред
import рдЕрднреА рддрдХ рдХрд╣реАрдВ рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ
super рдХреЗрд╡рд▓ IE12 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, IE11, Chrome рдпрд╛ FF рдореЗрдВ рдирд╣реАрдВ
arrow functions IE11 рдпрд╛ рдХреНрд░реЛрдо рдореЗрдВ рдирд╣реАрдВ рд╣реИ

рд╕рд╛рде рд╣реА рдЬреЗрдирд░реЗрдЯрд░ рдФрд░ for-of рджреЛрдиреЛрдВ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рд▓рд░ рд╣реИрдВ

рдЗрдореЛ рднреА рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рд┐рд░реНрдл рдХрдЯреНрдЯрд░ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдПред рдмрд╣рд╕ рдпреЛрдЧреНрдп рдЬрдм рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдпрд╛ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рд▓рд╛рдн рджреЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдбрдмреЗрд╕ рдФрд░ ES6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЙрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХреЗред

рдореБрдЭреЗ ES6 рдкрд╛рд░реНрдЯреА рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рд╣реЛ рдЧрдИ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рд▓рдЧрддреА рд╣реИред рдореИрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рддреАрди.рдЬреЗрдПрд╕ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рд╕реНрдирд┐рдкреЗрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ-рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╕реАрдЦрдиреЗ рдХрд╛ рдзреИрд░реНрдп рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ 'рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди ()' рдФрд░ 'рдСрдмреНрдЬреЗрдХреНрдЯ.рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк' рдЬреИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдзреАрдорд╛ред

рдХреНрдпрд╛ рд╡реЗрдм рд╕рдореБрджрд╛рдп ES6 рднрд╛рд╖рд╛ рд╕рдорд┐рддрд┐ рд╕реЗ рдпрд╣реА рдорд╛рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореИрдВ 20 рд╕рд╛рд▓ рд╕реЗ рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ 'рдХреНрд▓рд╛рд╕' рд╢рдмреНрдж рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рди рд╣реА рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░рд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдХрднреА рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд╡рд╛...(рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреА рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧрд╛ рд╣реИред :-\

рдореИрдВ @benaadams рдФрд░ @jonnenauha рдХреЗ рд╕рд╛рде

:+1:

@erichlof рдЦреИрд░, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ES6 рд╡рд░реНрдЧ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП AMD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЦреНрдп рдЬреЗрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ ~ 10k рд▓рд╛рдЗрдиреЗрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ "рдХрдХреНрд╖рд╛рдПрдВ" рд╣реИрдВ рдФрд░ рдПрдПрдордбреА рдПрдХ рдЬреАрд╡рди рд░рдХреНрд╖рдХ рд╣реИред рджреЛрдиреЛрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВред рдЗрдореЛ рдмрдбрд╝реА рдпрд╛ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред 25x <script> рдЯреИрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреАрди.рдЬреЗрдПрд╕ рдЬреИрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рдмрдбрд╝реА рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ (рдЬреИрд╕реЗ рддреАрди.рдЬреЗрдПрд╕) рдмрдирд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд/рд╕рд╣рд╛рдпрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЕрдиреНрдп рд╕рд╛рдорд╛рди рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕реВрд░реНрдп рдХреЗ рдиреАрдЪреЗ ~ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ~ 500kb (рдорд┐рдиреАрдлрд╛рдЗрдб) рдмрд┐рд▓реНрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдПрдордбреА рд╕рдорд░реНрдерди, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрдб рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдПрдордбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рддреАрдиред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдХрдард┐рди рд╣реИ рдЬреЛ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЛ рдЪреАрдЬреЗрдВ рдореИрдВ рдХреЛрд░ рдХреЗ рдмрд╛рд╣рд░ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЙрд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдпрд╢реАрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ "рд╡рд░реНрдЧ" рди рд╣реЛ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ.рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░рддрд╛ рд╣реИ) рддреЛ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╡рд╣реА рдмрд╛рдд рд╣реИ, рдХреНрдпрд╛ рдЖрдк рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ? рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдХреЛрдб рддрдм рдЙрдХреНрдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдл рдШреЛрд╖рдгрд╛рддреНрдордХ рддрд░реАрдХрд╛ рд╣реИред

рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ ES6 рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗред рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ afaik рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдЕрднреА рддрдХред рдЕрдиреНрдп рд▓реЛрдЧ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╕ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмреЗрдмреЗрд▓ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдЙрдЯрдкреБрдЯ ES5 рдЕрдиреБрд░реВрдк рдмрдирд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдб рдХреЛ рд╕реНрд╡рддрдГ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдХреЗрд▓реЗ рдЗрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред

рдкреАрдПрд╕ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд╢реЗрдЦрд╝реА рдирд╣реАрдВ рдерд╛, рдмрд╕ рдпрд╣ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдИрдПрд╕ 6 рдореЗрдВ рдереНрд░реА.рдЬреЗрдПрд╕ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж :) рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХреА рдЕрдзрд┐рдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреАред рдЗрд╕рдореЗрдВ рдмрд╕ рдФрд░ рд╕рд╛рдорд╛рди рд╣реЛрдЧрд╛ред

рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╡рд╣ рд╣реИ рд╡реАрдХрдореИрдк рдФрд░ рд╕рдВрднрд╡рдд: рд╡реАрдХрд╕реЗрдЯ ред рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╕реА рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд┐рдП рдмрд┐рдирд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ "рдорд╛рд▓рд┐рдХ" рдЕрдм рд░реЗрдлрд░реА рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рддреАрди.рдЬреЗрдПрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╣реБрдд рд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдлрд░реНрдХ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА ++ рдореЗрдВ рд╕рд╛рдЭрд╛/рдХрдордЬреЛрд░ рдкреАрдЖрд░рдЯреА рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ https://github.com/mrdoob/three.js/blob/master/src/lights/SpotLight.js#L12 рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдПрдХ рдХрдордЬреЛрд░ рд░реЗрдлрд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдореМрдХреЗ рд╕реЗ рд╣рдЯрд╛рдХрд░ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рджреГрд╢реНрдп рд╕реЗ рд▓рдХреНрд╖реНрдп рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рдореИрдВ рдХреБрдЫ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдЗрди рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдРрдкреНрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

рд╣рд╛рдп @jonnenauha ,

рд╣рд╛рдВ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ 'рдЖрдпрд╛рдд' рдФрд░ 'рдирд┐рд░реНрдпрд╛рдд' рдЬреИрд╕реА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреА, рдЦрд╛рд╕рдХрд░ рдЬрд╣рд╛рдВ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣реА рджрд┐рд╢рд╛ рд╣реИ рдХрд┐ @kumavis рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдФрд░ рдХреЛрдб-рдмреЗрд╕ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП THREE.js рдХреЛ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдереНрд░реА.рдЬреЗрдПрд╕ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реБрдкрд░, рд▓реЗрдЯ, рдлреЙрд░, рдСрдлрд╝, рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЖрджрд┐ред рдЬрдм рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджрд╢рдХреЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ рдФрд░ рдПрдХ рд╣реИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХрд░реНрд╖рдгред рдореИрдВ рдкреБрд░рд╛рддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдХреЗ рд╕рд╛рде рд╣реВрдВ рдЬрдм рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рднрд╛рд╖рд╛ рд╣реИ (рдЕрд░реНрдерд╛рддреН рдХрд╛рд░реНрдп = рд╡рд╕реНрддреБрдПрдВ = рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ), рд▓реЗрдХрд┐рди 'рдХреНрд▓рд╛рд╕рд┐рдХ' рдирд╣реАрдВ - рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╢реВрд╣реЙрд░реНрдирд┐рдВрдЧ рдХрдХреНрд╖рд╛рдПрдВред рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ (1990 рдХреЗ рджрд╢рдХ рдореЗрдВ C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдЖ рд░рд╣рд╛ рдерд╛) рджреНрд╡рд╛рд░рд╛ рдЪрдХрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдХреЛрдб рдкрд░ рдмреИрдарддрд╛ рд╣реВрдВ рдпрд╛ рдХреЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣рдордд рд╣реЛрддрд╛ рд╣реВрдВ рд╕рдорд╕реНрдпрд╛ред

THREE.js рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдирдП SIMD рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдУрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрдиреЛрдВ рдХреЗ рдЧрдгрд┐рдд рдХреЛрдб (рд╡рд┐рд╢реЗрд╖рдХрд░ рд╡реЗрдХреНрдЯрд░3 рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ 4) рдЗрд╕рд╕реЗ рдХрд╛рдлреА рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд▓рд┐рдВрдХ рд╣реИ (рд╕рдордп рдХреЛрдб рдореЗрдВ 22:51 рджреЗрдЦреЗрдВ):
https://youtu.be/CbMXkbqQBcQ?t=1371
рдЬрдм рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЖрддреА рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рддреАрди.рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрдирдХреЗ рдлреНрд░реИрдорд░реЗрдЯ рдореЗрдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЧрддрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдПрдХ рд╢реЗрдЦрд╝реА рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣реА рдереА, рддреЛ рдореБрдЭреЗ рдмрд╕ THREE.js рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рднрд╛рдЧ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред :)

@erichlof @jonnenauha рдореБрдЭреЗ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ es6 рдХрдХреНрд╖рд╛рдПрдВ рд╕рд┐рд░реНрдл рдЪреАрдиреА рд╣реИрдВ рдФрд░ рд╡реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдХрд╛рдлреА рдЖрд╢рд╛рд╡рд╛рджреА рд╣реВрдВ рдХрд┐ es6 рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреАред es6 рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЕрдВрддрддрдГ рдЗрдВрдЬрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ HTTP/2 рдЗрд╕реЗ рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдпрджрд┐ рд╣рдо es6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП browserify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдореЗрдВ es6 рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЧрд▓рдд рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдЕрднреА рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреЛ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдлрд╛рдпрджреЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдзреАрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ рдкрд░ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЛрдб рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рдкрд╛рдЗрдк рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рдХ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рджреЗрд╡рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреМрдЧ рдореИрдХреНрд▓реЗрд░реЙрдп рдиреЗ рдХрд╣рд╛:
"рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓реНрдХрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреБрд╢рд▓ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реАрдпрддрд╛ рдореЗрдВ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рдЯреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝реЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░ рдлреЗрдВрдХрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВред"

рдореИрдВ es6 рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЗрд╕рдореЗрдВ рдХреВрджрдиреЗ рдФрд░ рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрдВрдЧрд╛: https://github.com/5to6/5to6

рдореИрдВ рдкреВрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рдХреНрдпрд╛ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рджрд░реНрд╢рди рднрд┐рдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдордЬреЛрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд░реНрд╕ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдПрдХ рдХрдордЬреЛрд░ рдкреЙрд▓реАрдлрд┐рд▓ рдФрд░ рдмрд╣реБрдд рдХрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдФрд░ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдереАрдВред (рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдХреБрдЫ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ es6 рдХреЛ рд╣реА рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░реЗрдВрдбрд░рд░ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ ams.js рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, http://stackoverflow.com/questions/18427810/three-and-asmjs/18439786#18439786ред

рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпреЛрдЧрджрд╛рди рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдФрд░ es6 рдЕрднреА рддрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

@ рдЬреАрд░реЛ 3 рд╡реЗ рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред рдЕрдЧрд░ рд╣рдо рдорд╛рдЗрдХреНрд░реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрд╕реЗ 100% рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдирд╣реАрдВ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЬреЛ рдореИрдВ рдКрдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореМрдЬреВрджрд╛ рдИрдПрд╕ 5 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╢рдмреНрджрд╛рд░реНрде рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдорди рдмрджрд▓ рд▓рд┐рдпрд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ es6 рдореЙрдбреНрдпреВрд▓ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдореБрдЭреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЕрджреНрднреБрдд рдЪреАрдЬреЗрдВ рдорд┐рд▓рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддреАрди.рдЬреЗрдПрд╕ (рдФрд░ рдХрдИ рдЕрдиреНрдп рдЖрдзреБрдирд┐рдХ рдУрдПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕) рдореЗрдВ рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣реИрдХреА рд╕рд╛рдорд╛рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ:

THREE.Object3D.call( this );

рддрдерд╛

THREE.Scene.prototype = Object.create( THREE.Object3D.prototype );

рдЬреИрд╕реЗ рд╣реА рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрдерд┐рд░ рдХреНрд░реЛрдо рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдореБрдЭреЗ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА

@mrdoob Classes рдЖрдЬ рд╕реНрдерд┐рд░ Chrome 42 рдФрд░ рдЬреВрди FYI рдореЗрдВ Firefox 39 рд╢рд┐рдкрд┐рдВрдЧ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ

рдЖрдИрдУрдПрд╕ рдкрд░ рд╕рдлрд╛рд░реА рдЖрдЬрдХрд▓ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИ ...

рдХрдХреНрд╖рд╛рдПрдВ рдЕрджреНрднреБрдд рд╣реИрдВ рдФрд░ рдЕрдиреНрдп ES7 рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрдХ рдХреНрд░реЙрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ (babel.js) рдкреЗрд╢ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ - рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдЖрдИрдИ рдФрд░ рд╕рдлрд╛рд░реА рдкрд░ рдЪрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдмреЗрдмреЗрд▓.рдЬреЗрдПрд╕ (рдмреЗрдмреЗрд▓рд┐рдлрд╛рдИ) рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛рд╡рд╢, рдХреНрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ? :)

рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА рдЗрдирдХреА рдЧрддрд┐ рдкрд░ рдкрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдореЗрд░реА рд╕рдордЭ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ ES6 рдЬреНрдпрд╛рджрд╛рддрд░ рдирд┐рд╖реНрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рддрдХ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдЬ рдЗрди рдЙрдкрдпреБрдХреНрддрддрд╛рдУрдВ рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЗрд╕ рдирд┐рд░реНрдгрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ @erichlof imo рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди SIMD (https://github.com/tc39/ecmascript_simd) рд╣реЛрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐

рдереНрд░реАрдЬреЗрдПрд╕ рдореЗрдВ рд╕рд┐рдордб рдХрд╣рд╛рдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдереНрд░реАрдЬреЗрдПрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЬреАрдкреАрдпреВ рдореЗрдВ рд▓реЛрдб рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рд╡реЗрдХреНрдЯрд░ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рдмрд╣реБрдд рдХрдо рдЧрдгрд┐рдд рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдереНрд░реАрдЬреЗрдПрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрди рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЛ рдЬреАрдкреАрдпреВ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЕрдиреБрднрд╡ рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдПрд╕рдПрд╕рдИ 2/рдПрд╕рдПрд╕рдИ 4 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдП рдереЗ рдФрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рд╛рдн рдХреНрд╖рдгрднрдВрдЧреБрд░ рдереЗ - рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓реЗ рдпрд╣ рдПрдХ рд▓рд╛рдн рдерд╛ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдмрдбрд╝реЗ рд╕рд░рдгреА рдереЗ рдЬрд┐рди рдкрд░ рдореИрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд╛рд░реНрдпрд╡рд╛рд╣реАред

рд╣рд╛рдп @рднреВрд╕реНрдЯрди ,
рдХреНрдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИ? рдЬрдм рдореИрдВ SIMD рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ 4 X 4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдкрд░реЗрд╢рди рд╕реЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдЯреНрд░рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рд╕реАрдкреАрдпреВ рдкрдХреНрд╖ рдкрд░ рддреАрди.рдЬреЗрдПрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдПрдиреАрдореЗрд╢рди рдлреНрд░реЗрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрдк рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред

рдЕрдЧрд░ Babylon.js рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдм рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://github.com/BabylonJS/Babylon.js/blob/master/src/Math/babylon.math.js#L2030 -L2093

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ рддреЛ рдПрдХ рдПрдХрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрд╛рдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдореИрдЯреНрд░рд┐рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд┐рдо рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд▓рд╛рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛ рдЕрдХреНрд╕рд░ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрддрдВрднреЛрдВ рдХреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрди: рдХреНрд░рдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ SIMD рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рд╕рдЬрд╛рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдпрд╛рд╕ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИред

рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд╛рде рд╣реА рдмрдирд╛рдП рд░рдЦрдирд╛ рдХрдард┐рди рд╣реИред

рдПрдХ рд░рдгрдиреАрддрд┐ рдЬреЛ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╡реИрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдЕрдкрдиреЗ рдореВрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ SIMD рд╕рдВрдЧрдд рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдЬреЛ рдХрд┐ рдХреНрд╡реЗрдХ 3 рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЧрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП vec2 рдФрд░ vec3 рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП 4 рдлрд╝реНрд▓реЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдк GPU рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реНрд▓реЛрдЯ рд╣реИрдВред

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдкрдХреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдФрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ SIMD.js рдкреНрд░рд╕реНрддреБрддрд┐ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдирд╛, рдФрд░ рдЗрд╕реЗ рддреАрди.js рдореЗрдВ рдЪрд┐рдкрдХрд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛рдПрдВ рдХреА рдЧрдИ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднреМрддрд┐рдХреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреИрд╕реЗ Cannon.js рдФрд░ Oimo.js , рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рддреАрди.js рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, SIMD рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ?

@bhouston рдЖрд╣ рдареАрдХ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдВрдЧреЗред

@erichlof рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рд╢рд╛рдЦрд╛ рд╢реБрд░реВ рдХреА рд╣реИ, https://github.com/Globegitter/three.js/tree/include-SIMD , рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╡реЗрдХреНрдЯрд░ 3 рдХреЛ рд╕рд┐рдордб рд╕реЗ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рднрд╛рд░реА WIP рд╣реИ рдФрд░ рдореЗрд░рд╛ рд╕рдордп рд╕реАрдорд┐рдд рд╣реИ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд┐рддрдирд╛ рдЖрдЧреЗ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рд╣рд░ рд░рд╛рдд рдирд╡реАрдирддрдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдмрд┐рдирд╛ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд╣рд╛рдВ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ~ 20 рдЧреБрдирд╛ рддреЗрдЬрд╝ рд╣реИ: https://blog.mozilla.org/javascript/2015/03/10/state -рдСрдл-рд╕рд┐рдо-рдЬреЗрдПрд╕-рдкреНрд░рджрд░реНрд╢рди-рдЗрди-рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕/)ред

@erichlof @jonnenauha рдореБрдЭреЗ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ es6 рдХрдХреНрд╖рд╛рдПрдВ рд╕рд┐рд░реНрдл рдЪреАрдиреА рд╣реИрдВ рдФрд░ рд╡реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдХрд╛рдлреА рдЖрд╢рд╛рд╡рд╛рджреА рд╣реВрдВ рдХрд┐ es6 рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреАред

рдЖрдк рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ (рдХрд╛рдлреА рдЬрдЯрд┐рд▓) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдореЗрдВ рдИрдПрд╕ 6 рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдб рдкрде рд╣реИрдВред

es6 рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЕрдВрддрддрдГ рдЗрдВрдЬрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ HTTP/2 рдЗрд╕реЗ рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рдЧреНрд░рд╛рд╣рдХ рдЕрднреА рднреА рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдВрдбрд╡рд┐рдбреНрде рдореЗрдВ рдХрдЯреМрддреА рдФрд░ рдЙрдирдХреА рдмреМрджреНрдзрд┐рдХ рд╕рдВрдкрджрд╛ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг-рдРрдк рдЬреЗрдПрд╕-рд╕реНрддрд░реАрдп рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП Three.js ES6 рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдХрд┐ рдХрдм рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╕рд╣реА рд╣реИ, рд╕рд╛рде рд╣реА рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рднред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП...

рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, [SIMD] рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛ рдЕрдХреНрд╕рд░ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрддрдВрднреЛрдВ рдХреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрди: рдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рддрд░рд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SIMD рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдореЗрдВ рдЕрдХреНрд╕рд░ "рд╕реНрдХреЗрд▓рд░ рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ рдЬреЛрдбрд╝реЗрдВ" рдирд┐рд░реНрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ:

for i : 0..3:
    dst.col[i] = lhs.col[i] * rhs.co[i][0] // multiply vector by scalar
    for j : 1..3:
        dst.col[i] += lhs.col[i] * rhs_col[i][j] // multiply vector by scalar & add

рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд╛рд╣рд┐рдиреЗ рд╣рд╛рде рдХреА рдУрд░ рдХреЗ рдСрдкрд░реЗрдВрдб рдХреЗ рдХреЙрд▓рдо рд╡реИрдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдм, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдпрд╛ рддреЛ рдбреЙрдЯ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рддрд░реАрдХрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдХрд▓рдо рдФрд░ рдХрд╛рдЧрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рдпрд╛ рдЧрдВрддрд╡реНрдп рд╕реНрдерд╛рди рдХреЗ рдЕрдХреНрд╖ рд╡реИрдХреНрдЯрд░ рдХреЗ рд░реИрдЦрд┐рдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ = рдмрд╛рдИрдВ рдУрд░ рдХреЗ рдХреЙрд▓рдо рд╡реИрдХреНрдЯрд░ рд╕рдВрдХрд╛рд░реНрдпред

@Globegitter рд╡рд╛рд╣ рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╢реБрд░реБрдЖрдд рд╣реИ! рдореИрдВ Firefox Nightly рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдирдИ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ!

@Globegitter рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╡реЗ рдЙрд╕ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЪрд░реНрдЪрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝реА рд╕реЗ рд╕реБрд▓рдЭрд╛рддрд╛ рд╣реИред

рдЬрд╣рд╛рдВ рдкреЙрд▓реАрдлрд┐рд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ ~ 20 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ

рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдХрд┐ рдЧреИрд░-рд╕рд┐рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд┐рддрдирд╛ рдзреАрдорд╛ рд╣реИ

рдореИрдВ Firefox Nightly рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдирдИ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ!

рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдФрд░ asm.js рдХреЛ about:flags . рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдПрдЬ рдореЗрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@Globegitter рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрдХ рдЕрдВрддрд░ рдЖ рд░рд╣рд╛ рд╣реИ: https://github.com/Globegitter/three.js/commit/d835ca3a22eed4ed4603534773ae55c29d5a8026

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╕рд╛рдЗрдб рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ SIMD рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ:

https://github.com/Globegitter/three.js/commit/8ed9c1d351a3b0587a1f05051922d271d79f642d

рдХреНрдпрд╛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╡реЗрдХреНрдЯрд░ 3 рдПрдХреНрд╕, рд╡рд╛рдИ, рдЬреЗрдб рдХреЛ рдЧреЗрдЯрдЯрд░/рд╕реЗрдЯрд░реНрд╕ рдореЗрдВ рдмрджрд▓ рджреЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдлреНрд▓реЛрдЯ 32x4 рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдо рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди mrdoob рдпрд╣рд╛рдБ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

https://github.com/mrdoob/three.js/blob/5c7e0df9b100ba40cdcaaf530196290e16c34858/examples/js/wip/proxies/ProxyVector4.js#L18

рдПрдХ рдЧрдгрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреАрдЫреЗ SIMD рдХреЛ рдореБрдЦреНрдп рднрдВрдбрд╛рд░рдг рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рд╣реИ, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдмреБрд▓реЗрдЯ рдлрд┐рдЬрд┐рдХреНрд╕ рдПрд╕рдПрд╕рдИ рдЧрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдорд╛рдирдХ рд╡реЗрдХреНрдЯрд░/рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

https://code.google.com/p/bullet/source/browse/trunk/src/vectormath/sse/

@bhouston , рдЗрди рдиреЛрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡рд╣рд╛рдВ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рддреАрди рдФрд░ рд╕рд┐рдо рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдХрд╛рдо рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рддрдиреА рджреВрд░ рдкрд╣реБрдВрдЪреВрдВрдЧрд╛ (рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рддреЛ рддреАрди рдЬрд╛рдирдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд╛рд╣рдиреАрдп рд╣реИред рдФрд░ рд╣рд╛рдБ, рдЗрд╕реЗ рдореЗрд░реЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

@tschw рдореИрдЯреНрд░рд┐рдХреНрд╕/рд╡реЗрдХреНрдЯрд░ рдЧрдгрд┐рдд рдкрд░ рдиреЛрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рддреБрдо рд╕рд╣реА рд╣реЛ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИред

@Globegitter рдпрд╣рд╛рдБ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рд╕реЗрдЯрд░/ https://github.com/mrdoob/three.js/blob/master/src/core/Object3D.js#L83

ES2015 рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рд╕реЗрдВрдЯ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдиреЛрдб рдореЗрдВ)

  • рдРрд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди (рдЬреИрд╕реЗред рд╡реА 8) рдХреЛ рдИрдПрд╕ 6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдХрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
  • рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХреЛрдб рд╕реЗ рдЬреИрд╕реЗ let x = 1, y = 2 v8 рдХреЛ рдЕрдкреЙрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдХрд░ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ v8 рдЕрдВрддрддрдГ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛
  • ES5 рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдХреЛрдб ES6 рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ> рдиреЛрдб 4 рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдорд░реНрдерд┐рдд ES6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдЖрдпрд╛рдд рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╣реИ)
  • рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рд╕реЗрдЯ рдкреНрд░рджрд░реНрд╢рди рдЬреАрдд рд╣реИрдВ
  • рдХрдХреНрд╖рд╛рдПрдВ рдЕрдЪреНрдЫреА рд╣реИрдВ
  • рдмреИрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж ES6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╢реБрдЧрд░ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ

рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдХреБрдЫ рддреАрди.рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди (4x4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛, рд╡реЗрдХреНрдЯрд░ 4 рдЗрддреНрдпрд╛рджрд┐) рдХреЛ рд╕рд┐рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдПрдХ рдмреБрдХрдорд╛рд░реНрдХрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЕрдм рдирд╡реАрдирддрдо рддреАрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдлреНрд░реЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

  • Firefox Nightly рдореВрд▓ SIMD рдЖрдЙрдЯ рдСрдлрд╝ рдж рдмреЙрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
  • рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдо --js-flags="--harmony-simd" SIMD рдХреЗ JS рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧреИрд░-simd рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ!

350% рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдПрдХ рдЭреВрда рд╣реИ :)

рдореИрдВрдиреЗ рд╡реЗрдХреНрдЯрд░ 3 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рднреА рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИред

https://github.com/DVLP/three.turbo.js

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЕрджреНрдпрддрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛

рдЙрд╕ рдкрд░ +1 рджреЗрдЦрдирд╛ рдФрд░ рдШреВрд░рдирд╛ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдХреНрдд рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИред

рдХреНрдпрд╛ рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдХреНрдд рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдХреНрдЯрд░ 3 рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░ рджреЛ рд╡реЗрдХреНрдЯрд░ 3 рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдВрдЧреА рдФрд░ рд╕рд┐рдордб рдореВрд▓ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдкрдХреНрд╖ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдо рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рдирд╣реАрдВ - рд╢рд╛рдпрдж рд╕рд┐рдо рдХреЗрд╡рд▓ рдЧрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрджрд┐ рдпрд╣ рдХреБрд▓ рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЫреЛрдЯрд╛ рдерд╛, рддреЛ рдЗрд╕реЗ рдЕрднреА рдбрд╛рд▓рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ SIMD рдЙрдкрд▓рдмреНрдз рди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдзреАрдорд╛ рди рд╣реЛред

рд╣рдо Matrix4 рдХреЗ multiplyMatrices() SIMD рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрдЯрд┐рд▓ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрд░реАрдХрд╛ рд╣реИред

https://github.com/mrdoob/three.js/blob/dev/src/math/Matrix4.js#L383 -L419

screen shot 2016-08-30 at 20 46 29

@mrdoob рдпрд╣рд╛рдБ рджреЗрдЦреЛ рдпрд╣ рд╣реЛ рдЧрдпрд╛ рд╣реИред
https://github.com/DVLP/three.turbo.js/blob/master/src/three.turbo.js

рдмреБрдХрдорд╛рд░реНрдХрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
javascript:(function(){var script=document.createElement('script');script.src='//rawgit.com/DVLP/three.turbo.js/master/src/three.turbo.js';document.head.appendChild(script);})()

рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░

THREE.Matrix4.prototype.multiplyMatrices = function(a, b) {
    var ae = a.elements,
      be = b.elements,
      tb = this.elements,
      arr1 = SIMD.Float32x4.load(ae, 0),
      arr3 = SIMD.Float32x4.load(ae, 4),
      arr5 = SIMD.Float32x4.load(ae, 8),
      arr7 = SIMD.Float32x4.load(ae, 12),
      arr2,
      arr4,
      arr6,
      arr8,
      res;
    // calculated version
        for (var i = 0; i < 4; i++) {
            arr2 = SIMD.Float32x4.splat(be[i * 4]);
            arr4 = SIMD.Float32x4.splat(be[i * 4 + 1]);
            arr6 = SIMD.Float32x4.splat(be[i * 4 + 2]);
            arr8 = SIMD.Float32x4.splat(be[i * 4 + 3]);
            res = SIMD.Float32x4.add(SIMD.Float32x4.add(SIMD.Float32x4.mul(arr1, arr2), SIMD.Float32x4.mul(arr3, arr4)), SIMD.Float32x4.add(SIMD.Float32x4.mul(arr5, arr6), SIMD.Float32x4.mul(arr7, arr8)));
            SIMD.Float32x4.store(tb, i * 4, res);
          }
}

рдЬрдм рдореИрдВ рдЗрд╕ рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ "рдлреЙрд░" рд▓реВрдк рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрдо рд╕реЗ рдХрдо рддреЗрдЬрд╝ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдЫреЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓реВрдк рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ рдФрд░ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕рдВрд╕реНрдХрд░рдг рдореМрдЬреВрдж рд╣реИред

"рдЙрд▓рдЯрд╛" рд╢рд╛рдЦрд╛ рдореЗрдВ рдФрд░ рднреА рдХрд╛рд░реНрдп рд╣реИрдВ
https://github.com/DVLP/three.turbo.js/blob/inverse/src/three.turbo.js

рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?

https://jsfiddle.net/tk6zx5dm/6/

рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд░рд╛рддреНрд░рд┐ рдореЗрдВ рдЬрдм рдЧрдгрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо (<1000) рд╣реЛрддреА рд╣реИ рддреЛ рдкрд░рд┐рдгрд╛рдо 3 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдЧрдгрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ резрежрежрежреж рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ рддреЛ рдЧрддрд┐ ~ рекреж% рддреЗрдЬ рд╣реЛрддреА рд╣реИ

рдХреНрд░реЛрдо рдореЗрдВ --js-flags="--harmony-simd" рдзреНрд╡рдЬ рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд┐рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЙрд▓реАрдлрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрддрд┐ рдХрдИ рдЧреБрдирд╛ рдзреАрдореА рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдХреНрд░реЙрд╕рд╡реЙрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдХреНрд░реЛрдорд┐рдпрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд) рд╣реЛрдЧреАред рдЙрдирдХреЗ рдкрд╛рд╕ Android рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ SIMD рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ JSFiddle рд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рдпреЛрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

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

рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрд░реЛрдо рд╕рд┐рд░реНрдл рдЬреЗрдПрд╕ рд╕рд┐рдо рдкреЙрд▓реАрдлрд┐рд▓ рдХреЛ --js-flags="--harmony-simd" рд╕рд╛рде рдХреНрдпреЛрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛, рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ?! рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдлрд╛рдпрджрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рд╛рдорд╛рди рдбрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВред рдЖрдкрдиреЗ рдпрд╣ рдХрд╣рд╛рдВ рдкрдврд╝рд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд▓рд┐рдВрдХ? рдпрд╣рд╛рдБ "рд╡рд┐рдХрд╛рд╕ рдореЗрдВ" рд▓рдЧ рд░рд╣рд╛ рд╣реИ https://www.chromestatus.com/features/5757910432874496

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП: рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рддреАрди.рдЬреЗрдПрд╕ рдореЗрдВ рд░рдЦрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ рдпрджрд┐ рдХреБрдЫ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рд▓реЗрдХрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд░рдл рд╕рднреА рдЬрдЧрд╣ рд╣реИред рдпрджрд┐ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 1 рд╕реЗ рдПрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдореВрд▓ рдирд┐рд╣рд┐рддрд╛рд░реНрде рдЕрд╕рдВрдЧрдд рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдкреВрд░реА рдЪреАрдЬ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдХреНрдпреЛрдВ рдЙрдард╛рдИ рдЬрд╛рдП, рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдкрд░ рджреЗрд╡ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдПрдВред

рддреАрди рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдкрд░ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рд╕рдорд░реНрдерди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдФрд░ рдЕрдиреНрдп рд╕рд┐рдореБрд▓реЗрд╢рди/рдЧрдгрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рд╢рдХреНрддрд┐ рд╣реЛрдВрдЧреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд┐рддрдиреЗ libs рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реЗ рдкрддрд╛ред

рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрд░реЛрдо рд╕рд┐рд░реНрдл рдЬреЗрдПрд╕ рд╕рд┐рдо рдкреЙрд▓реАрдлрд┐рд▓ рдХреЛ --js-flags="--harmony-simd" рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ WASM рдХреЛ рдЗрд╕ рддрд░рд╣ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рднреА рддрд░реНрдХ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реЗрдВрдЪреБрд░рд┐рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдирд┐рдЧрд░рд╛рдиреА рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рддреЛ рдХреИрдорд░рд╛ рджреВрд░реА рдЖрджрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╛рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдШрдирддреНрд╡ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреАрд╕рд░рд╛ рдкрдХреНрд╖ рдЙрдкрдХрд░рдг рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдлрд┐рд░ рднреА рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рдЪреЗрддрди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдпрджрд┐ рдЕрд╡рдЪреЗрддрди рдорди рдирд╣реАрдВ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд┐рд░реНрдл рдкреЙрд▓реАрдлрд┐рд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдФрд░ рд╕рд┐рдо рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдПрдлрдкреАрдПрд╕ рд╕рднреА рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдРрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реАрдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╣реЛрддреА рд╣реИрдВред рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреЗрд╣рддрд░ рддреЗрдЬреА рд╕реЗ рдЬреАрдПрд▓ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдЗрдП рдмрд╛рдХреА рдХреЛ рдорд╛рдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдо рдХреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдУрд╡рд░рд╣реЗрдб рдмрдирд╛ рд░рд╣реА рд╣реИ рдЬреЛ рдирд╛рдЗрдЯрд▓реА рдореЗрдВ рд╕рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреЗрддреА рд╣реИред рдореИрдВ рдХреНрд░реЛрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рд╕рд┐рдо рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рдХреНрд░реЛрдорд┐рдпрдо рдпрд╣рд╛рдВ рд╣реИ http://peterjensen.github.io/idf2014-simd/
рдпреЗ рдкреБрд░рд╛рдирд╛ рд╣реИред

рдЕрджреНрдпрддрди:
рдЕрдм SIMD рдПрдЬ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдЭрдВрдбреЗ рдкрд░ рдЬрд╛рдХрд░ рдФрд░ "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ" (рдПрдЬ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рд▓реА рд╕рд┐рдо рдпрд╛ рдкреЙрд▓реАрдлрд┐рд▓ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдореЗрд░реА рдорд╢реАрди рдкрд░ ~ рекреж% рдзреАрдореА SIMD рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:/ https://jsfiddle.net/tk6zx5dm/6/

рдореИрдЯреНрд░рд┐рдХреНрд╕ 4 рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╕рд┐рдордб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреА рднрд┐рдиреНрдирддрд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрднреА рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛
https://jsfiddle.net/tk6zx5dm/15/
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рдордб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреИрд╢реНрдб рдХреНрд░реЛрдо рдореЗрдВ рднреА _рдХрднреА-рдХрднреА_ рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреЙрд▓реАрдлрд┐рд▓ рд╕рд┐рдордб (...? рдЕрдЬреАрдм) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

THREE.Matrix4.prototype.multiplyMatrices = function(a, b) {
  var i = 4;
  while(i--) {
    SIMD.Float32x4.store(this.elements, i * 4, 
      SIMD.Float32x4.add(
        SIMD.Float32x4.add(
          SIMD.Float32x4.mul(
            a.cacheSIMDRow1,
            b.cacheSIMDSplat[i * 4]
          ),
          SIMD.Float32x4.mul(
            a.cacheSIMDRow2,
            b.cacheSIMDSplat[i * 4 + 1]
          )
        ),
        SIMD.Float32x4.add(
          SIMD.Float32x4.mul(
            a.cacheSIMDRow3,
            b.cacheSIMDSplat[i * 4 + 2]
          ), 
          SIMD.Float32x4.mul(
            a.cacheSIMDRow4,
            b.cacheSIMDSplat[i * 4 + 3]
          )
        )
      )
    );
  }
}

рдХреИрд╢рд┐рдВрдЧ - рд╢рд╛рдпрдж рд╣рд░ рдЕрдкрдбреЗрдЯрдореИрдЯреНрд░рд┐рдХреНрд╕() рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЕрдВрдд рдореЗрдВ рдкреВрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

THREE.Matrix4.prototype.updateSIMDCache = function() {
  this.cacheSIMDRow1 = SIMD.Float32x4.load(this.elements, 0);
  this.cacheSIMDRow2 = SIMD.Float32x4.load(this.elements, 4);
  this.cacheSIMDRow3 = SIMD.Float32x4.load(this.elements, 8);
  this.cacheSIMDRow4 = SIMD.Float32x4.load(this.elements, 12);

  if(!this.cacheSIMDSplat) {
    this.cacheSIMDSplat = [];
  }
  for(var i = 0; i < 16; i++) {
    this.cacheSIMDSplat.push(SIMD.Float32x4.splat(this.elements[i]));
  }
};

рдореБрдЭреЗ рдЙрддреНрд╕реБрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ ES6 рд╢реИрд▓реА рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдПрдХ рд╕рдВрдпреЛрдЬрдХ рдХреЛ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдкреВрд░рд╛ рдХреЛрдб рдЕрднреА рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди рдмреЗрдмреЗрд▓ рднреА рдЪрд▓рд╛рдПрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╡рд╣рд╛рдВ ES6 рд╕рд╛рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ?

рдПрдХ рд╕рдВрдпреЛрдЬрдХ рдХреЛ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдкреВрд░рд╛ рдХреЛрдб рдЕрднреА рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди рдмреЗрдмреЗрд▓ рднреА рдЪрд▓рд╛рдПрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╡рд╣рд╛рдВ ES6 рд╕рд╛рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ?

рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреЗрдмреЗрд▓ рдЙрддреНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдгред рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рд╕реБрдирд╛ рд╣реИ рдХрд┐ V8 let/const рдХреЗ рдмрдЬрд╛рдп var рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рддреЗрдЬрд╝ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдПрдлрд╡рд╛рдИрдЖрдИ : рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ "рдЦреБрдж рдХреЛ рдИрдПрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ, рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдИрдПрд╕ 5 рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"ред

рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдиреАрдЪреЗ рд╡рд░ рдмрдирд╛рдо рд▓реЗрдЯ рдЗрди рд▓реВрдкреНрд╕ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ
http://stackoverflow.com/questions/21467642/is-there-a-performance-difference-between-let-and-var
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬреИрд╕реЗ 'рдкреНрд░рддреАрдХреНрд╖рд╛' рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ?! рддреЛ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг? рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ 'рдЙрдиреНрд╣реЗрдВ рдХреЗрдХ рдЦрд╛рдиреЗ рджреЛ... рдпрд╛ рдХреНрд░реЛрдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЛред' (рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'рдЪрд▓реЛ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдзрд┐рдорд╛рдирддрдГ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рд╛рдмрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рд╕реНрдХреЛрдкрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП 'var' рдлрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ 'рд▓реЗрдЯ' рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ/рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ 'рдЪрд▓реЛ' рдХреЛ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рднреА рдЖрдкрдХреА рдпрд╛рджрджрд╛рд╢реНрдд рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдХреЛрдб рдХрднреА рднреА рд╣рд╛рде рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдЬрд┐рддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЬреЗрдПрд╕рдкреАрдЖрд░рдПрдл рдиреАрдЪреЗ рд╣реИред рдореИрдВ рдЗрд╕реЗ Google рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦрддрд╛ рдерд╛ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: JSPerf.com рдиреАрдЪреЗ рдирд╣реАрдВ рд╣реИ! рдПрдХ рд╕рд╛рд▓ рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдорд░ рдЪреБрдХрд╛ рд╣реИ
let рдореЗрд░реЗ рдХреНрд░реЛрдо рдХреИрдирд░реА рдореЗрдВ var рд╕реЗ 3x рдзреАрдорд╛: https://jsperf.com/let-vs-var-performance/14
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдПрдЬ рдореЗрдВ рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрд░реЛрдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдлрд╛рд░реА рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдХрдХреНрд╖рд╛рдПрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдФрд░ рдЖрдзреБрдирд┐рдХ рд▓рдЧрддреА рд╣реИрдВ! рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рд╣реИ?

@ рд░реБрдмрд┐рдирд╣реБрдЖрдВрдЧ 9239 рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕реЗ

рдореЗрд░реЗ рдХреНрд░реЛрдо рдХреИрдирд░реА рдореЗрдВ var рд╕реЗ 3x рдзреАрдорд╛ рд╣реЛрдиреЗ рджреЗрдВ: https://jsperf.com/let-vs-var-performance/14

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, let рдФрд░ const рдЕрдм рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЛрдо 66, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 59 рдФрд░ рдПрдЬ 42 рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП var рд╕реЗ рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдХрд╛рдо рдХрд╛ рдореБрдЦреНрдп рдереЛрдХ рд░реЛрд▓рдЕрдк рдХреЛ рдЕрдкрдирд╛рдирд╛ рдерд╛ рдЬреЛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдирд╛рдпрдХ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдереНрд░реАрдЬреЗрдПрд╕ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡реИрд╕реЗ рддреЛ рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢рд╛рдпрдж рдЗрд╕рдореЗрдВ 8 рдШрдВрдЯреЗ рд▓рдЧреЗрдВрдЧреЗред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЫреЛрдЯреА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдЧрдгрд┐рдд рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрджрд▓реЗрдВ рдФрд░ рдкреАрдЖрд░ рдХрд░реЗрдВред рдЕрдЧрд░ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред

@looeee рдпрд╣ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ ES6 рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛

2019 рдЕрдВрддрдд: рдЙрджрд╛рд╣рд░рдгреЛрдВ/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХреБрдЫ ES6 рдХреЛрдб рдЕрдкрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрд╖ рд╣реИ, рд╣реИ рдирд╛ @mrdoob? рдореИрдВ

ES6 рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдорд╛рдирдХ рд░рд╣рд╛ рд╣реИ, рдирдП рдбреЗрд╡рд▓рдкрд░ ES6 рд╕реАрдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ IE11 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ #16220 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдереА, рдХреМрди рд╕реЗ рдбреЗрд╡рд▓рдкрд░ IE11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддреАрди.js рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдореИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрд╕реНрдЯ/рд▓реЗрдЯ рдХреЛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИред

рдЕрдЧрд░ рд╣рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдпреЛрдЧрджрд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрд░рдорд╢рдГред рдЖрдЗрдП рдЕрднреА рдХреЗ рд▓рд┐рдП three.module.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдХреНрд░рдорд╢рдГред рдЖрдЗрдП рдЕрднреА рдХреЗ рд▓рд┐рдП рддреАрди.рдореЙрдбреНрдпреВрд▓.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЗрд╕ рдЪрд░рдг рдХреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ?

рджреЛ рдЙрдореНрдореАрджрд╡рд╛рд░:

  1. рдХреЙрдиреНрд╕реНрдЯ/рд▓реЗрдЯ
  2. рдХрдХреНрд╖рд╛рдУрдВ

рдЪреВрдВрдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдЬреНрдпрд╛рдорд┐рддрд┐ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╛ рд╣рдо рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред

рд╕рдВрдмрдВрдзрд┐рдд: #11552, #18863

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рднреА ES6 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рднреА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ examples/js рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛? рдЬрдм рддрдХ рд╣рдо рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ modularize рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧреА, examples/js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреА рдореВрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реА рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, examples/js рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реИ рдЬреЛ рдХрдо-рд╕реЗ-рдХрдо рд╢рд╛рдВрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕рднреА рдХреЛ рдореБрдЦреНрдп src/... рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдпрд╣ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╣реИ 'рдХреНрдпрд╛ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП x, y, z рдХреЗ рдЙрджрд╛рд╣рд░рдг/рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ?'ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЬрд╡рд╛рдм рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рд╛рдВ рд╣реИ рд▓реЗрдХрд┐рди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рднреАрддрд░ рд╢реИрдХреНрд╖рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред examples/js рд╣рдЯрд╛рдирд╛ рдЙрд╕ рд╕рдордп рд╕рд╡рд╛рд▓ рд╕реЗ рдмрд╛рд╣рд░ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ examples/js рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд/рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

examples/js рдХреЛ рдХреЗрд╡рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ/рд╢реИрдХреНрд╖рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рдореБрджрд╛рдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рд╕рд╛рдордЧреНрд░реА/рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдЕрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд╣реАрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджреЛрдЧреБрдирд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ред

рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдкреАрдЫреЗ рдХрд░ рд▓рд┐рдпрд╛ред

рдЬрдм рддрдХ рдЙрджрд╛рд╣рд░рдг рднреА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред

рдореБрдЭреЗ рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдЧрд▓реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрдВрддрд░рд┐рдо рдХрджрдо рдХреЗ рд░реВрдк рдореЗрдВ рдзреНрд╡рдирд┐ рдкрд╕рдВрдж рд╣реИред

@рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо examples/js рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ, рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ:

  • examples/js/*
  • examples/jsm/*

рдкрд╣рд▓реЗ рдореЗрдВ рд▓реАрдЧреЗрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди ES рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдЕрдВрддрддрдГ рдкрд╣рд▓реЗ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗред рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ ES рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ examples/js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ ES рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ src/ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк ES рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ ES рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдЖрд╣, рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рднреНрд░рдорд┐рдд рдерд╛

рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг/рдЬреЗрдПрд╕ рдЦрддреНрдо рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ?

рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

Modularize.js рдореБрдЭреЗ рдореЗрд░реЗ рд╢реБрд░реБрдЖрддреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рд▓рд╛рдпрд╛ред рдХрдиреНрд╡рд░реНрдЯрд░ ред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ ES6 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджреЗрдЦреАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣рд╛рдВ рдХреВрдж рдЬрд╛рдКрдВрдЧрд╛ред

рддреЛ рдЕрдЧрд░ examples/js рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ src рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ ES6 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдпрд╛...
рдЬрдм рддрдХ рдпрд╣ рдХрдХреНрд╖рд╛рдПрдВ/рдИрдПрд╕ 6 рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рддрдм рддрдХ рдореЙрдбреНрдпреВрд▓рд░рд▓рд╛рдЗрдЬ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ?

рд╣рдо рдХреБрдЫ рднреА ES6 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдХреЛрд░ рдореЗрдВ рдЕрднреА рднреА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

рдпрд╣ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред

@ Mugen87 рдХреНрдпрд╛ ES рд╡рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рдФрд░ рдерд╛, рдпрд╛ рдмрд╕?

рдХреЛрд░ рдореЗрдВ рдЕрднреА рднреА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдХрд░ рджреА рдЧрдИ рд╣реИ!

рдЕрд╡рд░реЛрдзрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЦрдВрдб рд╣реИрдВ:

https://github.com/mrdoob/three.js/blob/6865b8e6367d0ce07acbacfae6663c4cce3ac21e/examples/js/loaders/ColladaLoader.js#L6 -L12

https://github.com/mrdoob/three.js/blob/6865b8e6367d0ce07acbacfae6663c4cce3ac21e/examples/js/cameras/CinematicCamera.js#L38 -L39

https://github.com/mrdoob/three.js/blob/6865b8e6367d0ce07acbacfae6663c4cce3ac21e/examples/js/controls/OrbitControls.js#L1149 -L1150

THREE.<class>.call рдФрд░ Object.create( THREE.<class> рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдкреИрдЯрд░реНрди рд╣реЛрдЧрд╛ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд▓реЛрдбрд░, EventDispatcher, рдФрд░ PerspectiveCamera (рд╢рд╛рдпрдж рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ) рдХреЛ рдЕрднреА рддрдХ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

https://github.com/mrdoob/three.js/commit/1017a5432eede4487436d6d34807fda24b506088

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо let рдФрд░ const рд╕реЗ src/ рд╢реБрд░реБрдЖрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢рд╛рдпрдж рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдирд░рдХ рд╣рд╛рдБ!

рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЪрд┐рдВрддрд╛ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рд╣реЙрдЯ рдХреЛрдб рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореЗрд░рд╛ рдбрд░ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдпрд╣ рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдЪ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрд╕реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдЕрдЧрд░ рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдХреЙрдиреНрд╕реНрдЯ рдХрд╛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдЙрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЗрдбрд╝реЛрдВ (рдЬреИрд╕реЗ рд╕рдВрд░рдЪрдирд╛рдУрдВ) рдХреА рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХреЛрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП let рдпрд╛ const рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрддрд╛ рд╣реВрдВред
рд╡реИрд╕реЗ рднреА рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ рдФрд░ рдореЗрд░рд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХреЙрдиреНрд╕ рдХрд╛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╣реЙрдЯрдХреЛрдб рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред
рдлрд┐рд░ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрддрдиреЗ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрддрд╛ рд╣реЛ, рдпрд╣ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдпрд╛рдд рд░реАрд▓реЛрдбрд┐рдВрдЧ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ, рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд░реНрдерд╣реАрди рдЪрд┐рдВрддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЪрд▓реЛ 'рдЪрд▓реЛ' рд╣реЛ! рдЖрдЦрд┐рд░рдХрд╛рд░ред

рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдиреЗ рдХрд╣рд╛ рдХрд┐ var рдПрдХ рдмрдбрд╝реА рдЧрд▓рддреА рдереА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП 'let' рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди var рдХреЛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 'let' рдХрд╛ рдХреЛрдб var рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдЦрд░рд╛рдм рдХреЛрдб рд╡рд╛рд▓реЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рдЬрдВрдЧрд▓реА рдореЗрдВ рджреБрдмрдХрд╛ рд╣реБрдЖред рд╕рдЦреНрдд рдореЛрдб рдФрд░ рдЙрддреНрдерд╛рдкрди рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдореБрджреНрджреЗ рд╣реИрдВред

@MasterJames рдХреЙрдиреНрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЙрдЯ

рдореИрдВ рдПрдХ рд░рд┐рдПрдХреНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рд╡рд╣рд╛рдВ рдХрд╛ рдЖрджрд░реНрд╢ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреЙрдиреНрд╕ рдФрд░ рд▓реЗрдЯ, рдЬреЛ рдЖрдЬрдХрд▓ рдорд╛рдирдХ рд╣реИрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж рдЖрдкрдиреЗ const рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ Object.freeze ? рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

konijn picture konijn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

clawconduce picture clawconduce  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlaquinte picture jlaquinte  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

filharvey picture filharvey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ