はじめに
リリースから一週間以上経ってしまいましたが、今回もThree.jsのr86のリリースノートを適当にまとめます。
要点
個人的に大きいと思うのはMaterialオブジェクトにonBeforeCompile()コールバックが追加されて、組み込みマテリアルのシェーダーをコンパイル前に修正できるようになり、カスタマイズの自由度が大幅に増したことでしょうか(#11475)。
あと、VRデバイスが接続されているとWebGLRendererが自動的にWebVRCameraを使用するようになったのも、今後のVR対応が期待できて楽しみな感じです(#11548)。
コードの変更点
以下、r86のリリースノートの要約です。
バグフィックス
- Global
- IE11のためにUint8ClampedArrayがない場合はUint8Arrayを使用するようになりました。(#11462)
- Mesh
- updateMorphTargets()がBufferGeometryをサポートするようになりました。(#11285)
- Matrix4
- 視線がupベクトルと並行になる場合にも正しく動作するようになりました。(#11543)
- ObjectLoader
- r85で廃止されたMultiMaterialを処理できるようになりました。 (#11220)
- WebGLRenderer
- setViewport()とsetScissor()がpixelRatioを考慮しない不具合が修正されました。(#11445)
- WebGLRenderer/Shaders
- クアルコムのGPU、Adreno 3XXシリーズ用のワークアラウンドが追加されました。(#9988)
- Fixed equirectangular reflection. #11508 (@NNskelly)
- WebGLRenderer/SpritePlugin
- WebGLRenderer/WebGLState
- CustomBlendingで発生する不具合が修正されました。(#11336)
追加
- Material
- onBeforeCompile()コールバックが追加されました。これにより組み込みマテリアルのシェーダーをコンパイル前に書き換えることができるようになりました。(#11475)
- Object3D
- applyQuaternion()が追加されました。(#11334)
- PolyhedronGeometry
- detailsが0の時はフラットシェーディングされるようになりました。(#11330)
- WebGLRenderer
- GPUに転送後にJS側のindexを解放できるようになりました。(#11412)
- 内部的に使用されていたWebGLRenderListsがrenderListsプロパティとして公開されました。これによりシーンが不要になったときに外部からオブジェクトをdisposeできるようになります。(#11497)
- getDrawingBufferSize()とsetDrawingBufferSize()が追加されました。(#11374)
- WebGLRenderer/Shaders
- displacementMapがmorph normalを考慮するようになりました。(#11271)
- WebGLRenderer/SpritePlugin
- blendingのすべてのパラメータが有効になりました。(#11322)
- onBeforeRender()ハンドラが有効になりました。(#11559)
- WebGLRenderer/WebGLTextures
- mipmap作成前にテクスチャのフィルタのタイプをチェックするようになりました。(#11465)
- WebGLRenderer/WebVRManager
- WebGLRendererがWebVRCameraを持つようになり、VRデバイスが使用されているときには自動的にWebVRCameraを使用するようになりました。(07b0896、b44f037、b60b888、#11548)
変更
- Clock
- stop()を呼び出すとautoStartがfalseに設定されるようになりました。(#11481)
- Object3D
- パフォーマンス向上のためにonBeforeRender()とonAfterRender()がインスタンス変数ではなくメソッドになりました。(#11288)
- SkeletonHelper
- renderループ内でupdate()を呼ぶ必要がなくなりました。(#11411)
- WebGLRenderer
- setViewport()とsetScissor()でyが反転されるようになりました。(43ae8e4、277c706)
- 背景に関係するコードがWebGLBackgroundに移動されました。(9b260d8)
Examples
いろいろと修正されているようですが、とりあえず新しく追加されたサンプルだけ紹介します。
- webgl_animation_keyframes_json
- Colladaのkeyframeと同等のものがJSONで定義できるようになったようです。
- webgl_loader_gltf2
- PBRのサンプルとしてmetal/roughnessを少しずつ変化させた球の見た目を確認できます。(Model:MetalRoughSpheres)
- webgl_camera_array
- ArrayCameraのサンプルが追加されました。
- Loader
- 各種Loaderのサンプルに色々追加があるようです。