Releases: google/filament
Releases · google/filament
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 aSurfaceHolder
- 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
v1.9.1
v1.9.0
Engine (new features ✨)
MASKED
mode now leaves destination alpha intact (useful for transparent targets).MASKED
mode now benefit from smoothing inunlit
materials.- Fixed frame graph crash when more than 32 stages were required.
- Temporal Anti-Aliasing (TAA) is now available as a complement to MSAA and FXAA. It can be turned
on and controlled usingView.setTemporalAntiAliasingOptions()
. - Added texture getters to
Skybox
andIndirectLight
(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 ofView.setAmbientOcclusionOptions
(⚠️ API change).- Variance Shadow Mapping (VSM) is now available as an alternative to PCF shadows (experimental).
- Fixed translucent views with custom render targets.
- 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.
Libraries and Tools
- Fixed
KHR_materials_transmission
to use theFADE
blending mode. - Fixed several memory leaks in gltfio and the JavaScript bindings.
- Reduced compiled material sizes by removing unnecessary variants.
Platforms and Backends
- Fixed several platform-specific Vulkan bugs and crashes.
- Switched to C++17.
- Many improvement and fixes in the Vulkan backend.
- Many improvement and fixes in the Metal backend.
- Improved MSAA implementation compatibility on Android devices.
v1.8.1
Engine (new features ✨)
- Color grading now has a quality option which affects the size and bit depth of the 3D LUT. See the documentation of
ColorGrading
for more information. - Added validation in
Texture::setImage()
. - Improved quality and performance of the depth of field effect.
- Fixed transform hierarchy memory corruption when a node is set to be parentless.
- Fixed refraction/transmission roughness when specular anti-aliasing is enabled.
Libraries and tools
- 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.
Platforms and Backends
- 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 crashes in some browsers and on some mobile devices caused by
Google-style line directives in shaders. - Fixed crash in the Metal backend when more than 16 samplers are bound.
Examples
KHR_materials_transmission
test asset as rendered by gltfio:
v1.8.0
Engine (new features ✨)
View::setToneMapping
is deprecated, useView::setColorGrading
instead. (⚠️ API change).- Tone mapping is now applied via a LUT.
- New tone mappers: linear, ACES, ACES legacy (default), filmic (tone mapper from previous versions
of Filament), Reinhard, Uchimura, and display range (to validate scene exposure). The new default
tone mapper has a much improved behavior in high intensity areas. - 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.
Engine Changes
- 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.
- Improved MSAA performance on mobile.
- Improved performance of the post-process pass when bloom is disabled on mobile.
- Added support for 3D textures.
Libraries and tools
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.gltfio
now provides Java/JavaScript APIs to access lights.glfio
now relies on the job system for various expensive tasks.ModelViewer
now allows resources to be fetched off the UI thread.
Platforms and Backends
- Improved JavaScript API for
SurfaceOrientation
andScene
. - Updated JavaScript API around
Camera
construction / destruction (⚠️ API change) - Add missing JavaScript API for
View::setVisibleLayers()
. - Fixed incorrect handling of texture swizzling.
- Fixed regression in JavaScript
IcoSphere
that caused tutorial to fail. - Fixed private API access on some versions of Android.
- Fixed bug in the Metal backend when SSR and MSAA were turned on.
- Fixed Metal issue with
BufferDescriptor
andPixelBufferDescriptor
s not being called on
the application thread. - Add support for DoF with Metal backend.
- Many improvements and bug fixes in Metal and Vulkan backends.
Examples
Improved depth-of-field
Depth-of-field off and on:
Vignette and color grading
Tone mapping
Comparison between the old tone mapper (now called "Filmic") and the new default "ACES (legacy)" tone mapper. Now how areas of high intensity (sun in the skybox, emissive red object in the foreground) behave in both cases.
v1.7.0
matc
to recompile.
Engine (new features ✨)
- Improved Depth of Field effect: bokeh rotates with the aperture diameter, improved CoC calculation, feather blur radius
- Introduced
getNormalizedViewportCoord
shader API MaterialInstance
now have optional names- Added basic SwiftShader support
Engine Changes
- Fixed
SwapChain
resizing issues in Vulkan - Added debug option to track Entities
- Fixed
Camera
entity leaks - Removed problematic
CreateEliminateDeadMembersPass
, which broke UBO layout - Only implement
flushAndWait()
debugging on android - Added assert that the engine is not terminated in
flushAndWait()
- Added several fixes and improvements around objects lifetime management
Libraries
- gltfio: AssetLoader now loads names for mesh-free nodes
- gltfio: Material names are now preserved in ubershader mode
Platforms and Backends
- JNI constructors are now "package private" unless they take an Engine
- Fixed JNI objects allocation and memory corruption