Work in progress. For the moment works just with CTMLoader. Still not sure where some pieces of code would go.
Upsides:
- initialization time cut down significantly (1.8 seconds => 0.7 seconds for CTM example)
- much smaller GL buffers thanks to fully used indexing (Walt has 6x less vertices)
- consequently much smaller memory footprint all around, both for main and GPU memories,
which means less swapping and better vertex caching
Downsides:
- can't have anymore sharp per-face effects like flat shading (at least if mesh is not constructed in a way where each face has own vertices)
- can't have multiple materials per mesh
- no more easy manipulation of anything (for the moment actually no runtime manipulation at all, typed arrays are just thrown away, dynamic geometries code path not yet implemented)
This should allow attaching of lights to objects. As a side effect, directional lights positions don't need to be normalized explicitly anymore.
Also changed viewport dimensions passed to render plugins to work with render targets with different dimensions than the screen framebuffer.
And fixed new dependencies in build script.
* Camera is now a base object. PerspectiveCamera should be used instead. Figured out a way to show a warning when misused.
* OrthoCamera is now OrthographicCamera.
* Removed `target` from Camera.
Misc
* Renamed Trident to Axes.
* 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() )
DataTexture can be used in the same places like image / video based Texture (WebGLRenderer-only).
To be used like this:
var width = 64, height = 64, bytes = 3;
var data = new Uint8Array( width * height * bytes );
// fill data array with values 0 .. 255
var texture = DataTexture( data, width, height, THREE.RGBFormat );
texture.needsUpdate = true;
For the moment only UNSIGNED_BYTE type is supported.
- moved 3d-only text parameters from TextPath into TextGeometry
- added safeguard for bevelSize and bevelThickness not affecting shape size if bevel is disabled
- updated text examples as now TextGeometry is not anymore centered
All three classes are now in separate files.
Updated build script.
Fixed runaway globals.
Optimized loops ("in" should be used just for iterating over object properties, for arrays it's slow and also traversal order is not guaranteed).
Cleaned whitespace.
Bit more polished example.
Fixed inverted side faces for fish shape.