Determinare se il codice webgl funziona su una varietà di hardware

3

Ho qualche codice javascript / webgl. Voglio avere un'idea di come funzionerà per qualcuno con un browser / macchina / gpu diverso.

Questo è difficile, perché c'è così tanta diversità nel supporto per le funzionalità. Ad esempio, sulle mie macchine, posso passare GL.FLOAT a readPixels , ma so che dovrei davvero utilizzare solo GL.UNSIGNED_BYTE . Un altro esempio è che, quando webgl compila un framment shader in fase di runtime, una delle mie macchine accetterà vec4(1, 0, 0, 0) mentre l'altra si lamenterà che i cast impliciti da int a float non sono consentiti. Ho persino un codice che funziona sul mio telefono in Chrome, ma non sul mio telefono in Firefox, per nessun motivo visibile.

Come posso test se il mio codice webgl è conforme allo standard? Come posso stimare quanti utenti lavorerà per nella pratica ?

Forse esistono interpreti con set di funzionalità minimi che eseguono il codice e, se funziona nell'interprete, puoi essere sicuro che funzionerà per la maggior parte degli utenti? O forse ci sono servizi che eseguono il tuo codice su molte macchine? Forse un particolare vecchio telefono è un buon candidato "a supporto minimo" per i test?

(Ho provato a utilizzare SauceLabs per eseguirlo su una varietà di macchine, ma non supportano Webgl quindi è un fallimento. Inoltre c'è sempre il fallback di aspettare che la gente si lamenti ...)

    
posta Craig Gidney 26.04.2016 - 20:32
fonte

1 risposta

0

È necessaria una combinazione di benchmark per ogni classe di dispositivo:

Create a set of benchmarking tools by selecting a benchmark in each domain to get to a comprehensive view of platform performance.

La raccolta dei dati basata sullo sforzo della comunità è una necessità:

Oltreadefinireicriteriperdeterminarelaqualitàdelbenchmark:

Intelbelievesthatgoodbenchmarksshouldmeetbothofthesetwobasiccriteria:

  1. Thebenchmarkusesrealapplicationsorbenchmarkapplicationsexecutingrealworkloads,andbebasedonreal-worldscenariosandworkflows

  2. Thebenchmarkwasdesignedwithindustrystakeholderinputbakedintothedevelopmentprocess,guidedbyindustrybestpracticesandtransparency

AlcuneimplementazioniWebGLsupportanol'APIfailIfMajorPerformanceCaveat:

varcanvas=document.getElementById('renderCanvas');varcontext=canvas.getContext('webgl',{failIfMajorPerformanceCaveat:true});

Whenacontextisrequestedonacomputerwithablock-listeddriver,thefailIfMajorPerformanceCaveatflagpreventsIEfromreturningasoftwarecontext,andinsteadreturnsnocontext.

TouseityoujusthavetoadditasanoptiontothegetContextfunction:

Usingthisattribute,youcanknowthatthecurrentdeviceisn'tpowerfulorsecureenoughtorunhardwareaccelerated3Drendering.Thenyoucandecidetousethesoftwarerenderer,orifyouprefer,lettheuserknowtheircomputerorgraphicscardaren'tsupported.

Riferimenti

risposta data 08.06.2018 - 04:26
fonte

Leggi altre domande sui tag