Skip to content

Releases: google/filament

v1.3.1

08 Aug 19:12
6b41527
Compare
Choose a tag to compare

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

03 Jul 20:24
Compare
Choose a tag to compare

Our npm package was last updated in April. Some of the changes since then:

⚠️ this version breaks compiled materials, use matc to recompile
⚠️ this version breaks IBL cubemaps, use cmgen to recreate them

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 allows View 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
    (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
  • 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
  • New blending modes: multiply and screen
  • 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 new RenderTarget API.
  • Added gltf_bloom Android Kotlin sample to show gltfio and the RenderTarget 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

27 Jun 00:18
Compare
Choose a tag to compare
sceneform-1.9pr4 Pre-release
Pre-release

This release of Filament is a check point release towards Sceneform 1.9.

List of relevant changes since sceneform-1.9pr3:

⚠️ this version breaks compiled materials, use matc to recompile
⚠️ this version breaks IBL cubemaps, use cmgen to recreate them

Enhancements

Engine

  • 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.
  • 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

18 Jun 01:02
Compare
Choose a tag to compare

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 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
  • 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

26 Apr 20:30
Compare
Choose a tag to compare
sceneform-1.9pr2 Pre-release
Pre-release

This release of Filament is a check point release towards Sceneform 1.9.

List of relevant changes since sceneform-1.9pr1:

⚠️ This version breaks older Materials

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, except OpenGLPlatform

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

23 Apr 22:04
Compare
Choose a tag to compare

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. See Renderer::resetUserTime() for more information

Tools

  • New glslminifier tool to reduce the size of built-in GLSL shaders
  • matc features are now part of libfilamat to generate materials at runtime
  • resgen 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 an R11G11B10F HDR color buffer instead of RGB[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 to Scene
  • Windows debug libraries are now part of the distribution
  • Add new queries to TransformManager and Scene
  • 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 and filaflat
  • New gltfio library to more easily support gltf
  • API change: rename matrix factory functions
  • New ibl library split from cmgen
  • 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 with TRANSPARENT 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

13 Mar 23:35
Compare
Choose a tag to compare
Sceneform-1.9pr1 Pre-release
Pre-release

This release of Filament is a check point release towards Sceneform 1.9.

List of changes since sceneform-1.7pr6:

⚠️ This version breaks older Materials

Enhancements

Engine

  • Add new queries to TransformManager and Scene

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 and filaflat
  • New gltfio library to more easily support gltf
  • API change: rename matrix factory functions
  • New ibl library split from cmgen

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

19 Feb 21:59
Compare
Choose a tag to compare
Sceneform 1.7pr6 Pre-release
Pre-release

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 to Scene
  • 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

31 Jan 23:48
Compare
Choose a tag to compare
Sceneform 1.7pr5 Pre-release
Pre-release

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

30 Jan 01:44
Compare
Choose a tag to compare
Sceneform 1.7pr4 Pre-release
Pre-release

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