To jest moja opinia:
Przede wszystkim asm.js nie ma naprawdę być napisane ręcznie. Mimo to mówię, że z pewnością można to napisać, ponieważ ma walidator. Nierealne demo to coś, co zostało skompilowane do pliku asm.js z emscripten. Nie wymaga również interakcji z innym kodem poza kodem, który jest kompilowany. Generuje więc wysoce zoptymalizowany kod ze względu na fakt, że nierealne demo jest już wysoce zoptymalizowanym kodem w C++, zostaje zoptymalizowane przez kompilator, a następnie dostaje kolejny przebieg optymalizacji poprzez asm.js.
Po drugie, asm.js jest obsługiwany tylko przez firefox. Mimo że wszystkie inne przeglądarki mogą go wykonywać, ale na większości nadal powoduje to obniżenie wydajności. Kara ta dotyczy porównania kodu asm.js, który działa tak samo, jak normalny kod javascript. Wystarczy wyszukać jsperf.com na przykładach.
Okay, Oto kilka ogólnych wskazówek dotyczących asm.js. Porozmawiajmy teraz o Three.js.
Po pierwsze, ponieważ THREE.js musi wchodzić w interakcje z kodem użytkownika, nie jest łatwo napisać bibliotekę asm.js z powodu wielu ograniczeń (brak obiektów).
Po drugie, Three.js nie zyska dużej wydajności w obliczeniach, w których silny jest asm.js, ale zyska więcej dzięki przyszłym aktualizacjom z przeglądarek. (na przykład wkrótce pojawi się tworzenie czcionek w chrome, które jest teraz punktem krytycznym w THREE.js, V8 issue)
Po trzecie, kod w pliku asm.js musi zarządzać własną pamięcią. Co oznaczałoby, że THREE.js musi znaleźć sposób, aby duże aplikacje działały z ograniczoną pamięcią. Lub spraw, aby każda aplikacja była bardzo głodna.
Po czwarte, porównanie nierealnej wersji demonstracyjnej z plikiem three.js jest nieco niesprawiedliwe, ponieważ trojan próbuje zezwolić wszystkim na pisanie aplikacji 3D, podczas gdy nierzeczywisty silnik jest wysoce zoptymalizowanym silnikiem do gier 3D.
Jak zauważyłeś, jestem głównie przeciwko asm.js w three.js. Ale to dlatego, że jest za wcześnie, by powiedzieć, co najlepiej zrobić. Istnieje duże prawdopodobieństwo, że program asm.js dostanie miejsce w pliku three.js, ale na przykład w bardziej ograniczonym zakresie jako renderer-only. Ale na razie wciąż jest zbyt wiele nierozwiązanych pytań wokół asm.js.
Ale jeśli chcesz używać asm.js i używać C++, to polecam emscripten, który został użyty do zbudowania nierzeczywistej wersji demo.
To jest oczywiście moja opinia.Ale myślę, że w pewnym stopniu odzwierciedla to, co mieli na myśli @ Mr.doob i @WestLangley. I przepraszam za długi post.
Dzięki Gero3, właśnie tego szukałem. Naprawdę potwierdziłeś wiele z tego, co myślałem i miałem nadzieję. Byłem nieco zdezorientowany z powodu chromu. Kiedy testowałem w wersji 22, nierzeczywiste demo zepsuło całą przeglądarkę, ale w kanarku zadziałało. Przeszukałem go, aby zobaczyć, czy został uwzględniony i usłyszałam o nim wzmiankę - więc założyłem, że zostało dodane. Ale po ponownym spojrzeniu widzę, że nie ma wsparcia. Całkowicie biorę też pod uwagę Unreal v Three. Trzy to rzeczywiście świetna biblioteka i chciałem tylko zobaczyć, co inni myślą na temat ASM, a trzech użyć demo Unreal jako mojego gadającego punktu. Jeszcze raz dziękuję! – Mat