Releases: google/filament
Releases · google/filament
v1.4.3
Engine
- Fixed morph shapes not rendering in WebGL.
- 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.
- Added support for the Metal backend to bind 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.
Materials
- Fixed an assertion when a parameter array occurs last in a material definition.
Libraries
- gltfio: fixed blackness seen with default material.
Language Bindings
- Added support for the latest version of Emscripten.
v1.4.2
Engine
- 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.
Libraries
- gltfio: Java clients should no longer call
Filament#init
.⚠️ - gltfio: Added Java / Kotlin bindings for Animator.
- gltfio: Fixed panic with the Android gltf-bloom demo.
v1.4.1
Engine and API
- 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
.
Tools, Builds, and Infrastructure
- 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.
Language Bindings and Utilities
- Add JS binding to unary
Camera::setExposure
.
v1.4.0
Engine and API
- API Breakage: Simplified public-facing Fence API.
- Face direction is now reversed when transforms have negative scale.
- Minimum API level on Android is now API 19 instead of API 21.
- Added missing API documentation.
- Improved existing API documentation.
- Added
Camera::setExposure(float)
to directly control the camera's exposure.
Materials Enhancements
- Added the ability to modify clip space coordinates in the vertex shader.
- Backface culling can now be toggled on material instances.
- 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).
Tools, Builds, and Infrastructure
- Filament can now be built with msvc 2019.
- Windows: Fixed linker error in debug builds.
- gltfio: Fixed several limitations with ubershader mode.
- gltfio: Fixed a transforms issue with non-uniform scale.
- matdbg: Web server must now be enabled with an environment variable.
- matdbg: Added support for editing GLSL and MSL code.
Language Bindings and Utilities
- webgl: Fixed an issue with JPEG textures.
v1.3.2
Engine
- Added an internal texture cache for render targets.
- Fix bad normal mapping with skinning.
- Added basic
#include
support in material files.
Tools and Infrastructure
- Improved diagnostic output in
matc
andmatinfo
. - Added a web server for real-time inspection of shader code.
Language Bindings and Utilities
- Java clients can now call
getNativeObject()
. - Fixed intermittent memory overflow with JavaScript clients.
Backends
- Fixed potential Metal memory leak.
v1.3.1
Engine
- IndirectLight can now be queried for dominant direction and color.
- Introduced custom attributes, accessible from the vertex shader.
- Added support for vertex morphing.
Tools and Infrastructure
- Improved cmgen SH with HDR images. (:warning: makes brighter IBL's)
- Unified release labels for Sceneform and npm.
Language Bindings and Utilities
- Added Java / Kotlin bindings for
KtxLoader
. - Added JavaScript / Typescript bindings for the new
RenderTarget
class. - Added base path to glTF
loadResources
method for JavaScript.
Backends
- Added support for iOS
CVPixelBuffer
external images with the OpenGL backend.
v1.3.0
Our npm package was last updated in April. Some of the changes since then:
Enhancements
Engine
- 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- Introduced
RenderTarget
API that allowsView
to reference an offscreen render target. - Added Screen Space Ambient Occlusion support (SAO)
- Implemented hard fences for the Metal backend, enabling dynamic resolution support.
- Stable mode for shadows
- Improve shadows depth resolution for large scenes
- Add support for polygon offset in shadow map parameters
- Bake the constant bias into the shadow-map
- Better clamping for dot(N, V) (#1106)
- Decouple tone-mapping, FXAA, MSAA and dynamic resolution
- MSAA is now disabled when post-processing is disabled
Materials
- Added specular ambient occlusion to compute a new AO term applied to specular reflections
(seespecularAmbientOcclusion
property in materials) - Added multi-bounce ambient occlusion to brighten AO and preserve local color
(seemultiBounceAmbientOcclusion
property in materials) - Micro-shadowing is now applied to material ambient occlusion
- Use a smaller 64x64 DFG LUT on mobile to reduce binary size
- The material property
curvatureToRoughness
has been replaced withspecularAntiAliasing
.
This new specular anti-aliasing solution offers more control via two new properties:
specularAntiAliasingVariance
andspecularAntiAliasingThreshold
. They can also be set on
material instances if needed - New blending modes:
multiply
andscreen
- Add
postLightingColor
property to materials (#1057) - Add new shading model to Filament for specularGlossiness. (#1083)
- Allow dynamic two-sided lighting and materialThreshold
Language Bindings
- Added
getMaterialInstanceAt
to the Java version of RenderableManager. - Fix JNI bindings for setting values in parameter arrays.
- Added JNI bindings for the gltfio library.
- JavaScript MaterialInstance now supports vec4 colors.
Samples
- Added
lucy_bloom
desktop C++ sample to demonstrate the newRenderTarget
API. - Added
gltf_bloom
Android Kotlin sample to show gltfio and theRenderTarget
API.
Tools, Libraries and Infrastructure
- Created a
RELEASE_NOTES.md
file, to be updated with significant PRs. - Fix support for parameter arrays in
.mat
files. - Added a distance field generator to libimage.
- 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. - Improved
SurfaceOrientation
robustness.
Bug fixes
- Fix FBO leak when using MSAA in some cases
- Honor clear color, fixes #1125
- Better frustum/box intersection, make code more robust
- Fix the calculation of the shadow constant bias
- Fix LISPSM warping frustum computation
- Actually set the IBL rotation from the builder
- Don't flip the normals (#1060)
- Fix min/max calls in Box::unionSelf (#984)
- Fixed an issue when sorting blended objects with different blending modes
sceneform-1.9pr4
This release of Filament is a check point release towards Sceneform 1.9.
List of relevant changes since sceneform-1.9pr3:
matc
to recompile
cmgen
to recreate them
Enhancements
Engine
- Added
gltf_bloom
Android sample to show gltfio and theRenderTarget
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.
- 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
Tools
- Fix support for parameter arrays in
.mat
files.
sceneform-1.9pr3
This release of Filament is a check point release towards Sceneform 1.9.
List of relevant changes since sceneform-1.9pr2:
Enhancements
Engine
- Introduced
RenderTarget
API that allows View to reference an offscreen render target. - Added
lucy_bloom
sample to demonstrate the newRenderTarget
API. - Added Screen Space Ambient Occlusion support (SAO)
- New blending modes:
multiply
andscreen
- Fixed an issue when sorting blended objects with different blending modes
- The material property
curvatureToRoughness
has been replaced withspecularAntiAliasing
.
This new specular anti-aliasing solution offers more control via two new properties:
specularAntiAliasingVariance
andspecularAntiAliasingThreshold
. They can also be set on
material instances if needed - Added specular ambient occlusion to compute a new AO term applied to specular reflections
(seespecularAmbientOcclusion
property in materials) - Added multi-bounce ambient occlusion to brighten AO and preserve local color
(seemultiBounceAmbientOcclusion
property in materials) - Micro-shadowing is now applied to material ambient occlusion
- Use a smaller 64x64 DFG LUT on mobile to reduce binary size
- JavaScript MaterialInstance now supports vec4 colors.
- Implemented hard fences for the Metal backend, enabling dynamic resolution support.
- Created a
RELEASE_NOTES.md
file, to be updated with significant PRs.
Tools
- Improved robustness in the tangents utility for meshes that have tangents and normals.
- Added a distance field generator to libimage.
- 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. - Improved
SurfaceOrientation
robustness when using UVs to generate tangents.
sceneform-1.9pr2
This release of Filament is a check point release towards Sceneform 1.9.
List of relevant changes since sceneform-1.9pr1:
Enhancements
Engine
- Add
postLightingColor
property to materials (#1057) - Add new shading model to Filament for specularGlossiness. (#1083)
- Allow dynamic doubleSided and materialThreshold
- Stable mode for shadows
- Improve shadows depth resolution for large scenes
- Add support for polygon offset in shadow map parameters
- Bake the constant bias into the shadow-map
- Better clamping for dot(N, V) (#1106)
- Decouple tone-mapping, FXAA, MSAA and dynamic resolution
- MSAA is now disabled when post-processing is disabled
Compatibility
- Use ASharedMemory on Android when available
- Don't call EGL during static initialization
- Workaround a UBO/glFlush interaction on some GPUs
Documentation
- Add Filamat documentation (#1103)
Tools
Refactoring
- Separate src/driver into its own library,
libbackend
- Rename namespace
filament::driver
->filament::backend
- Make all subclasses of
Platform
private, exceptOpenGLPlatform
libmath
- Conversion between vec and vec are now implicit
- Added vec{2|3|4}
- Remove vector comparison operators
Bug fixes
- Fix FBO leak when using MSAA in some cases
- Honor clear color, fixes #1125
- Better frustum/box intersection, make code more robust
- Fix the calculation of the shadow constant bias
- Fix LISPSM warping frustum computation
- Actually set the IBL rotation from the builder
- Don't flip the normals (#1060 -)
- Fix min/max calls in Box::unionSelf (#984)