Skip to content

Releases: google/filament

v1.8.1

30 Jul 19:22
Compare
Choose a tag to compare

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:

Screen Shot 2020-07-30 at 12 28 47 PM

v1.8.0

09 Jul 18:55
77aec40
Compare
Choose a tag to compare

Engine (new features ✨)

  • View::setToneMapping is deprecated, use View::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 and Scene.
  • 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 and PixelBufferDescriptors 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:

Screen Shot 2020-07-09 at 12 17 49 PM

Screen Shot 2020-07-09 at 12 17 51 PM

Vignette and color grading

color_grading

vignette

curves

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.

Screen Shot 2020-07-09 at 11 58 45 AM

Screen Shot 2020-07-09 at 11 58 42 AM

v1.7.0

15 May 17:43
8780d7a
Compare
Choose a tag to compare

⚠️ This release breaks compiled materials, use 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

v1.6.0

01 May 23:00
3e67f62
Compare
Choose a tag to compare

⚠️ This release breaks compiled materials, use matc to recompile.

Engine (new features ✨)

  • Specular ambient occlusion now offers 3 modes: off, simple (default on desktop) and bent normals. The latter is more accurate but more expensive and requires a bent normal to be specified in the material. If selected and no bent normal is specified, Filament falls back to the simple mode.
  • Specular ambient occlusion from bent normals now smoothly disappears as roughness goes from 0.3 to 0.1. Specular ambient occlusion can completely remove specular light which looks bad on glossy metals. Use the simple specular occlusion mode for glossy metals instead.
  • beginFrame() now accepts a v-sync timestamp for accurate frame time measurement (used for frame skipping and dynamic resolution). You can pass 0 to get the old behavior (⚠️ API change).
  • Textures can now be swizzled.
  • Added a Depth of Field post-processing effect.

Engine Changes

  • Refraction mode and type can now be set by calling MaterialBuilder::refractionMode(). and MaterialBuilder::refractionType() instead of materialRefraction() and materialRefractionType() (️⚠️ API change).
  • Fixed documentation confusion about focused spot vs spot lights.
  • Fixed a race condition in the job system.
  • Improved dynamic resolution implementation to be more accurate and target more platforms.
  • Fixed several issues related to multi-view support: removed View::setClearColor(), a similar functionality is now handled by Renderer::setClearOptions() and Skybox, the later now can be set to a constant color (⚠️ API breakage).
  • Fixed spot/point lights rendering bug depending on Viewport position.
  • The emissive property of materials is now expressed in nits and the alpha channel contains the exposure weight (at 0.0 the exposure is not applied to the emissive component of a surface, at 1.0 the exposure is applied just like with any regular light) (⚠️ API breakage).
  • Added new intensityCandela() and setIntensityCandela() API to LightManager for setting a punctual light's intensity in candela.
  • Fixed an issue where some ShadowOptions were not being respected when passed to LightManager::Builder.
  • Fixed several lighting related bugs when multiple punctual lights are present.
  • Fixed an issue with directional shadows when stable is true

Libraries

  • gltfio: fixed incorrect cone angles with lights.
  • camutils: added a new free flight camera manipulator. Pass the -c flight argument to material_sandbox and gltf_viewer to enable.

Platforms and Backends

  • Refraction can now be set on MaterialBuilder from Java.
  • Fixed support for 565 bitmaps on Android.
  • Metal backend: added support for timer queries.
  • Fixed issue where JNI initialization could lead to crashes when using multiple versions.
  • Added support for headless swapchains on Windows.

Screenshots

Depth of field
dof

v1.5.2

03 Apr 00:16
Compare
Choose a tag to compare

Engine

  • gltfio: fixed null pointer exception seen with some Android clients.
  • Engine now exposes its JobSystem to C++ clients.
  • Expose setCulling() in public RenderableManager API.

v1.5.1

01 Apr 01:11
Compare
Choose a tag to compare

Engine

  • Fixed "no texture bound" warning in WebGL.
  • Fixed a bug preventing views from clearing properly.
  • Fixed the creation of potentially invalid entities during shadow map initialization.
  • Fixed Maven dependencies for the filament-utils library.

