Releases: google/filament
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
Sceneform 1.7pr2
This release of Filament is a check point release towards Sceneform 1.7.
List of changes since sceneform-1.7pr1:
Features
Engine
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
)
Materials
- Use
getUserTime()
to get the current time in seconds. SeeRenderer::resetUserTime()
for more information
Tools
matc
features are now part oflibfilamat
to generate materials at runtimeresgen
tool to embed data in binaries (pre-compiled materials, etc.)
Samples
- Samples:
snorm16
UVs if UVs are in the range-1..1
- Samples: New webpack/TypeScript demos
- Samples: Added
gltf_viewer
sample
Enhancements
Engine
- 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
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
Android
- Android: API level requirement on Android was lowered from 24 to 21
- Android: Reduced the size of the release AAR by ~150 KiB
- Android:
UiHelper
can now create transparent render targets - Android: Added a transparent render target demo
Web
- The JavaScript API now supports compressed textures
- Disabled depth prepass in the WebGL builds
Distribution
- Linux CI builds are now compiled with clang 7.0 instead of clang 5.0
Bug fixes
Engine
- 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
Vulkan
- Fixed mipmapping of 2D textures
- Fixed validation warning
- Fixed texture anisotropy in the Vulkan backend
- Depth offset and face culling now work
v1.1.0
Summary of changes since v1.0.0:
Features
- Web: added support for TypeScript,
import
, and JPEG textures - C++ clients can now read KTX textures using the
image
library matc
features are now part oflibfilamat
to generate materials at runtime- Added the ability to set the polygon offset on a material instance
- Added API to compute tangent frame from vertex data (in VertexBuffer)
- Added
View::setRenderQuality
API
Enhancements
- Added NOOP backend to allow headless regression testing
- Added compression to filamesh via meshoptimizer
- Added snorm16 quantization for UV's in filamesh
- Use smol-v to compress SPIR-V shaders in materials
- Many Code size and performance optimizations
- The JavaScript API now supports compressed textures
- Disabled depth prepass in the WebGL builds
- Added
gltf_viewer
sample - Introduced
resgen
tool to embed data in binaries (pre-compiled materials, etc.)
Bug fixes
- Synchronization fixes: switched to
utils::Mutex
, fixed sporadic test failures - cmgen / mipgen: fixed format in KTX header
- Fixed texture anisotropy in the Vulkan backend
- Depth offset and face culling now work in the Vulkan backend
- Fixed the documentation
- FADE materials are now properly sorted with TRANSPARENT materials
Sceneform 1.7pr1
This release of Filament is a check point release towards Sceneform 1.7.
List of changes since v1.0.0:
Features
- Added the ability to set the polygon offset on a material instance
matc
features are now part oflibfilamat
to generate materials at runtime- Added API to compute tangent frame from vertex data (in
VertexBuffer
) - Added
View::setRenderQuality
API. It currently allows the use of anR11G11B10F
HDR color buffer instead ofRGB[A]16F
Enhancements
- Use smol-v to compress SPIR-V shaders in materials
- Many Code size and performance optimizations
- The JavaScript API now supports compressed textures
- Disabled depth prepass in the WebGL builds
- Added
gltf_viewer
sample - Introduced
resgen
tool to embed data in binaries (pre-compiled materials, etc.)
Bug fixes
- Fixed texture anisotropy in the Vulkan backend
- Depth offset and face culling now work in the Vulkan backend
- Fixed the documentation
- FADE materials are now properly sorted with TRANSPARENT materials
Sceneform 1.6pr6
This release of Filament is a check point release towards Sceneform 1.6.
Bug fixes
- Many threading issues related to the JobSystem