Skip to content

Latest commit

 

History

History
1495 lines (1158 loc) · 64.5 KB

RELEASE_NOTES.md

File metadata and controls

1495 lines (1158 loc) · 64.5 KB

Filament Release Notes log

This file contains one line summaries of commits that are worthy of mentioning in release notes. A new header is inserted each time a tag is created.

Do not edit this file unless you are performing a release or cherry-picking into an rc/ branch. Instead, if you are authoring a PR for the main branch, add your release note to NEW_RELEASE_NOTES.md.

v1.51.7

  • Add new matedit tool
  • filagui: Support rendering GL_TEXTURE_EXTERNAL_OES textures.
  • setFrameScheduledCallback now takes a utils::Invocable.
  • engine: Add isPaused()

v1.51.6

  • Add new matedit tool
  • filagui: Support rendering GL_TEXTURE_EXTERNAL_OES textures.

v1.51.5

v1.51.4

v1.51.3

v1.51.2

  • engine: Add experimental APIs Engine::builder::paused() and Engine::setPaused()

v1.51.1

v1.51.0

  • materials: add support for post-lighting mix factor (b/328498606) [⚠️ New Material Version]

v1.50.6

  • Add new API SwapChain::getFrameScheduledCallback
  • vulkan: fixed validation error VUID-vkAcquireNextImageKHR-semaphore-01779
  • opengl: Add support for protected content swapchains and contexts

v1.50.5

  • android: NDK 26.1.10909125 is used by default
  • android: Minimum API level on Android is now API 21 instead of API 19. This allows the use of OpenGL ES 3.1
  • rendering: New PBR Neutral tone mapper, designed to preserve materials color appearance
  • android: Change default frameRateOptions.interval to 1.0

v1.50.4

v1.50.3

v1.50.2

v1.50.1

  • Metal: fix some shader artifacts by disabling fast math optimizations.
  • backend: remove atan2 overload which had a typo and wasn't useful. Fixes b/320856413.
  • utils: remove usages of SpinLock. Fixes b/321101014.

v1.50.0

  • engine: TAA now supports 4x upscaling [BETA] [⚠️ New Material Version]

v1.49.3

  • matc: Generate stereo variants for FL0 materials [⚠️ Recompile materials]

v1.49.2

v1.49.1

v1.49.0

  • matc: Fix ESSL 1.0 codegen when using external samplers [⚠️ Recompile materials]

v1.48.0

  • matc: New option -1 to disable generation of ESSL 1.0 code in Feature Level 0 materials
  • matc: Support optimizations for ESSL 1.0 code [⚠️ Recompile materials]

v1.47.0

  • engine: Support up to 4 side-by-side stereoscopic eyes, configurable at Engine creation time. See Engine::Config::stereoscopicEyeCount. [⚠️ Recompile Materials]

v1.46.0

  • engine: Allow instantiating Engine at a given feature level via Engine::Builder::featureLevel
  • matc: Enable GL_OES_standard_derivatives extension in ESSL 1.0 shaders
  • matc: Fix code generation of double sided and masked materials in ESSL 1.0 shaders
  • filagui: Add support for feature level 0
  • matc: Add support for post-process materials in feature level 0
  • engine: Add Material::getFeatureLevel()
  • engine: Add missing Material::getReflectionMode() method in Java
  • engine: Support basic usage of post-processing materials on feature level 0
  • engine: Fix critical GLES 2.0 bugs
  • engine: Add FILAMENT_ENABLE_FEATURE_LEVEL_0 build-time option optionally allow building Filament without FL0 support.

v1.45.1

  • engine: Added parameter for configuring JobSystem thread count
  • engine: In Java, introduce Engine.Builder
  • gltfio: fix ubershader index for transmission&volume material
  • engine: New tone mapper: AgXTonemapper.
  • matinfo: Add support for viewing ESSL 1.0 shaders
  • engine: Add Renderer::getClearOptions() [b/243846268]
  • engine: Fix stable shadows (again) when an IBL rotation is used

v1.45.0

  • materials: fix alpha masked materials when MSAA is turned on [⚠️ Recompile materials]
  • materials: better support materials with custom depth [Recompile Materials]
  • engine: fade shadows at shadowFar distance instead of hard cutoff [⚠️ New Material Version]

v1.44.0

  • engine: add support for skinning with more than four bones per vertex.
  • engine: remove BloomOptions::anamorphism which wasn't working well in most cases [API CHANGE]
  • engine: new API to return a Material's supported variants, C++ only (b/297456590)
  • build: fix emscripten-1.3.46 build
  • engine: materials built for feature level 0 can now also be loaded in higher feature levels [⚠️ New Material Version]

v1.43.1

v1.43.0

  • gltfio: Fix possible change of scale sign when decomposing transform matrix for animation
  • engine: Fixes "stable" shadows (see b/299310624)

v1.42.2

  • Fix possible NPE when updating fog options from Java/Kotlin
  • The emissive property was not applied properly to MASKED materials, and could cause dark fringes to appear (recompile materials)
  • Allow glTF materials with transmission/volume extensions to choose their alpha mode instead of forcing MASKED
  • Fix a crash in gltfio when not using ubershaders
  • Use flatmat for mat parameter in jsbinding
  • Fix TextureFlags for sheenRoughnessMap when textures of sheenRoughnessMap and sheenColorMap is same
  • Directional shadows can now be transformed (b/297095805)

v1.42.1

  • Fix potential EXC_BAD_ACCESS with Metal backend: b/297059776
  • setFrameCompletedCallback now takes a backend::CallbackHandler.

v1.42.0

  • engine: add preliminary support for instanced stereoscopic rendering [⚠️ Recompile materials]

