Releases: google/filament
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)
v1.2.0
This release is motivated by a need to update npm, which was last updated in December 2018 with
v1.1.0. Some of the changes since then:
Features
Materials
- Added
getWorldFromClipMatrix()
API - Added
flipUV
property to enable/disable UV Y coordinate flipping - Added
curvatureToRoughness
property for specular anti-aliasing - Added
limitOverInterpolation
property for specular anti-aliasing - Use
getUserTime()
to get the current time in seconds. SeeRenderer::resetUserTime()
for more information
Tools
- New
glslminifier
tool to reduce the size of built-in GLSL shaders matc
features are now part oflibfilamat
to generate materials at runtimeresgen
tool to embed data in binaries (pre-compiled materials, etc.)
Engine
- VertexBuffer builder
normalized()
method now accepts a boolean View::setFrontFaceWindingInverted
can be used to change the winding order of front faces. This is useful for mirrored rendering (reflections, etc.)- Added
View::setRenderQuality
API. It currently allows the use of anR11G11B10F
HDR color buffer instead ofRGB[A]16F
- Added the ability to set the polygon offset on a material instance
- Added API to compute tangent frame from vertex data (in
VertexBuffer
)
Samples
snorm16
UVs if UVs are in the range-1..1
- New webpack/TypeScript demos
- Added
gltf_viewer
sample
Enhancements
Engine
- Exposed tangent utility to Java/Kotlin
- Allow mutation of non-direct buffers in Java/JNI
- FrameGraph is now enabled internally
- Improved render target management
- Added
addEntities
toScene
- Windows debug libraries are now part of the distribution
- Add new queries to
TransformManager
andScene
- Mipmaps are now generated using the GPU for both Vulkan and OpenGL
- Improved job system performance, especially under contention
- Removed obsolete documentation about static lights
- Improved skinning memory usage
- Improved job system performance
- Set CPU affinity on job system threads on Android to avoid core hopping/cache thrashing
- Froxelization now runs during the shadow pass for improved parallelism
- Lights culling is now parallelized with renderables culling
- Various performance and code size optimizations
- Use compile-time hashing in
StaticString
- The JavaScript API now supports compressed textures
- Disabled depth prepass in the WebGL builds
Web
- Added more JavaScript bindings
- Added more TypeScript annotations
Android
- Upgraded samples to Android Studio 3.3 and Kotlin 1.3.10
- Improved rendering to TextureView
- API level requirement on Android was lowered from 24 to 21
- Reduced the size of the release AAR by ~150 KiB
UiHelper
can now create transparent render targets- Added a transparent render target demo
Vulkan
- Added support for RGB textures
Rendering
- Replace Cloth DFG approximation with DFG LUT
- Add
clearCoatIorChange
property to materials - Continued to improve Metal support
- Always recenter the world origin to the camera position (improves precision)
- Enable the FrameGraph for post-processing
- Add an option to turn dithering on/off
- Implemented blit in Vulkan
- Simplified command buffer management in Vulkan
- Progress on Metal backend
Tools
- Introduce
MATERIAL_VERSION
(this breaks older Materials) - Cleaned-up and simplified
filabridge
andfilaflat
- New
gltfio
library to more easily support gltf - API change: rename matrix factory functions
- New
ibl
library split fromcmgen
- The
filamat
library is now available as a library to generate materials at runtime - Improved linear to sRGB conversion functions
- Improved skygen rendering
- Added 4 channel versions of image operations
- Filamesh now generates dummy UV sets when necessary
Build
- Android standalone toolchains are not longer necessary
- Linux CI builds are now compiled with clang 7.0 instead of clang 5.0
Materials
- Shader optimizations are now on by default
- Shader optimizations can now be applied to materials that use external textures
- Use smol-v to compress SPIR-V shaders
Bug fixes
Engine
- Fixed a bug preventing material parameters to be set on default
MaterialInstance
- Fixed a double free in
RenderableManager::Builder
(#871) - Fixed
math::slerp
again - Fixed NaNs in
math::slerp
- Fixed out-of-bounds access
- Fixed compilation issues with some compilers
- Destroy engine's default material on shutdown
- Fixed incorrect order of arguments in
glBlendFuncSeparate
- Fixed VAO state management bug
- Fixed overflow issue when exactly 256 bones were declared in a renderable
- Fixed potential crash when copying a texture stream
FADE
materials are now properly sorted withTRANSPARENT
materials
Rendering
- Fixed FXAA offset by half a pixel
- Fixed
generateMipmap
implementation to properly honor base/max level - Fixed OpenGL error with incorrect UBO size in GPU skinning
- Fixed iOS specific OpenGL issues
- Fixed normals/tangents skinning when a transform is set
- Fixed black spots that would sometimes show up with FXAA enabled
- Fixed depth prepass rendering bug on NVIDIA hardware
Tools
- Fixed memory leak in libimage
- Fixed
baseColorFactor
support when loading glTF files - Fixed minor issues in glTF to
filamesh
conversions
Android
- Fixed skybox loader to accept dimensions greater than 256x256
- Fixed
filamesh
loader to correctly interpret optimized UVs
Vulkan
- Fixed mipmapping of 2D textures
- Fixed validation warning
- Fixed texture anisotropy in the Vulkan backend
- Depth offset and face culling now work
Sceneform-1.9pr1
This release of Filament is a check point release towards Sceneform 1.9.
List of changes since sceneform-1.7pr6:
Enhancements
Engine
- Add new queries to
TransformManager
andScene
Rendering
- Replace Cloth DFG approximation with DFG LUT
- Add
clearCoatIorChange
property to materials - Continued to improve Metal support
- Always recenter the world origin to the camera position (improves precision)
- Enable the FrameGraph for post-processing
- Add an option to turn dithering on/off
Tools
- Introduce
MATERIAL_VERSION
(this breaks older Materials) - Cleaned-up and simplified
filabridge
andfilaflat
- New
gltfio
library to more easily support gltf - API change: rename matrix factory functions
- New
ibl
library split fromcmgen
Build
- Android standalone toolchains are not longer necessary
Bug fixes
Engine
- Fixed a bug preventing material parameters to be set on default
MaterialInstance
- Fixed a double free in
RenderableManager::Builder
(#871) - Fixed
math::slerp
again
Rendering
- Fixed FXAA offset by half a pixel
Sceneform 1.7pr6
This release of Filament is a check point release towards Sceneform 1.7.
List of changes since sceneform-1.7pr5:
Enhancements
Engine
- Exposed tangent utility to Java/Kotlin
- Allow mutation of non-direct buffers in Java/JNI
- FrameGraph is now enabled internally
- Improved render target management
- Added
addEntities
toScene
- Windows debug libraries are now part of the distribution
Rendering
- Implemented blit in Vulkan
- Simplified command buffer management in Vulkan
- Progress on Metal backend
Tools
- The
filamat
library is now available as a library to generate materials at runtime
Bug fixes
Engine
- Fixed NaNs in
math::slerp
- Fixed out-of-bounds access
Rendering
- Fixed
generateMipmap
implementation to properly honor base/max level - Fixed OpenGL error with incorrect UBO size in GPU skinning
- Fixed iOS specific OpenGL issues
Sceneform 1.7pr5
This release of Filament is a check point release towards Sceneform 1.7. This release is a small update of sceneform-1.7pr4 to fix compilation errors on some compilers.
List of changes since sceneform-1.7pr4:
Enhancements
Engine
- Mipmaps are now generated using the GPU for both Vulkan and OpenGL
Bug fixes
Engine
- Fixed compilation issues with some compilers
Sceneform 1.7pr4
This release of Filament is a check point release towards Sceneform 1.7. This release supersedes sceneform-1.7pr3 which contained a deadlock that occurred on some Android devices.
Special thanks to @shartte, @damianno19 and @gstanlo for their contributions.
List of changes since sceneform-1.7pr2:
Features
Engine
- VertexBuffer builder
normalized()
method now accepts a boolean
Materials
- Added
getWorldFromClipMatrix()
API - Added
flipUV
property to enable/disable UV Y coordinate flipping - Added
curvatureToRoughness
property for specular anti-aliasing - Added
limitOverInterpolation
property for specular anti-aliasing
Tools
- New
glslminifier
tool to reduce the size of built-in GLSL shaders
Enhancements
Engine
- Improved job system performance, especially under contention
- Removed obsolete documentation about static lights
Tools
- Improved linear to sRGB conversion functions
- Improved skygen rendering
- Added 4 channel versions of image operations
- Filamesh now generates dummy UV sets when necessary
Web
- Added more JavaScript bindings
- Added more TypeScript annotations
Android
- Upgraded samples to Android Studio 3.3 and Kotlin 1.3.10
- Improved rendering to TextureView
Vulkan
- Added support for RGB textures
Bug fixes
Engine
- Destroy engine's default material on shutdown
- Fixed incorrect order of arguments in
glBlendFuncSeparate
- Fixed VAO state management bug
Rendering
- Fixed normals/tangents skinning when a transform is set
- Fixed black spots that would sometimes show up with FXAA enabled
- Fixed depth prepass rendering bug on NVIDIA hardware
Tools
- Fixed memory leak in libimage
- Fixed
baseColorFactor
support when loading glTF files - Fixed minor issues in glTF to
filamesh
conversions
Android
- Fixed skybox loader to accept dimensions greater than 256x256
- Fixed
filamesh
loader to correctly interpret optimized UVs