Very nice! It was nice to see this at the New Game conference and it's
great that you've made it available.
> The aim of this was not to overly optimise and see what we could do at
> the extremes (or rather where we thought the extremes were). It only
> works in Chrome as compatibility wasn't the name of the game (mainly
> as we couldn't track down what was causing issues in FF in time). All
> future releases from us will be aimed at broad compatibility.
>
> These are the lessons we have learnt on the way:
> - Small jpegs expand to huge uncompressed textures in ram and while
> saving on bandwidth you will quickly hit virtual memory swap on even
> mid-ranged computers.
> - You can do texture decompression in a pixel shader; however you also
> need to do your own bilinear filtering and switch of mipmaping to
> achieve it.
> - You can't provide your own mipmaps to overcome the previous point -
> perhaps a depth based FSAA post render could resolve this?
> - It is possible to do performant deferred shading in WebGL, however
> without multiple render targets you need floating point textures to
> pack the extra info for a single pass of the main geometry.
> - Loading 70 large models _when cached_ via webworkers will "snap" the
> page in Chrome (need to develop a small exampler and raise a bug on
> this one); hence the throttled loading
How are you managing your workers? Are you spawning one worker per
model? If so, that is not a good idea -- you should maintain a small
pool of workers and distribute the work to them. Some recent changes
in Chrome's worker implementation which generally improve performance
significantly also changed the behavior in this area. The ro.me demo
was affected by these changes; see http://crbug.com/102158 .
-Ken
I asked one of the team members and it's a hardware limitation.
-Ken