- backend: async completion callbacks now take a
backend::AsyncCallStatusargument reporting
whether the operation ran (COMPLETED) or was canceled (CANCELED). Callers chaining work from
a completion callback must check it [⚠️ API Change] - backend: canceling an async call now always invokes its completion callback, with
AsyncCallStatus::CANCELED. Previously the callback was silently dropped - engine: fix picking on PowerVR OpenGL ES drivers that mishandle dynamic uniform-buffer indexing
in fragment shaders [⚠️ Recompile Materials] - engine: support multiple directional lights, opt-in via
Engine::Config::enableMultipleDirectionalLights; the dominant one still provides shadows and
the sun disc, up to 4 additional directional lights are evaluated without shadows [⚠️ New
Material Version] - materials: a second specular lobe can be defined by setting the
secondRoughnessand
secondRoughnessWeightproperties. This can be used to create hazy materials. These properties
require material to declareapiLevel : 2(or greater). - filamat: completely remove the DYN variant bit.[⚠️ Recompile Materials]