v1.5.0

31 Mar 06:01
Compare
Choose a tag to compare

⚠️ This release breaks compiled materials, use matc to recompile.

Engine (new features ✨)

  • HDR Bloom as a post-process effect.
  • Screen-space refraction.
  • Shadow-casting spot lights.
  • Bent normal maps and specular occlusion from bent normal maps.
  • Screen-space contact shadows.
  • Global fog.

glTF Loader (new features ✨)

  • Asynchronous API for resource loading.
  • Draco and clearcoat extensions.
  • Flat-shaded models.

Engine Changes

  • Removed depth-prepass related APIs. (⚠ API Change)
  • Alpha masked objects are now part of the SSAO pass.
  • Fixed bug in Camera::setLensProjection() and added the aspect ratio parameter. (⚠ API Change)
  • Improved performance of SSAO.

Libraries

  • gltfio: Removed deprecated "Bindings" API. (⚠ API Change)
  • gltfio: Reduced the size of the library and added gltfio-lite for Android.
  • Android libraries (gltfio and filament-utils) now use dynamic linking.
  • Android library filamat-android-full now called filamat-android for consistency. (⚠ API Change)
  • filament-utils now offers full and lite flavors.

Materials

  • Material instances now allow dynamic depth testing and other rasterization state.
  • Unlit materials now apply emissive in the same way as lit materials.
  • Added Java bindings for geometry::SurfaceOrientation.

Platforms and Backends

  • WebGL: Improved TypeScript annotations.
  • WebGL: Simplified callback API for glTF. (⚠ API Change)
  • Fixed bug rendering transparent objects with Metal backend.
  • Fixed crash on macOS Catalina when rendering with Metal backend.

Screenshots

HDR Bloom
Screen Shot 2020-03-30 at 6 48 56 PM

Bent normals and improved specular occlusion
with

Screen-space refraction
ssr1

Spot shadows
spot_shadows

Global fog
fog

Contact shadows
with cs

v1.4.5

27 Jan 20:59
1a66f85
Compare
Choose a tag to compare

Android

  • Improved memory management for gltfio on Android.
  • Added new setMediaOverlay API to UiHelper for controlling surface ordering.
  • New filament-utils-android library, available on Maven:
repositories {
    // ...
    mavenCentral()
}

dependencies {
    // KTX loading, camera manipulator, gesture detection,
    // model viewer, texture loader and math APIs
    implementation 'com.google.android.filament:filament-utils-android:1.4.5'
}

Engine

  • The depth prepass setting in View is now ignored and deprecated.
  • Fixed a threading bug with the NOOP backend.
  • Fix bug with incorrect world transforms computed in TransformManager.
  • Implemented sRGB support for DXT encoded textures.

Libraries

  • Introduced filament-utils library with TextureLoader, ModelViewer, and Java bindings for camutils.
  • gltfio: fix out-of-bounds bug when glTF has many UV sets.
  • gltfio: support external resources on Android.

v1.4.4

09 Jan 20:20
Compare
Choose a tag to compare

Android

  • Android libraries are now available on Maven Central:
repositories {
    // ...
    mavenCentral()
}

dependencies {
    // Filament rendering engine
    implementation 'com.google.android.filament:filament-android:1.4.4'
    // Filamat material builder
    implementation 'com.google.android.filament:filamat-android-full:1.4.4'
    // glTF 2.0 loader
    implementation 'com.google.android.filament:gltfio-android:1.4.4'
}

Engine

  • Fix bad instruction exception with macOS Catalina.
  • Fixed bad state after removing an IBL from the Scene.
  • Fixed incorrect punctual light binning (affected Metal and Vulkan backends).
  • Fixed crash when using a Metal headless SwapChain with an Intel integrated GPU.
  • Added support for ASTC textures on iOS with Metal backend.

Materials

Libraries

  • Removed <iostream> from math headers.

Tools

  • cmgen now places KTX files directly in the specified deployment folder.

Samples

  • Added new heightfield sample.

v1.4.3

27 Nov 21:13
4ba5d6b
Compare
Choose a tag to compare

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.