I knew for loops iterating over properties were slower than numerical for loops but I didn't realize how bad it was.
Gained about 10 fps in performance test, and that was for for loop iterating over single property.
Also fixed broken examples with postprocessing.
Masking was real pain to get working with multiple render targets :/.
Unfortunately this introduced dependencies on MaskPass.js and ShaderPass.js even for use cases that do not use masking. Bah, will need to figure out some better way for deployment.
Cause everywhere there are warnings about not writing to the same texture which is also being read. Curiously enough this didn't make problems so far (save for mysterious lines when doing "heat" effect in ro.me).
No need to use full-screen render targets for quarter-screen images (still keeping big one for geometry pass to emulate antialiasing).
Also added check for existence of normalMatrix in shader when setting uniforms in WebGLRenderer. Null was being sent to GPU for materials that don't use normals (e.g particles).
Still not very fond of decompose returning new array. We will see when it'll be actually used - as API allows for passing in existing translation, rotation, scale, maybe this return array could be eliminated.
This kinda works in Chrome, though not in Firefox.
I give up on canvas renderer in these two examples in FF, it's anyways extremely slow with nontrivial textured models.
* Added support to texture.offset in CanvasRenderer
* Removed ShadowVolume, ShadowVolumeDynamicMaterial and LensFlare classes.
* Removed Stencil Shadows and LensFlare code out of WebGLRenderer
* Added 2.59 folder to Blender, and removed old ones.
Included corresponding compressor in "utils/exporters/utf8" (prebuilt exe for Windows plus slightly modified C++ source code).
Use UTF8 format with caution, it is very neat but has quite a few limitations:
- number of vertices < 65536 (this is after optimizations in compressor, input OBJ may have even less)
- models must have normals and texture coordinates
- texture coordinates must be only from <0,1>
- no materials support yet
- models are scaled and offset (copy numbers from compressor and use them as parameters in UTF8Loader.load() )
* Realised that canvas.context has a createPattern method which allows CanvasRenderer to support tiled textures \o/ (Examples where there is a CanvasRenderer and a WebGLRenderer at the same time may get errors because CanvasRenderer now uses texture.needsUpdate too).