Engine Release v0.210 [27.03.17]

Engine Release Notes v0.210

Highlights:

More WebGL 2.0 features: MSAA and Alpha to Coverage.
Refactored and reduced allocations for Events.
Added namespace to query environment and features support of a platform that app is running on.
More features and fixes below in detailed change log.
This release kudos go to some contributors: @H1Gdev, @06wj, @MatthewEdgmon, @AngeloReppucci - keep it coming! :slight_smile:

Change Log:

  • Updated link to examples, now it links to tutorials with sources in README.md.
  • Debug build flag now will compile engine with DEBUG and PROFILE defines.
  • [ADD] (WebGL 2.0) Alpha to Coverage. Material now have alphaToCoverage property to Material. If hardware anti-aliasing in on, limited order-independent transparency can be achieved. It works without alpha blending as well like alphaTest.
  • [ADD] pc.platform namespace to query environment and feature support, such as: android, cocoonjs, desktop, gamepads, ios, mobile, touch, windows, xbox. #886
  • [ADD] RenderTarget constructor is now changed (legacy arguments still will work). It passes arguments as an object, exposing WebGL 2.0 features for MSAA (Multisample Anti-Aliasing). More info in PR #877
  • [ADD] Mat4.transformVec4 allows transforming 4-dimensional vector by a 4x4 matrix.
  • [ADD] In DEBUG will print an error when a RenderTarget is used as a texture.
  • [ADD] Shader.link and Device.setShader return true/false if shader is usable. If DEBUG is enabled will print information on broken material and will use default material on mesh to avoid mesh disappearing.
  • [ADD] pc.skipRenderCamera and pc.skipRenderAfter if in PROFILE, it will instruct forward renderer to skip draw calls after some rendered. This is useful to inspect order of rendering and what is rendered. This is also added to Profiler in Editor.
  • [ADD] Picker.getSelection changed arguments (still supports old way). Now it is top-left coords system (old notation still uses bottom-left coords), just like in normal web. And more simple arguments to avoid object allocation. Thanks to @06wj #883
  • [REFACTOR] Events. Now they avoid allocations in most of cases when particular event stack is not altered during callback, which through tests is about 90% of cases. This reduces allocations and GC in big applications dramatically. More in PR #876
  • Always load VR polyfill for Android if it is enabled in settings (subject to change).
  • [FIX] Reduced amount of useless code in shader code generated for standard material.
  • [FIX] Used wrong cull mode in drawQuadWithShader.
  • [FIX] Clear settings when clearing depth target.
  • [FIX] When rendering lightmaps for specific entities it would clear lightmaps of other entities not within a list of rendered. Thanks to @H1Gdev, #888 and #878
  • [FIX] Small simplification in cubemap resource handler code. Thanks to @H1Gdev, #884
  • [FIX] Prevent double unnecessary Float32Array allocation for skinning texture. Thanks to @06wj, #880
  • [FIX] Mat4.invert bug when determinant is 0 (device by 0). Thanks to @06wj, #882
  • [FIX] Tangent space calculation now prevents division by 0 in few cases with degenerate triangles or bad UV’s. Thanks to @AngeloReppucci, #881
  • [DOCS] Fixes to “description” tag in log.js. Thanks to @MatthewEdgmon, #885