v1.41.0

  • backend: fix #6997 : picking can fail on Adreno [⚠️ New Material Version]
  • backend: A partial workaround for PowerVR devices (#5118, b/190221124) [⚠️ Recompile Materials]

v1.40.5

  • backend: Disable timer queries on all Mali GPUs (fixes b/233754398)
  • engine: Add a way to query the validity of most filament objects (see Engine::isValid)
  • opengl: fix b/290388359 : possible crash when shutting down the engine
  • engine: Improve precision of frame time measurement when using emulated TimerQueries
  • backend: Improve frame pacing on Android and Vulkan.
  • backend: workaround b/291140208 (gltf_viewer crashes on Nexus 6P)
  • engine: support setDepthFunc for MaterialInstance
  • web: Added setDepthFunc()/getDepthFunc() to MaterialInstance
  • android: Added setDepthFunc()/getDepthFunc() to MaterialInstance

v1.40.4

  • gltfio: fix crash when compute morph target without material
  • matc: fix buggy variant-filter flag
  • web: Added missing setMat3Parameter()/setMat4Parameter() to MaterialInstance
  • opengl: fix b/290670707 : crash when using the blob cache
  • engine: fix a crash with Material::compile() when a callback is specified

v1.40.3

v1.40.2

  • rendering: dynamic resolution would not work with a translucent render target and quality > low
  • Java/Kotlin: user callbacks were not invoked on successful texture upload

v1.40.1

v1.40.0

  • matc: fix VSM high precision option on mobile [⚠️ Recompile materials]
  • vulkan: support sRGB swap chain
  • Add new getMaxAutomaticInstances() API on Engine to get max supported automatic instances.
  • UiHelper: fix jank when a TextureView is resized (fixes b\282220665)
  • backend: parallel shader compilation support. This breaks and improves the recent Material::compile API.

v1.39.0

  • matc: workaround a bug in spirv-tools causing vsm to fail [⚠️ Recompile materials]

v1.38.0

  • engine: a new feature to set a transform on the global-scale fog [⚠️ Recompile materials]
  • engine: large-scale fog can now be opted-out on a per-renderable basis
  • engine: improve froxelizer resource efficiency [⚠️ Recompile materials]
  • matc: better accounting and validation of used samplers in user materials
  • engine: add support for sampling fog color from a custom texture [⚠️ Recompile materials]
  • vulkan: introduce new custom swapchain API
  • vulkan: new context sharing API

v1.37.0

  • backend: added Platform blob cache APIs, typically used to cache programs [⚠️ Recompile materials]

v1.36.0

  • engine: a local transform can now be supplied for each GPU instance [⚠️ Recompile materials]
  • everything: Add limited support for OpenGL ES 2.0 devices. [⚠️ Recompile Materials]
  • platform: New virtual on OpenGLPlatform to preserve ancillary buffers

v1.35.0

  • materials: Materials can now access up to 4 global vec4 visible by all materials [⚠️ Recompile Materials]

v1.34.0

  • materials: picking is done in float (prepare for ES2) [⚠️ New Material Version]
  • materials: postLightingBlending is now applied before the fog [⚠️ Recompile materials]
  • vulkan: fix adreno optimized material artifacts [⚠️ Recompile Materials]

v1.33.0

  • materials: prepare ES2 support [⚠️ New Material Version]

v1.32.4

  • engine: Add support for constant parameters, which are constants that can be specialized after material compilation.
  • materials: improved size reduction of OpenGL/Metal shaders by ~65% when compiling materials with size optimizations (matc -S) [⚠️ Recompile Materials]
  • engine: fix potential crash on Metal devices with A8X GPU (iPad Air 2) [⚠️ Recompile Materials]
  • opengl: support the external image on macOS

v1.32.3

  • fog: added an option to disable the fog after a certain distance [⚠️ Recompile Materials].
  • fog: fog color now takes exposure and IBL intensity into account [⚠️ Recompile Materials].
  • materials: implement cascades debugging as a post-process [⚠️ Recompile Materials].
  • materials: use 9 digits or less for floats [⚠️ Recompile Materials].
  • gltfio: fix skinning when objects are far from the origin
  • materials: remove 4 unneeded variants from unlit materials [⚠️ Recompile Materials].

v1.32.2

  • lighting: the sun disc was computed in low/medium quality instead of high quality. This will provide performance improvements to mobile devices [⚠️ Recompile Materials]

v1.32.1

v1.32.0

  • fog: fixed fog height falloff and computation precision on mobile [⚠️ Recompile Materials]
  • materials: new alphaToCoverage property can be used to control alpha to coverage behavior
  • materials: added getUserWorldFromWorldMatrix() and getUserWorldPosition() to retrieve the API-level (user) world position in materials. Deprecated getWorldOffset(). [⚠️ Recompile Materials]
  • engine: fix precision issue with shading_view in large scenes
  • vulkan: readPixels is now async (#6560)

v1.31.7

v1.31.6

  • engine: the default render channel is now 2 instead of 0
  • gltfio: Fix crash when a MIME type has no texture provider

v1.31.5

  • gltfio: fix potential early freeing of data provided with ResourceLoader::addResourceData.

v1.31.4

  • engine: fix broken picking [⚠️ Recompile Materials to get the fix]
  • engine: added support for sRGB swapchains. See SwapChain.h
  • bluegl: support Windows32

v1.31.3

  • vulkan: fix memory leak in readPixels
  • engine: added support for draw-commands channels (stronger ordering of commands/renderables)

v1.31.2

v1.31.1

  • gltfio: expose joint inverse bind matrices via method on FilamentInstance
  • filamesh: add error when uv coords size does not match num of vertices. (#6351)

v1.31.0

  • java: fix confusing typo in Camera documentation
  • engine: the output color space can be set on ColorGrading. This API currently has limitations, please refer to the documentation for more details
  • Support for RGTC and BPTC texture compression
  • engine: fix TransformManager high precision mode when using transactions
  • web: added TypeScript definition for Engine.destroy
  • materials: getNormalizedViewportCoord() now returns the logical (i.e. user) viewport normalized position and keeps z reversed [⚠️ Recompile Materials]
  • backend: workaround Adreno shader compiler bug (#6355) [⚠️ Recompile Materials]
  • geometry: change computing tangent basis from normal vector to use Frisvad's method

v1.30.0

  • engine: optimize per-shadow UBO [⚠️ Recompile Materials]
  • engine: fix potential memory corruption with larger scenes
  • engine: VSM's MSAA setting is now per-view instead of per-light [⚠️ API Change]

v1.29.0

  • gltfio: calculate primitive's AABB correctly.
  • gltfio: recompute bounding boxes with morph targets
  • engine: add missing getters on MaterialInstance
  • WebGL: add missing ColorGrading JS bindings
  • engine: improvements/cleanup of Shadow mapping code [⚠️ Recompile Materials]

v1.28.3

  • backend: add support for GGP platform
  • engine: primitives with CullingMode::FRONT_AND_BACK are now skipped.

v1.28.2

  • gltfio: support EXT_meshopt_compression
  • release packaging: fixed location of default IBL file

v1.28.1

  • gltfio: fix reloading crash in ubershader mode
  • Vulkan: improve performance in the readPixels path
  • engine: raise the spot shadows limit to 64, from 14.
  • engine: add experimental support for point light shadows.
  • gltfio: fix ubershader issues with assignment of dummy textures
  • gltfio: material instances and variants are now accessed via FilamentInstance [⚠️ API Change]
  • gltfio: the animator can now only be accessed via FilamentInstance [⚠️ API Change]
  • engine: fix "stable" shadows and make the default cascade splits logarithmic.
  • engine: Add new quality options to EVSM shadows + rendering fixes

v1.28.0

  • engine: LiSPSM is now a user settable option
  • engine: get the morph target buffer to the given primitive
  • Java: Fix TransformManager.getChildren()
  • Metal: newer devices are no longer limited to 16 samplers per Material.
  • gltfio: fix interpretation of occlusion strength
  • engine: minsdk is now 21 instead of 19. This allows the use of OpenGL ES 3.1
  • Vulkan: fix black screen regression

v1.27.2

  • gltfio: punctual lights are now duplicated when adding new asset instances
  • gltfio: FilamentInstance getAsset method now returns an immutable asset
  • gltfio: allow zero-instance assets
  • gltfio: fix regression with meshes that have no material
  • gltfio: fix regression with recomputeBoundingBoxes()
  • filamesh / matinfo: fix minor ASAN issues
  • engine: Added Engine::resetBackendState(), available only in WebGL builds

v1.27.1

  • Java: add methods for TransformManager.getChildCount(), TransformManager.getChildren() and Scene.hasEntity()
  • engine: Fix stencil buffer writes with OpenGL backend.
  • gltfio: add new virtual method to MaterialProvider that all plugins must implement
  • gltfio: add an assert for inconsistent sRGB flags among usages of a particular texture
  • engine: improve scissor documentation
  • backend: scissor is no longer clipped to the viewport (done on filament side)
  • samples: add debug overdraw visualization to gltf_viewer

v1.27.0

  • WebGL: reduce max instance count to work around Chrome issues [⚠️ Recompile Materials]
  • engine: rework material/shader sampler binding code [⚠️ Recompile Materials]
  • gltfio: move the API for recomputeBoundingBoxes [⚠️ API Change]
  • engine: add support for specialization constants [⚠️ Recompile Materials]
  • gltfio: fix spotlight regression
  • gltfio: clear the MaterialInstance cache when creating new instances

v1.26.0

  • engine: new feature level APIs, see Engine::getSupportedFeatureLevel()
  • engine: add new stencil API to View and stencil state APIs to MaterialInstance [NEW API].
  • engine: Fix guard bands and TAA with vertexDomain:Device [⚠️ Recompile Materials]
  • engine: clipSpaceTransform is now only available with vertexDomain:Device [⚠️ API Change]
  • gltfio: add unified AssetLoader::createAsset() method [⚠️ API Change]
  • gltfio: all assets are now "instanced" [⚠️ API Change]

v1.25.6

  • engine: Add CONFIG_MINSPEC_UBO_SIZE as a nicer way to allow exceeding the ES3.0 minspec.
  • gltfio: minor efficiency improvement for Android and WebGL builds.
  • gltfio: add support for concurrent texture downloading and decoding.

v1.25.5

  • WebGL: upgraded the JS bindings to work with emsdk 3.1.15
  • WebGL: added missing IBL builder to TypeScript annotations
  • engine: Fix incorrect precision restoration when computing accurate world translations
  • engine: make MaterialInstance public API friendly to std::string_view parameters
  • gltfio: add 'detach' methods to allow ownership transfer of entities and components

v1.25.4

  • backend: streamline texture upload APIs [⚠️ API Change]

v1.25.3

  • engine: Fix Adreno gpu crash introduced by gpu morph target change
  • engine: Add optional memory configuration parameters to Engine initialization

v1.25.2

  • engine: Camera::getNear() and Camera::getCullingFar() now return doubles
  • Metal: implement scissor support.
  • engine: Renderer::getUserTime() now returns seconds as documented (#5722) [⚠️ API Fix]

v1.25.1

  • engine: add support for automatic instancing. Must be enabled with Engine::setAutomaticInstancingEnabled(bool)

v1.25.0

  • Vulkan: smol-v blobs are now 8-byte aligned within the filamat archive. [⚠️ Recompile Materials]
  • backend: added support for EGL on linux (headless)
  • uberz tool: add --append and --template arguments.
  • matc tool: add --template argument.

v1.24.0

  • ImGuiHelper: add support for Y flip.
  • Metal: ignore MTLTexture formatting when importing external textures.
  • materials: add a new instanced material parameter that is now mandatory in order to call getInstanceIndex()
  • gltfio: UbershaderProvider now takes the ubershader archive in its constructor [⚠️ API Change]
  • gltfio: Fix morphing with sparse accessors.
  • gltfio: Fix models that use signed integers for morphing.
  • engine: Documentation improvements regarding SkinningBuffer and fix an off-by-one assert when setting a SkinningBuffer.
  • picking is now exposed to JavaScript
  • gltf_viewer: Exercise picking functionality.
  • OpenGL: add WebGL support for ReadPixels
  • Vulkan: add assert and error message for OOM (debug builds)
  • Vulkan: fix crash with picking and 2-component ReadPixels.
  • backend: workaround broken GLES timer query on some Mali-Gxx old drivers
  • backend: revert c049a1 & reenable b2cdf9 ("don't issue a flush systematically after framegraph's execute")
  • gltfio: namespace now lives under Filament [⚠️ API Change]
  • gltfio: UbershaderLoader renamed to UbershaderProvider [⚠️ API Change]
  • gltfio: MaterialGenerator renamed to JitShaderProvider [⚠️ API Change]

v1.23.2

  • gltfio: Fix morphing for un-packed accessors.
  • gltfio: Ubershaders are now packaged into flexible archives.
  • gltfio: Remove poorly maintained lite flavor.
  • engine: Disable user scissor while rendering the Shadow Maps.
  • engine: Merge identical backend RenderPrimitives together.
  • engine: Improve ResourceAllocator performance a bit by reserving 128 cache entries.
  • utils: Remove std::hash<T> definitions for libutils types. Use T::Hasher explicitly instead. [⚠️ API Change]
  • backend: Fix WGL context attributes.
  • Metal: Fix potential invalid shaders when using gltfio in Ubershader mode. [⚠️ Recompile Materials to get the fix]

v1.23.1

  • gltfio: support skinning with bones that do not belong to any scene.
  • gltfio: add attachSkin / detachSkin method to FilamentAsset.
  • gltfio: ubershader mode: set sheen to OPAQUE.
  • Metal: fix issues seen with dynamic resolution on M1 Macs.
  • engine: add a "global" mode for render primitive's blendOrder.
  • engine: remove RenderManager::setGeometryAt(index, count). [⚠️ API Change]
  • engine: fix overallocation by about 17MB.
  • WebGL: Add JS bindings for Texture class methods.

v1.23.0

  • engine: Changed UBOs layout [⚠️ Material breakage].
  • engine: Normals on morphed models have been fixed (core Filament change).
  • Java: View has several minor changes due to generated code, such as field ordering.
  • gltfio: Fix crash when reloading glTF assets.
  • gltfio: introduce cross-fade animation API [NEW API].

v1.22.2

  • Java: Minor API change: rename ssctStartTraceDistance to ssctShadowDistance. [⚠️ API Change]
  • Java: Minor API change: rename blendingMode to blendMode. [⚠️ API Change]
  • engine: Fix some memory leaks.

v1.22.1

  • Metal: Shaders now use half floating-point arithmetic when possible for improved performance. [⚠️ Recompile Materials]
  • engine: add support for presentation time in Renderer
  • engine: added guard bands support for screen-space effects
  • gltfio: Add multi-scene support.
  • gltfio: Various glTF-related cleanup and enhancements.
  • gltfio: Add support for KHR_texture_basisu.

v1.22.0

  • engine: Changed UBOs layout [⚠️ Material breakage].
  • engine: Improve effects relying on mipmapping
  • engine: Fix assert seen with VSM shadows.
  • WebGL: Fix isTextureFormatSupported for ETC2 formats.

v1.21.3

  • Java: Renamed the KTXLoader Kotlin class to KTX1Loader. [⚠️ API Change].
  • libs: Added Ktx2Reader and BasisEncoder to support Basis-encoded KTX2 files.
  • engine: Remove deprecated Stream APIs, see Texture::import() for an alternative [⚠️ API Change].
  • tools: Removed KTX1 compression support from mipgen. [⚠️ API Change].
  • tools: Added support for KTX2 to mipgen.
  • gltfio: Added resetBoneMatrices() method.
  • gltfio: Introduced TextureProvider interface. [⚠️ API Change].
  • gltfio: Fix progress indicator when error occurs.
  • samples: Desktop and Web Suzanne samples now use KTX2 instead of KTX1.
  • samples: Fix regression with sample-gltf-viewer and zip files.

v1.21.2

  • Java: Add Java binding to get skins in FilamentAsset.
  • libs: Add libs/ktxreader [⚠️ API Change].
  • mipgen: fixups / clarification regarding sRGB.
  • WebGL: fix intermittent 'detached ArrayBuffer' errors.

v1.21.1

  • engine: Allow both screen-space refraction and screen-space reflections on the same object [⚠️ Material breakage].
  • engine: Optimizations for screen-space reflections.
  • engine: Remove Viewport::scale() [⚠️ API Change].
  • engine: Fix 12x overallocation of memory in MorphTargetBuffer.
  • Metal: Fix validation error when reading from default SwapChain.

v1.21.0

  • engine: OpenGL performance improvements with some drivers.
  • engine: Fix incorrect shadows with some custom projection matrices.
  • engine: Fix low frame rates seen with a lot of morph targets.
  • gltfio: Add support for KHR_materials_variants.
  • gltfio: Add support for KHR_materials_emissive_strength.
  • gltfio: Java now exposes morph target names as an array for consistency [⚠️ API Change].

v1.20.5

  • engine: New behavior for MASKED to work with translucent views. [⚠️ Recompile Materials to get the fix]
  • engine: Fix screen-space reflections when post-processing and MSAA are off.
  • engine: Update MAX_MORPH_TARGETS constant to 256.
  • engine: Fix point light lighting with ortho projection.
  • libs: BlueGL symbols are now prefixed with bluegl on all platforms.
  • gltfio: Add skinning getters to FilamentAsset.

v1.20.4

  • gltfio: Java clients must now destroy the MaterialProvider [⚠️ API Change].
  • gltfio: Fix, bone pose not applied if glTF model doesn't have animations.
  • libs: Added math::quat::fromDirectedRotation [NEW API].
  • WebGL: Restore GL state when frame ends.

v1.20.3

  • Java: Fix URI bug in Android Viewer sample when dropping some zips.
  • Vulkan: Fix "uninitialized texture" warnings from the Vulkan backend.

v1.20.2

  • engine: Binary size optimizations.
  • engine: Fix, Mat4 from Quaternion was transposed.
  • Vulkan: Internal bug fixes and robustness improvements.
  • Vulkan: Reduced log spam.

v1.20.1

  • engine: Binary size improvements.
  • engine: Add basic support for instanced renderables [NEW API].
  • engine: Fix, first imaged passsed to Stream::SetAcquiredImage is ignored and leaked.
  • Vulkan: Robustness improvements.
  • Java: Fix, lookAt z axis negated.
  • gltfio: Be graceful when model has > 4 weights per vert.

v1.20.0

  • engine: Support rough screen-space reflections [⚠️ Material breakage].
  • engine: Added Scene::forEach API to iterate through a scene's entities.
  • engine: Fix incorrect normals with skinned models.
  • Vulkan: Fix segfault during shutdown.
  • WebGL: Support web apps that have multiple FilamentViewers.
  • gltfio: Performance enhancements when loading models.

v1.19.0

  • engine: Support 256 morph targets.
  • engine: Screen-space reflection improvements.
  • engine: Morphing improvements and bug fixes.
  • gltfio: Generate morphing normals when they are missing.
  • gltfio: Support material extras.
  • Java: Add bindings for new morphing API.
  • Vulkan: Fix segfault on macOS.

v1.18.0

  • engine: Add support separate samplers in fragment and vertex shaders [⚠️ Material breakage].
  • engine: Support legacy morphing mode with vertex attributes.
  • engine: Allow more flexible quality settings for the ColorGrading LUT.
  • engine: Improve screen-space reflections quality and allow reflections and refractions together.
  • Vulkan: Bug fixes and improvements.

v1.17.0

  • engine: Add experimental glossy screen-space reflections.
  • engine: Add support for GPU morphing and 128 morph targets.
  • engine: Fix crash with non-shadow receiving renderables and VSM.
  • engine: Bring back the 3x3 filter for PCF shadows.
  • engine: Correct AABB calculation for skinned glTF models.

v1.16.1

  • engine: Added line/triangle strip support.

v1.16.0

  • engine: Fixes skinning calculations (#4887) [⚠️ Material breakage].
  • engine: Add support for the glTF extension KHR_materials_emissive_strength.
  • engine: Improvements and fixes to skinning calculations.
  • engine: Fix debug checks for compressed textures.
  • Metal: Fix readPixels when dimensions are greater than the render target's.

v1.15.2

  • engine: Add support for PCSS (Percentage Closer Soft Shadows).
  • engine: Fix spotlight shadow bias.
  • samples: Avoid leaking IBLs in Android sample-gltf-viewer.
  • libs: Fix libibl on mobile.

v1.15.1

  • engine: add support for DPCF (PCF shadows with contact hardening).
  • engine: add support for Wayland and Vulkan.
  • engine: Fade lights out when close to light far plane.
  • Java: Add missing Engine#destroySkinningBuffer method.

v1.15.0

  • engine: Fix spotlights normal bias calculation [⚠️ Material breakage].
  • libimage: Fix loading spherical harmonics on certain locals.

v1.14.2

  • Metal: Fix validation error when rendering to RenderTarget without depth attachment.
  • engine: Fix rendering glitch with zero-scale bone transforms.

v1.14.1

  • engine: Improvements to shadowing.

v1.14.0

  • engine: Internal materials can use structures as parameters [⚠️ Material breakage].
  • engine: readPixels on a SwapChain must be called within beginFrame / endFrame [⚠️ API Change].
  • engine: Fix normal bias and improve spotlight quality.
  • Java: Fix shadow biases.

v1.13.0

  • Android: Gradle configuration caching is now enabled.
  • Android: Filament's Gradle properties have all been renamed to com.google.android.filament.xxx where xxx is the property name. See android/build.gradle for a complete list [⚠️]
  • Android: The Gradle property filament_tools_dir (now called com.google.android.filament.tools-dir) does not have a default value anymore. Please specify one in your gradle.properties if you reuse the Gradle plugin in your projects [⚠️]
  • engine: Fix spotlights direction and falloff [⚠️ Material breakage].
  • engine: Improvements to VSM and spotlight shadows.

v1.12.11

  • Metal: Color grading performance improvement on M1 devices.
  • samples: Fix glitchy animation seen in gltf-viewer iOS sample.

v1.12.10

  • engine: rewrite dynamic resolution scaling controller for better accuracy and less jittering.
  • Java: fix missing ASTC texture enum.
  • tools: Fix normal map issues in mipgen.
  • WebGL: expose some SurfaceOrientation functions.

v1.12.9

  • engine: New API: MultiSampleAntiAliasingOptions and HDR-aware MSAA resolve. When customResolve is enabled, improves anti-aliasing quality [NEW API].
  • engine: Fixes and improvements for FSR.
  • engine: All APIs that take a callback as argument now also take a CallbackHandler*, a new interface that provides more flexibility around callback dispatch [NEW API].
  • Android: Fix JNI bindings for DepthOfFieldOptions.
  • Android: workarounds for Adreno-specific fraembuffer issue.
  • JavaScript: updates to JS bindings.

v1.12.8

  • engine: Added picking API to View [⚠️ Materials need to be rebuilt to access this new feature].
  • engine: A new Engine::pumpMessageQueues() method can be used to trigger all pending user callbacks right away [NEW API].
  • engine: new inline helpers to more easily use lambdas, functors and method callbacks with {Pixel}BufferDescriptor.
  • Vulkan: fix vertical offset for readPixels.
  • Vulkan: various internal improvements.
  • Metal: support integer formats with readPixels.

v1.12.7

  • engine: Fix, apply emissive after shadowing.

v1.12.6

  • engine: Added concept of lod bias to materials. [⚠️ Materials need to be rebuilt to access this new feature].
  • engine: Fix, BGRA ordering respected for external images with OpenGL on iOS.
  • engine: Use more sensible defaults for spot light inner outer cone angles.
  • engine: Fix potential race condition that caused stalls in endFrame.
  • gltfio: Improved handling of transparent materials.
  • Metal: Fix potential crash on earlier versions of iOS (<= 13.0).
  • Android: Fix filament-utils-android 'lite' flavor.
  • Java: Fix potential crash with IBLPrefilter.

v1.12.5

  • engine: work around a job scheduling issue in endFrame that caused stuttering on some Android devices.

v1.12.4

  • engine: New night adaptation API on ColorGrading. This API can be used to create an effect that that simulates color and brightness shifts in human vision in low-light conditions.
  • engine: improved performance of AMD FidelityFX FSR1 by 4.6x, it now runs in about 2ms in 4K.
  • engine: Dynamic resolution quality MEDIUM, HIGH and ULTRA now all use AMD FidelityFX FSR1.
  • engine: Fix crash when duplicating material instances.
  • gltfio: generate tangents if requested by the material.

v1.12.3

  • engine: Support AMD FidelityFX Super Resolution for dynamic resolution scaling

v1.12.2

  • engine: New API on ColorGrading to enable or disable gamut mapping at will [New API].
  • engine: Fix typo causing ShadowOptions::shadowFar to not work properly.
  • engine: Fix, CSM glitch when using shadowMultiplier materials.
  • engine: Improve precision when computing camera projection.
  • engine: Increase the number of supported spot shadows to 14 (from 6).
  • Metal: Add texture swizzling support for external textures.

v1.12.1

  • engine: double precision translation support in TransformManager. Disabled by default. Augment model (and view) matrix on Camera to accept double precision matrices. When enabled, double precision translations allow filament to handle a very large world space [New API].
  • engine: Fix, Views with custom render targets are now blendable.

v1.12.0

  • engine: Option to automatically compute bent normals from SSAO & apply to specular AO [⚠️ Material breakage].
  • engine: New APIs: Light channels. Geometry and lights now have a channel associated to them, at least one channel must match for lighting to occur [⚠️ Material breakage].
  • engine: Fix potential GPU crash with punctual lights near the far clipping plane.
  • materials: The inverseTonemap API is now an exact inverse of the Filmic tonemapper.
  • Metal: Better support for texture formats on M1 Macs.

v1.11.2

  • engine: New API: ColorGrading::Builder::toneMapper(const ToneMapper*).
  • engine: New tone mapper: GenericToneMapper, a configurable tone mapper.
  • engine: ColorGrading::Builder::toneMapping(ColorGrading::ToneMapping) is now deprecated.
  • engine: Removed REINHARD tonemap operator[⚠️ API Change].
  • engine: Improve s3tc_srgb detection on desktop.
  • engine: Add bilateral threshold in SSAO options.
  • gltfio: Fix AssetLoader leak, remove unwanted destructor.
  • Metal/Vulkan: Fix uploading texture data with padding or offset.
  • Metal: fix GPU crash seen with large amounts of geometry.

v1.11.1

  • engine: Luminance scaling can now be used with any tone mapping operator. It was previously tied to the "EVILS" tone mapping operator.
  • engine: Removed the "EVILS" tone mapping operator [⚠️ API Change].
  • engine: Improvements to Skinning. A new SkinningBuffer API allows bone sharing between renderables.
  • engine: Improvements to internal memory allocation for Metal and Vulkan backends.
  • engine: Default to OpenGL backend when Windows does not support Vulkan.
  • samples: Add new sample app: image_viewer.

v1.11.0

  • engine: Added support for transparent shadows. Add transparentShadow : true in the material file.
  • engine: honor user-defined precision in material files for non-samplers, rename SamplerPrecision to ParameterPrecicion. [⚠️ API Change]
  • engine: Work around Qualcomm issue with point lights.
  • engine: Allow MSAA when post-processing is disabled.
  • engine: enable up to 6 spot-light shadows.
  • gltfio: Added support for KHR_materials_volume.
  • gltfio: fix precision in KHR_texture_transform.
  • java: Removed support for Java desktop targets (macOS, Linux, and Windows) [⚠️ API Change].

v1.10.7

  • engine: Spot-light position calculation moved to fragment shader.
  • engine: Small shadow mapping fixes and improvements.
  • gltfio: Add fast path for native material providers.
  • gltfio: Allow Java / Kotlin clients to customize MaterialProvider.
  • engine: Fix out of bounds access with RenderTarget java bindings.
  • Metal: TextureFormat::DEPTH24_STENCIL8 now maps to a 32 bit depth format on iOS.

v1.10.6

  • engine: Use exponential VSM and improve VSM user settings [⚠️ Recompile Materials for VSM].
  • engine: Optional blurring of VSM shadowmaps.
  • engine: Fix a crash when using lens flares.
  • engine: Fix backend crashes when using an unsupported sample count.
  • gltfio: Add new getAssetAPI to FilamentInstance.
  • gltfio: Introduce support for extras strings.
  • OpenGL: Increase OpenGL backend handle arena from 2 to 4 MiB.
  • Vulkan: Fix Texture swizzle support.

v1.10.5

  • android: AAR libraries now properly include their ProGuard rules.
  • engine: User materials can now provide custom lighting/surface shading, please consult the materials documentation for details.
  • engine: Backend::DEFAULT now selects the most appropriate backend for the platform, rather than always OPENGL. On Android the default is OPENGL, on Apple platforms the default is METAL and on all other platforms that default is VULKAN.
  • engine: Fix a potential memory corruption when using more than 4 render targets.
  • engine: Fix a possible crash when bloom is enabled.
  • engine: Fix and refactor support for S3TC + SRGB with OpenGL.
  • engine: Fix automatic clearing of rendertargets.
  • engine: Fix imported render target discard and clear flags.
  • engine: Fix opaque blit with imported render targets.

v1.10.4

  • engine: improvements to internal job system.
  • Vulkan: performance improvements on Mali.
  • gltfio: improvements to load time for large models.
  • WebGL: remove bogus stride argument, fix BindingType TypeScript definition.

v1.10.3

  • android: use debug.filament.backend system property to select the desired backend.
  • engine: fix LightManager::getFalloff.
  • gltfio: fix crash with non-triangles.
  • macOS: fix main thread checker warnings with OpenGL.
  • vulkan: fix crash on Windows machines with NVIDIA GPUs.

v1.10.2

  • Vulkan: validation and diagnostic improvements
  • engine: improvements for scenes with many renderables.
  • gltfio: added support for KHR_materials_ior.
  • java: Add bindings for IBLPrefilterContext.
  • java: add KTXLoader.getSphericalHarmonics JNI binding
  • libimage: fix, respect sRGB option for compressed formats.
  • sample-gltf-viewer: fix lifetime cycle for RemoteServer.

v1.10.1

  • engine: Add getPlatform API to Engine.
  • engine: Add a new cone angles API to LightManager.
  • engine: Attachments of custom RendereTargets are not systematically discarded.
  • engine: Fix a crash when using custom rendertargets.
  • engine: New API to duplicate a MaterialInstance.
  • filagui: fix support for custom images in ImGuiHelper.
  • java: Add bindings for HDRLoader.

v1.10.0

  • engine: User materials can now use 9 samplers instead of 8 [⚠️ Material breakage].
  • engine: Remove populateTangentQuaternions [⚠️ API change].
  • engine: Deprecate Stream::Builder::stream(intptr_t) [⚠️ API Change].
  • engine: Remove deprecated APIs: Camera::setScaling, Engine::destroy(Camera*), Engine::createCamera, Renderer::beginFrame(SwapChain*, uint64_t, backend::FrameScheduledCallback, void*), and View::setShadowsEnabled [⚠️ API Change].
  • engine: Remove focusDistance from View::BloomOptions [⚠️ API Change].
  • engine: Add a FILAMENT_SUPPORTS_OPENGL CMake option to enable/disable OpenGL support.
  • Vulkan: fixes and improvements for large scenes.
  • gltfio: fix morphing bugs uncovered by MorphStressTest.
  • Java: add API for Texture::Builder::import().
  • WebGL: Fix a potential INVALID_OPERATION.

v1.9.25

  • NEW API: Screen-space lens flare effect.
  • engine: Fix several memory leaks in the GL backend.
  • Vulkan: General bug fixes and improvements.
  • Vulkan: Fix some problems seen on Mali devices.
  • ios: Fix VSM shadows not working.
  • webgl: Fix black screen seen with some samples.

v1.9.24

  • engine: Fix memory leaks in OpenGL driver.
  • engine: new experimental tone mapper, EVILS (name will most likely change).
  • engine: Improvements to Vulkan backend.
  • engine: Fix incorrect units documented for LightManager.getIntensity.
  • engine: fix high quality upsampling for SSAO.
  • engine: implement accurate normal reconstruction for SSAO.
  • engine: improve LOW and HIGH quality levels for SSAO.
  • libs: improvements to libiblprefilter.
  • materials: New quality property.
  • samples: Add new gltf-viewer iOS sample.
  • samples: clear the background in lightbulb sample.

v1.9.23

  • Vulkan: various fixes.
  • android: fix crash seen using VSM with MSAA on Adreno devices.
  • engine: Add Engine::getEntityManager().
  • engine: Fix desktop crash seen with some GPU drivers.
  • engine: improve importance sampling.
  • gltfio: robustness improvements for Draco meshes.
  • libs: Add new Transcoder API for C++ clients (part of libgeometry).
  • libs: New iblprefilter library to compute IBL pre-integration on the GPU using filament.
  • materials: Fix documentation for getNormalizedViewportCoord.
  • samples: fix rendertarget sample crash on launch.

v1.9.22

  • NEW API: Renderer::renderStandaloneView() is a new method that can be used outside of beginFrame/endFrame on Views that have a RenderTarget associated. This can be used as a pseudo-compute API.
  • Vulkan: bug fixes and improvements.
  • engine: RenderTarget API can now use MRT.
  • sample-gltf-viewer: improvements for reading zip files.
  • sample-gltf-viewer: enable contact-shadows functionality in mobile gltf-viewer.
  • windows: fix build error in filament_framegraph_test.

v1.9.21

  • JavaScript: add missing TextureSampler bindings.
  • Metal: Fix texture swizzling crash with older Nvidia GPUs.
  • Vulkan: fix image layout validation error on Android.
  • android: fix MSAA w/ multisampled_render_to_texture on Mali.
  • engine: better anisotropic filtering with various drivers.
  • gltfio: Use BufferObject API, simplify MorphHelper.
  • gltfio: honor stride in normalizeSkinningWeights.
  • samples: Add web component demo.

v1.9.20

  • Android: Fix VSM.
  • engine: Introduce BufferObject API.
  • engine: Add new isTextureSwizzleSupported API on Texture.
  • engine: Add support to Metal and Vulkan backends for texture swizzling.
  • engine: Add new DoF settings (native/half res, gather kernel ring counts, CoC radius clamp).
  • engine: DoF quality and performance improvements.
  • engine: Fix high-quality upsampling issue with SSAO.
  • Java: Expose TransformManager.getParent(int).
  • samples: Add Metal and Vulkan backend support to Suzanne sample.
  • WebGL: expose fitIntoUnitCube to JS.
  • WebGL: support for multiple <canvas> elements.

v1.9.19

  • engine: Fix Metal bug when setGeometryAt is called multiple times.
  • engine: Improvements to DoF.
  • engine: Fix RenderTarget NPE when depth is not present.
  • engine: Improvements to Camera APIs. Move focus distance from DofOptions to Camera.
  • engine: VSM shadows now support shadowMultiplier.
  • java: Expose several MaterialInstance APIs (setColorWrite, setDepthWrite, setDepthCulling) that should have been public.
  • java: fix bug with Texture::setImage buffer size calculation.

v1.9.18

  • engine: Fix a DoF bug that caused black dots around the fast tiles.
  • engine: Minor DoF optimizations.
  • engine: Fix blanking windows not being drawn into on macOS.
  • gltfio: Add support for data:// in image URI's.
  • gltfio: Add internal MorphHelper, enable up to 255 targets.
  • engine: Fix a hang in JobSystem.
  • samples: Fix rendertarget sample app.

v1.9.17

  • engine: New shift parameter on Camera to translate the viewport and emulate a tilt/shift lens.
  • engine: Camera::setCustomProjection() now allows to set a different projection for culling and rendering.
  • engine: Fixed depth of field rendering with custom projection matrices.
  • engine: Fix a rare indefinite hang.
  • gltfio: SimpleViewer now exposes more rendering parameters, including ColorGrading.
  • gltfio: Fix tangents when morphing is enabled.
  • Metal/Vulkan: fix incorrect dominant light shadows rendering.
  • Fixe some issues with imported rendertargets.

v1.9.16

gltfio: Add ResourceLoader evict API. gltfio: Fix ResourceLoader cache bug. iOS: Disable exceptions to reduce binary size.

v1.9.15

  • filamat/matc: fix sporadic crash.

v1.9.14

  • Improve bloom/emissive with glTF files.
  • Publicly expose Exposure API for gltfio.

v1.9.13

  • Android: fix "No implementation found" error.
  • Android: fix compilation error in UbershaderLoader.
  • engine: computeDataSize now returns correct value for USHORT_565.
  • Vulkan: various internal improvements.

v1.9.12

  • engine: Fixed GL errors seen with MSAA on WebGL. Warning: this can affect multisampling behavior on devices that do not support OpenGL ES 3.1
  • materials: Added new getVertexIndex() API for vertex shaders.
  • samples: RenderTarget demo now disables post-processing in offscreen view and creates depth attachment.
  • gltfio: Fix, animation jolt when time delta is very small.

v1.9.11

  • Added support for Apple silicon Macs. build.sh can now be used to build on either Apple silicon or Intel-based Macs. Pass the -l flag to build universal binaries.
  • Added sheenColor and sheenRoughness properties to materials to create cloth/fabric.
  • Materials generation using libfilamat is now multi-threaded.
  • MaterialBuilder::build() now expects a reference to a JobSystem to multi-thread shaders generation. A JobSystem can be obtained with Engine::getJobSystem() when using Filament, or created directly otherwise. (⚠️ API change)
  • Add planar reflection RenderTarget demo.
  • Metal: honor inverseFrontFaces RasterState.
  • Metal: Fix crash when switching between views with shadowing enabled.
  • Metal: Fix crash when calling Texture::setImage() on SAMPLER_2D_ARRAY texture.
  • gltfio: added support for KHR_materials_sheen.
  • gltfio: shader optimizations are now disabled by default, unless opting in or using ubershaders.
  • gltfio: Fix "_maskThreshold not found" error.
  • gltfio on Java: fix potential memory leak in AssetLoader#destroy.
  • gltfio: fix crash during async texture decode.
  • gltfio: support animation in dynamically-added instances.
  • gltfio: Improve robustness when decoding textures.
  • gltfio: Fix animator crash for orphaned nodes.
  • gltfio: fix tangents with morphing.
  • gltf_viewer: fix very sporadic crash when exiting.
  • gltf_viewer: fix crash when rapidly switching between glTF models.
  • WebGL: Fix samples erroring on Windows with Chrome.
  • WebGL: Support highlight for setBloomOptions in JavaScript.
  • WebGL: Include TypeScript bindings in releases.
  • engine: Fix, punctual lights get clipped at certain angles.
  • engine: Fix memory leak when calling View::setViewport frequently.
  • engine: Fix, materials not working on some Qualcomm devices.
  • engine: Modulate emissive by alpha on blended objects.
  • engine: Fix, RenderTarget cleared multiple times.
  • Java: Fix JNI bindings for color grading.
  • Android: reduced binary size.

v1.9.10

  • Introduce libibl_lite library.
  • engine: Fix EXC_BAD_INSTRUCTION seen when using headless SwapChains on macOS with OpenGL.
  • engine: Add new callback API to SwapChain.
  • engine: Fix SwiftShader crash when using an IBL without a reflections texture.
  • filamat: Shrink internal Skybox material size.
  • filamat: improvements to generated material size.
  • filamat: silence spirv-opt warnings in release builds.
  • matc: Add fog variant filter.
  • matc: Fix crash when building mobile materials.
  • math: reduce template bloat for matrices.

v1.9.9

  • Vulkan: internal robustness improvements.
  • Metal: Support CVPixelBuffer SwapChains.
  • Metal: Support copyFrame.
  • Fix clear behavior with RenderTarget API.
  • Fix GetRefractionMode JNI binding.
  • Additional fixes for Fence bug.

v1.9.8

  • Fix a few Fence-related bugs
  • gltfio: add createInstance() to AssetLoader.
  • gltfio: fix ASAN issue when consuming invalid animation.
  • gltfio: do not segfault on invalid primitives.
  • gltfio: add safety checks to getAnimator.
  • gltfio: fix segfault when consuming invalid file.
  • Vulkan: various internal refactoring and improvements
  • mathio: add ostream operator for quaternions.
  • Fix color grading not applied when dithering is off.

v1.9.7

  • Vulkan: improvements to the ReadPixels implementation.
  • Vulkan: warn instead of panic for sampler overflow.
  • Vulkan: fix leak with headless swap chain.
  • PlatformVkLinux now supports all combos of XLIB and XCB.
  • Fix TypeScript binding for TextureUsage.

v1.9.6

  • Added View::setVsmShadowOptions (experimental)
  • Add anisotropic shadow map sampling with VSM (experimental)
  • matc: fixed bug where some compilation failures still exited with code 0
  • Vulkan + Android: fix build break
  • Add optional XCB support to PlatformVkLinux
  • Fix Vulkan black screen on Windows with NVIDIA hardware

v1.9.5

  • Added a new Live Wallpaper Android sample
  • UiHelper now supports managing a SurfaceHolder
  • Fix: an internal texture resource was never destroyed
  • Fix: hang on 2-CPU machines
  • Fix: Vulkan crash when using shadow cascades
  • Linux fixes for headless SwiftShader
  • Fix null pointer dereference in FIndirectLight
  • Fix Windows build by avoiding nested initializers
  • Vulkan: support readPixels and headless swap chains
  • VSM improvements

v1.9.4

  • Add screen space cone tracing (SSCT)
  • Improvements to VSM shadow quality
  • New ShadowOptions control to render Variance Shadow Maps (VSM) with MSAA (experimental)
  • Improvements and fixes to screen-space ambient occlusion
  • gltf_viewer: add --headless option
  • gltf_viewer: Add new automation UI and functionality

v1.9.3

  • engine: Added new APIs to enable/disable screen space refraction
  • engine: Fix, flip the shading normal when det < 0.
  • gltfio: Fix animation by clamping the per-channel interpolant.
  • gltfio: add async cancellation API
  • gltfio: Fix "uniform not found" errors.
  • gltfio: Disable clear coat layer IOR change in glTF files (#3104)
  • Vulkan: fix final image barrier used for swap chain.
  • matdbg: Various improvements
  • JavaScript bindings: fix TextureUsage bitmask.
  • cmgen / mipgen: add opt-in for ASTC / ETC support.

v1.9.2

  • Fixes / improvements for contact shadows, fog, and DOF
  • Reduce SSAO creases caused by geometry tessellation
  • Fix compilation warnings and issue with Clang 12
  • Fix JNI crashes
  • Rename .blurScale to .cocScale in DOF options

v1.9.1

  • Improvements to SSAO quality
  • Fix unoptimized shader crashes with certain OpenGL drivers
  • Add float versions of math constants to libmath
  • filament-utils: fix, CoroutineScope job should be canceled before destroy

v1.9.0

  • MASKED mode now leaves destination alpha intact (useful for transparent targets).
  • MASKED mode now benefit from smoothing in unlit materials.
  • Small performance improvement to FXAA.
  • Fixed KHR_materials_transmission to use the FADE blending mode.
  • Fixed frame graph crash when more than 32 stages were required.
  • Fixed several memory leaks in gltfio and the JavaScript bindings.
  • Fixed several platform-specific Vulkan bugs and crashes.
  • Temporal Anti-Aliasing (TAA) is now available as a complement to MSAA and FXAA. It can be turned on and controlled using View.setTemporalAntiAliasingOptions().
  • Added texture getters to Skybox and IndirectLight (C++, Java, JavaScript).
  • Added APIs to create 3D textures and 2D texture arrays.
  • Internal buffers can now be sized at compile times for applications that render very large numbers of objects.
  • View.setAmbientOcclusion() is deprecated in favor of View.setAmbientOcclusionOptions (⚠️ API change).
  • Switched to C++17.
  • Variance Shadow Mapping (VSM) is now available as an alternative to PCF shadows (experimental).
  • Reduced compiled material sizes by removing unnecessary variants.
  • Many improvement and fixes in the Vulkan backend.
  • Many improvement and fixes in the Metal backend.
  • Fixed translucent views with custom render targets.
  • Improved MSAA implementation compatibility on Android devices.
  • Use "reverse-z" for the depth buffer.
  • Added a way to create an Engine asynchronously.
  • Highlights are now more stable under depth of field.
  • New option to compress highlights before bloom.
  • Improvements and fixes to SSAO and DOF.

v1.8.1

  • New CocoaPods sample for iOS.
  • Filament for iOS now supports iOS 11.
  • Updated the Emscripten SDK to 1.39.19.
  • Fixed skinning issue with Emscripten.
  • JavaScript APIs for color grading and the vignette effect.
  • Added various missing APIs to Java and JavaScript bindings.
  • Fixed camera aspect ratio when loading a camera from a glTF file.
  • gltfio now uses specular anti-aliasing by default.
  • gltfio now supports the KHR_materials_transmission extension.
  • Compiled materials do not perform unnecessary fp32 operations anymore.
  • Improved quality and performance of the depth of field effect.
  • Fixed transform hierarchy memory corruption when a node is set to be parentless.
  • Fixed crashed in some browsers and on some mobile devices caused by Google-style line directives in shaders.
  • Color grading now has a quality option which affects the size and bit depth of the 3D LUT.
  • Fixed crash in the Metal backend when more than 16 samplers are bound.
  • Added validation in Texture::setImage().
  • Fixed refraction/transmission roughness when specular anti-aliasing is enabled.

v1.8.0

  • Improved JavaScript API for SurfaceOrientation and Scene.
  • Updated JavaScript API around Camera construction / destruction (⚠️ API change)
  • Add missing JavaScript API for View::setVisibleLayers().
  • Fixed regression in JavaScript IcoSphere that caused tutorial to fail.
  • gltf_viewer now supports viewing with glTF cameras.
  • gltfio now uses high precision for texture coordinates.
  • gltfio now supports importing glTF cameras.
  • gltfio now supports simple instancing of entire assets.
  • gltfio has improved performance and assumes assets are well-formed.
  • gltfio now supports name and prefix lookup for entities.
  • ModelViewer now allows resources to be fetched off the UI thread.
  • Add support for DOF with Metal backend.
  • New Depth-of-Field (Dof) algorithm, which is more plausible and about an order of magnitude faster (about 4ms on Pixel4).
  • SSAO now has an optional high(er) quality upsampler.
  • Tone mappping now uses the real ACES tone mapper, applied in the proper color space.
  • Tone mapping is now applied via a LUT.
  • View::setToneMapping is deprecated, use View::setColorGrading instead. (⚠️ API change)
  • Color grading capabilities per View: white balance (temperature/tint), channel mixer, tonal ranges (shadows/mid-tones/highlights), ASC CDL (slope/offset/power), contrast, vibrance, saturation, and curves.
  • New vignette effect.
  • Improved MSAA performance on mobile.
  • Improved performance of the post-process pass when bloom is disabled on mobile.
  • Added support for 3D textures.
  • Fixed private API access on some versions of Android.
  • Many improvements and bug fixes in Metal and Vulkan backends.
  • Fixed bug in the Metal backend when SSR and MSAA were turned on.
  • Fixed Metal issue with BufferDescriptor and PixelBufferDescriptors not being called on the application thread.

v1.7.0

  • MaterialInstances now have optional names.
  • Improved Depth of Field effect: bokeh rotates with the aperture diameter, improved CoC calculation, feather blur radius.
  • Introduced getNormalizedViewportCoord shader API.
  • Added basic SwiftShader support.
  • Fixed SwapChain resizing issues in Vulkan.
  • Added debug option to track Entities.
  • Fixed Camera entity leaks.
  • Removed problematic CreateEliminateDeadMembersPass, which broke UBO layout.
  • Added assert that the engine is not terminated in flushAndWait().
  • Added several fixes and improvements around objects lifetime management
  • gltfio: AssetLoader now loads names for mesh-free nodes
  • gltfio: Material names are now preserved in ubershader mode
  • Fixed JNI objects allocation and memory corruption
  • JNI constructors are now "package private" unless they take an Engine.

v1.6.0

  • gltfio: fixed incorrect cone angles with lights.
  • Specular ambient occlusion now offers 3 modes: off, simple (default on desktop) and bent normals. The latter is more accurate but more expensive and requires a bent normal to be specified in the material. If selected and not bent normal is specified, Filament falls back to the simple mode.
  • Specular ambient occlusion from bent normals now smoothly disappears as roughness goes from 0.3 to 0.1. Specular ambient occlusion can completely remove specular light which looks bad on glossy metals. Use the simple specular occlusion mode for glossy metals instead.
  • Refraction can now be set on MaterialBuilder from Java.
  • Refraction mode and type can now be set by calling MaterialBuilder::refractionMode(). and MaterialBuilder::refractionType() instad of materialRefraction() and materialRefractionType() (️⚠️ API change).
  • Fixed documentation confusion about focused spot vs spot lights.
  • Fixed a race condition in the job system.
  • Fixed support for 565 bitmaps on Android.
  • Added support for timer queries in the Metal backend.
  • Improved dynamic resolution implementation to be more accurate and target more platforms.
  • beginFrame() now accepts a v-sync timestamp for accurate frame time measurement (used for frame skipping and dynamic resolution). You can pass 0 to get the old behavior (⚠️ API change).
  • Fixed several issues related to multi-view support: removed View::setClearColor(), a similar functionality is now handled by Renderer::setClearOptions() and Skybox, the later now can be set to a constant color (⚠️ API breakage).
  • Fixed spot/point lights rendering bug depending on Viewport position.
  • Textures can now be swizzled.
  • The emissive property of materials is now expressed in nits and the alpha channel contains the exposure weight (at 0.0 the exposure is not applied to the emissive component of a surface, at 1.0 the exposure is applied just like with any regular light) (⚠️ API breakage).
  • Added new intensityCandela and setIntensityCandela API to LightManager for setting a punctual light's intensity in candela.
  • Fixed an issue where some ShadowOptions were not being respected when passed to LightManager::Builder.
  • Added a Depth of Field post-processing effect

v1.5.2

  • gltfio: fixed null pointer exception seen with some Android clients.
  • Engine now exposes its JobSystem to C++ clients.
  • Expose setCulling() in public RenderableManager API.

v1.5.1

  • Fixed "no texture bound" warning in WebGL.
  • Fixed a clearing bug with imported render targets.
  • Fixed the creation potentially invalid entities during shadow map initialization.
  • Fixed Maven dependencies for the filament-utils library.

v1.5.0

⚠️ This release breaks compiled materials, use matc to recompile.

  • The Android support libraries (gltfio and filament-utils) now use dynamic linking.
  • Removed depth-prepass related APIs. (⚠ API Change)
  • gltfio: add asynchronous API to ResourceLoader.
  • gltfio: generate normals for flat-shaded models that do not have normals.
  • Material instances now allow dynamic depth testing and other rasterization state.
  • Unlit materials now apply emissive in the same way as lit materials.
  • Screen-space refraction is now supported.
  • Support for HDR Bloom as a post-process effect.
  • Alpha masked objects are now part of the SSAO pass.
  • Added Java bindings for geometry::SurfaceOrientation.
  • Fixed bug rendering transparent objects with Metal backend.
  • Fixed crash on macOS Catalina when rendering with Metal backend.
  • Fixed bug in Camera::setLensProjection() and added the aspect ratio parameter. (⚠ API Change)
  • WebGL: Improved TypeScript annotations.
  • WebGL: Simplified callback API for glTF. (⚠ API Change)
  • gltfio: Removed deprecated "Bindings" API. (⚠ API Change)
  • gltfio: Added support for Draco.
  • gltfio: Reduced the size of the library.
  • Improved performance of SSAO.
  • Added support for screen-space contact shadows.
  • Added support for global fog.
  • Added support for bent normal maps and specular occlusion from bent normal maps.
  • Added support for shadow-casting spot lights.

v1.4.5

  • The depth prepass setting in View is now ignored and deprecated.
  • Fixed a threading bug with the NOOP backend.
  • Improved memory management for gltfio on Android.
  • Introduced filament-utils library with TextureLoader, ModelViewer, and Java bindings for camutils.
  • Fix out-of-bounds bug when glTF has many UV sets.
  • Added new setMediaOverlay API to UiHelper for controlling surface ordering.
  • Implemented sRGB support for DXT encoded textures.
  • Fix bug with incorrect world transforms computed in TransformManager.
  • gltfio: support external resources on Android.

v1.4.4

  • Added support for solid and thin layer cubemap and screen-space refraction.
  • Improved high roughness material rendering by default when regenerating environments maps.
  • Fix bad instruction exception with macOS Catalina.
  • Fixed bad state after removing an IBL from the Scene.
  • Fixed incorrect punctual light binning (affected Metal and Vulkan backends).
  • Fixed crash when using a Metal headless SwapChain with an Intel integrated GPU.
  • Added support for ASTC textures on iOS with Metal backend.
  • Added new heightfield sample.
  • Removed <iostream> from math headers.
  • cmgen now places KTX files directly in the specified deployment folder.

v1.4.3

  • Fixed an assertion when a parameter array occurs last in a material definition.
  • Fixed morph shapes not rendering in WebGL.
  • Added support for the latest version of emscripten.
  • gltfio: fixed blackness seen with default material.
  • Added ETC2 and BC compressed texture support to Metal backend.
  • Rendering a SAMPLER_EXTERNAL texture before setting an external image no longer results in GPU errors.
  • Fixed a normals issue when skinning without a normal map or anisotropy.
  • Fixed an issue where transparent views couldn't be used with post-processing.
  • Always use higher quality 3-bands SH for indirect lighting, even on mobile.
  • The Metal backend can now handle binding individual planes of YUV external images.
  • Added support for depth buffer when post-processing is turned off
  • Improved performance on GPUs that use tile-based rendering

v1.4.2

  • Cleaned up the validation strategy in Engine (checks for use-after-destroy etc).
  • OpenGL: Fixed ES 3.0 support on iOS.
  • OpenGL: Added support for KHR_debug in debug builds.
  • gltfio: Added Java / Kotlin bindings for Animator.
  • gltfio: Fixed panic with the Android gltf-bloom demo.
  • gltfio: Java clients should no longer call Filament#init.
  • Improved IBL diffuse by allowing to use the specular cubemap at roughness = 1 instead of Spherical Harmonics

v1.4.1

  • Added missing API documentation.
  • Fixed crash for sandboxed macOS apps using Filament.
  • Fixed an issue that limited the camera near plane to ~1mm.
  • Added Android sample for Camera Stream.
  • Fixed an Xcode assertion when rendering skinned meshes using the Metal backend.
  • Added support for Core Animation / Metal frame synchronization with Metal backend.
  • Fixed an issue with culling in MaterialInstance.
  • Fix additional compatibility issues with MSVC, including the Vulkan backend.
  • matdbg: fixed missing symbol issue when linking against debug builds.
  • filamat: fixed crash when using the "lite" version of the library.
  • matinfo: Fix a crash with on Windows.
  • gltfio: fixed an animation loop bug.
  • gltfio: added support for sparse accessors.
  • Add JS binding to unary Camera::setExposure.

v1.4.0

  • API Breakage: Simplified public-facing Fence API.
  • Minimum API level on Android is now API 19 instead of API 21.
  • Filament can now be built with msvc 2019.
  • Added the ability to modify clip space coordinates in the vertex shader.
  • Added missing API documentation.
  • Improved existing API documentation.
  • Added Camera::setExposure(float) to directly control the camera's exposure.
  • Backface culling can now be toggled on material instances.
  • Face direction is now reversed when transforms have negative scale.
  • Dielectrics now behave properly under a white furnace (energy preserving and conserving).
  • Clear coat roughness now remains in the 0..1 (previously remapped to the 0..0.6 range).
  • gltfio: Fixed several limitations with ubershader mode.
  • gltfio: Fixed a transforms issue with non-uniform scale.
  • webgl: Fixed an issue with JPEG textures.
  • Windows: Fix link error in debug builds.
  • matdbg: Web server must now be enabled with an environment variable.
  • matdbg: Added support for editing GLSL and MSL code.

v1.3.2

  • Added optional web server for real-time inspection of shader code.
  • Added basic #include support in material files.
  • Fixed potential Metal memory leak.
  • Fixed intermittent memory overflow in wasm builds.
  • Fix bad normal mapping with skinning.
  • Java clients can now call getNativeObject().

v1.3.1

  • Unified Filament Sceneform and npm releases.
  • Improved cmgen SH with HDR images.
  • IndirectLight can now be queried for dominant direction and color.
  • Added support for vertex morphing.
  • Introduced custom attributes, accessible from the vertex shader.
  • Added Java / Kotlin bindings for KtxLoader.
  • Added JavaScript / Typescript bindings for the new RenderTarget class.
  • Added base path to glTF loadResources method for JavaScript.
  • Added support for iOS CVPixelBuffer external images with the OpenGL backend.

sceneform-1.9pr4

  • Added gltf_bloom Android sample to show gltfio and the RenderTarget API.
  • Added getMaterialInstanceAt to the Java version of RenderableManager.
  • Fix JNI bindings for setting values in parameter arrays.
  • Added JNI bindings for the gltfio library.
  • Fix support for parameter arrays in .mat files.
  • Added support for RGB_11_11_10
  • Removed support for RGBM (warning: source compatibility breakage)
  • IBL cubemap can now be of any size
  • Texture::generatePrefilterMipmap can be used for runtime generation of a reflection cubemap

sceneform-1.9pr3

  • Added Scene.addEntities() to the Java / Kotlin bindings.
  • Improved robustness in the tangents utility for meshes that have tangents and normals.
  • Introduced RenderTarget API that allows View to reference an offscreen render target.
  • Added lucy_bloom sample to demonstrate the new RenderTarget API.
  • Added Screen Space Ambient Occlusion support (SAO)
  • New blending modes: multiply and screen
  • Fixed an issue when sorting blended objects with different blending modes
  • The material property curvatureToRoughness has been replaced with specularAntiAliasing. This new specular anti-aliasing solution offers more control via two new properties: specularAntiAliasingVariance and specularAntiAliasingThreshold. They can also be set on material instances if needed
  • Added specular ambient occlusion to compute a new AO term applied to specular reflections (see specularAmbientOcclusion property in materials)
  • Added multi-bounce ambient occlusion to brighten AO and preserve local color (see multiBounceAmbientOcclusion property in materials)
  • Micro-shadowing is now applied to material ambient occlusion
  • Use a smaller 64x64 DFG LUT on mobile to reduce binary size
  • Added a distance field generator to libimage.
  • JavaScript MaterialInstance now supports vec4 colors.
  • Further reduced filamat binary size by removing reliance on stdlib.
  • Added a new, smaller, version of the filamat library, filamat_lite. Material optimization and compiling for non-OpenGL backends have been removed in favor of a smaller binary size.
  • Implemented hard fences for the Metal backend, enablying dynamic resolution support.
  • Improved SurfaceOrientation robustness when using UVs to generate tangents.
  • Created a RELEASE_NOTES.md file, to be updated with significant PRs.

sceneform-1.9pr2