Do not use "inactive FPS" if it is higher than "max FPS."
Removed kNet message priority sorting to improve CPU performance when sending a high volume of network messages.
Updated to AngelScript 2.23.1 WIP.
Fixed crash at exit when a script contains an array of Node handles.
Fixed missing sound type enum in the editor. Added Ambient sound type.
Fixed incorrect occlusion when a drawable is set for no occlusion, but the parent octant is occluded.
Removed unnecessary node lookup in network replication.
Added GetScene() to Component for convenience.
Process multiple shadow splits as threaded work items.
Process the first shadow map split without going through the work queue.
Octree query micro-optimizations.
Moved drawable iteration inside the OctreeQuery virtual function.
Removed manual unrolling.
Moved a compare outside the OctreeQuery inner loop.
Fixed crash when point light shadow query was incorrectly threaded.
Use while-loop for all octree query inner loops.
Sort light and shadow batches as separate work items to optimize for large object count.
Explicitly mark changed nodes to avoid going through the whole scene in PrepareNetworkUpdate().
Code cleanup.
Optimized GetBatch() in StaticModel & AnimatedModel by caching the current LOD geometries into a flat array.
Optimized network client smoothing update by unsubscribing from the smoothing event if nothing to do.
Minor optimizations in View.
Reverted earlier shadow split refactoring due to unnecessary shadowcasters being rendered.
Moved the lit base pass check earlier for improved forward rendering performance with large object count.
Removed unnecessary if statement.
Ensure existence of default material by dynamically creating it if necessary.
Minor optimization to View::GetTechnique().
Fixed GLShaderProcessor.
Fixed Camera not properly notified of node transform changes.
Added caching of camera view matrix.