Filament是一款用于Android,Windows,Linux和macOS基于物理的渲染引擎
Filament是一款用于Android,Windows,Linux和macOS基于物理的渲染引擎- engine: Fix Metal bug when
setGeometryAt
is called multiple times. - engine: Improvements to DoF.
- engine: Fix
RenderTarget
NPE when depth is not present. - engine: Improvements to Camera APIs. Move focus distance from
DofOptions
toCamera
. - engine: VSM shadows now support
shadowMultiplier
. - java: Expose several
MaterialInstance
APIs (setColorWrite
,setDepthWrite
,setDepthCulling
) that
should have been public. - java: fix bug with
Texture::setImage
buffer size calculation.
Assets
14
- engine: Fix a DoF bug that caused black dots around the fast tiles.
- engine: Minor DoF optimizations.
- engine: Fix blanking windows not being drawn into on macOS.
- gltfio: Add support for data:// in image URI's.
- gltfio: Add internal MorphHelper, enable up to 255 targets.
- engine: Fix a hang in JobSystem.
- samples: Fix rendertarget sample app.
Assets
14
gltfio: Add ResourceLoader evict API.
gltfio: Fix ResourceLoader cache bug.
iOS: Disable exceptions to reduce binary size.
Assets
14
filamat / matc: fix sporatic crash.
Assets
14
- Improve bloom/emissive with glTF files.
- Publicly expose Exposure API for gltfio.
Assets
4
- Android: fix
"No implementation found"
error. - Android: fix compilation error in
UbershaderLoader
. - engine:
computeDataSize
now returns correct value forUSHORT_565
. - Vulkan: various internal improvements.
Assets
14
- engine: Fixed GL errors seen with MSAA on WebGL.
Warning: this can affect multisampling behavior on devices that do not support OpenGL ES 3.1 - materials: Added new
getVertexIndex()
API for vertex shaders. - samples: RenderTarget demo now disables post-processing in offscreen view and creates depth attachment.
- gltfio: Fix, animation jolt when time delta is very small.
Assets
14
Engine
- materials: Added
sheenColor
andsheenRoughness
properties to materials to create cloth/fabric. - materials: Materials generation using
libfilamat
is now multi-threaded. - materials: Modulate emissive by alpha on blended objects.
- API:
MaterialBuilder::build()
now expects a reference to aJobSystem
to multi-thread shaders
generation. AJobSystem
can be obtained withEngine::getJobSystem()
when using Filament,
or created directly otherwise. (⚠️ API change) - engine: Fix, punctual lights get clipped at certain angles.
- engine: Fix memory leak when calling
View::setViewport
frequently. - engine: Fix, materials not working on some Qualcomm devices.
- engine: Fix,
RenderTarget
cleared multiple times. - Java: Fix JNI bindings for color grading.
- Android: reduced binary size.
Platforms and backends
- Added support for Apple silicon Macs. build.sh can now be used to build on either Apple silicon or
Intel-based Macs. Pass the-l
flag to build universal binaries. - Metal: honor
inverseFrontFaces
inRasterState
. - Metal: Fix crash when switching between views with shadowing enabled.
- Metal: Fix crash when calling
Texture::setImage()
onSAMPLER_2D_ARRAY
texture. - WebGL: Fix samples erroring on Windows with Chrome.
- WebGL: Support
highlight
for setBloomOptions in JavaScript. - WebGL: Include TypeScript bindings in releases.
Libraries, tools, and samples
- gltfio: added support for
KHR_materials_sheen
. - gltfio: shader optimizations are now disabled by default, unless opting in or using ubershaders.
- gltfio: Fix
_maskThreshold not found
error. - gltfio on Java: fix potential memory leak in
AssetLoader.destroy()
. - gltfio: fix crash during async texture decode.
- gltfio: support animation in dynamically-added instances.
- gltfio: Improve robustness when decoding textures.
- gltfio: Fix animator crash for orphaned nodes.
- gltfio: fix tangents with morphing.
- gltf_viewer: fix very sporadic crash when exiting.
- gltf_viewer: fix crash when rapidly switching between glTF models.
- sampels: Add planar reflection RenderTarget demo.
Examples
New sheen
and sheenRoughness
material properties:
Assets
14
- Introduce libibl_lite library.
- engine: Fix EXC_BAD_INSTRUCTION seen when using headless SwapChains on macOS with OpenGL.
- engine: Add new callback API to SwapChain.
- engine: Fix SwiftShader crash when using an IBL without a reflections texture.
- filamat: Shrink internal Skybox material size.
- filamat: improvements to generated material size.
- filamat: silence spirv-opt warnings in release builds.
- matc: Add fog variant filter.
- matc: Fix crash when building mobile materials.
- math: reduce template bloat for matrices.
- Vulkan: robustness improvements.
Assets
14
- Vulkan: internal robustness improvements
- Metal: Support CVPixelBuffer SwapChains
- Metal: Support copyFrame
- Fix clear behavior with RenderTarget API.
- Fix GetRefractionMode JNI binding
- Additional fixes for Fence bug
Assets
14
- Fix a few Fence-related bugs
- gltfio: add createInstance() to AssetLoader.
- gltfio: fix ASAN issue when consuming invalid animation.
- gltfio: do not segfault on invalid primitives.
- gltfio: add safety checks to getAnimator.
- gltfio: fix segfault when consuming invalid file.
- Vulkan: various internal refactoring and improvements
- mathio: add ostream operator for quaternions.
- Fix color grading not applied when dithering is off.
Assets
14
- Vulkan: improvements to the ReadPixels implementation.
- Vulkan: warn instead of panic for sampler overflow.
- Vulkan: fix leak with headless swap chain.
- PlatformVkLinux now supports all combos of XLIB and XCB.
- Fix TypeScript binding for TextureUsage.
Assets
14
- Added View::setVsmShadowOptions (experimental)
- Add anisotropic shadow map sampling with VSM (experimental)
- matc: fixed bug where some compilation failures still exited with code 0
- Vulkan + Android: fix build break
- Add optional XCB support to PlatformVkLinux
- Fix Vulkan black screen on Windows with NVIDIA hardware
Assets
14
- Added a new Live Wallpaper Android sample
UiHelper
now supports managing aSurfaceHolder
- Fix: an internal texture resource was never destroyed
- Fix: hang on 2-CPU machines
- Fix: Vulkan crash when using shadow cascades
- Linux fixes for headless SwiftShader
- Fix null pointer dereference in
FIndirectLight
- Fix Windows build by avoiding nested initializers
- Vulkan: support readPixels and headless swap chains
- VSM improvements
Assets
14
- Add screen space cone tracing (SSCT)
- Improvements to VSM shadow quality
- New
ShadowOptions
control to render Variance Shadow Maps (VSM) with MSAA (experimental) - Improvements and fixes to screen-space ambient occlusion
- gltf_viewer: add --headless option
- gltf_viewer: Add new automation UI and functionality
Assets
14
- engine: Added new APIs to enable/disable screen space refraction
- engine: Fix, flip the shading normal when det < 0.
- gltfio: Fix animation by clamping the per-channel interpolant.
- gltfio: add async cancellation API
- gltfio: Fix "uniform not found" errors.
- gltfio: Disable clear coat layer IOR change in glTF files (#3104)
- Vulkan: fix final image barrier used for swap chain.
- matdbg: Various improvements
- JavaScript bindings: fix TextureUsage bitmask.
- cmgen / mipgen: add opt-in for ASTC / ETC support.
Assets
14
- Fixes / improvements for contact shadows, fog, and DOF
- Reduce SSAO creases caused by geometry tessellation
- Fix compilation warnings and issue with Clang 12
- Fix JNI crashes
- Rename .blurScale to .cocScale in DOF options
Assets
14
- Improvements to SSAO quality
- Fix unoptimized shader crashes with certain OpenGL drivers
- Add float versions of math constants to libmath
- filament-utils: fix,
CoroutineScope
job should be canceled before destroy
Assets
14
Engine (new features
✨
)
MASKED
mode now leaves destination alpha intact (useful for transparent targets).MASKED
mode now benefit from smoothing inunlit
materials.- Fixed frame graph crash when more than 32 stages were required.
- Temporal Anti-Aliasing (TAA) is now available as a complement to MSAA and FXAA. It can be turned
on and controlled usingView.setTemporalAntiAliasingOptions()
. - Added texture getters to
Skybox
andIndirectLight
(C++, Java, JavaScript). - Added APIs to create 3D textures and 2D texture arrays.
- Internal buffers can now be sized at compile times for applications that render very large
numbers of objects. View.setAmbientOcclusion()
is deprecated in favor ofView.setAmbientOcclusionOptions
(⚠️ API change).- Variance Shadow Mapping (VSM) is now available as an alternative to PCF shadows (experimental).
- Fixed translucent views with custom render targets.
- Use "reverse-z" for the depth buffer.
- Added a way to create an
Engine
asynchronously. - Highlights are now more stable under depth of field.
- New option to compress highlights before bloom.
- Improvements and fixes to SSAO and DOF.
Libraries and Tools
- Fixed
KHR_materials_transmission
to use theFADE
blending mode. - Fixed several memory leaks in gltfio and the JavaScript bindings.
- Reduced compiled material sizes by removing unnecessary variants.
Platforms and Backends
- Fixed several platform-specific Vulkan bugs and crashes.
- Switched to C++17.
- Many improvement and fixes in the Vulkan backend.
- Many improvement and fixes in the Metal backend.
- Improved MSAA implementation compatibility on Android devices.
Assets
14
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:
Assets
14
Engine (new features
✨
)
View::setToneMapping
is deprecated, useView::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
andScene
. - 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
andPixelBufferDescriptor
s 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:
Vignette and color grading
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.
Assets
14
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
Assets
14
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()
. andMaterialBuilder::refractionType()
instead ofmaterialRefraction()
andmaterialRefractionType()
(️⚠️ 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 byRenderer::setClearOptions()
andSkybox
, 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()
andsetIntensityCandela()
API to LightManager for setting a punctual light's intensity in candela. - Fixed an issue where some
ShadowOptions
were not being respected when passed toLightManager::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
Assets
14
Engine
- gltfio: fixed null pointer exception seen with some Android clients.
Engine
now exposes itsJobSystem
to C++ clients.- Expose
setCulling()
in public RenderableManager API.
Assets
14
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 compression.
- 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
andfilament-utils
) now use dynamic linking. - Android library
filamat-android-full
now calledfilamat-android
for consistency. filament-utils
now offers full and lite flavors. (⚠ API Change)
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
Assets
7
Android
- Improved memory management for gltfio on Android.
- Added new
setMediaOverlay
API toUiHelper
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 withTextureLoader
,ModelViewer
, and Java bindings forcamutils
. - gltfio: fix out-of-bounds bug when glTF has many UV sets.
- gltfio: support external resources on Android.
Assets
12
romainguy released this
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
- Added support for solid and thin layer cubemap refraction.
- Improved high roughness material rendering by default when regenerating environments maps.
Libraries
- Removed
<iostream>
from math headers.
Tools
- cmgen now places KTX files directly in the specified deployment folder.
Samples
- Added new heightfield sample.
Assets
11
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.
Assets
11
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.
Assets
11
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
.
Assets
10
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.
Assets
10
prideout released this
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.
Assets
11
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. (
⚠️ 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.
Assets
11
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
(⚠️ 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
Assets
11
pixelflinger released this
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
(⚠️ 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.
Assets
11
pixelflinger released this
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.
Assets
8
pixelflinger released this
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)
Assets
8
prideout released this
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
Assets
9
pixelflinger released this
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
Assets
8
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
Assets
8
romainguy released this
Assets
8
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
Assets
8
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
Assets
8
This release of Filament is a check point release towards Sceneform 1.7.
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
Assets
8
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
prideout released this
Assets
9
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
Assets
9
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
pixelflinger released this
Assets
9
This release of Filament is a check point release towards Sceneform 1.6.
Bug fixes
- Many threading issues related to the JobSystem
Assets
9
This is our first release using a new version scheme.
Features
- Introduced iOS build
- Added tutorials / demos for JavaScript API
- Overhauled uniform buffer management
Enhancements
- Updated Android samples to Kotlin 1.3
- Consolidated WebGL code into root-level
web
folder - Added KTX and PNG support to JavaScript API
- Added support for ANDROID_get_frame_timestamps
Bug fixes
- Fixed issues with job system
- Fixed buffer lifetime bug with JS API
- Fixed FXAA alignment issue that caused unwanted borders
- Fixed normals issue with JavaScript IcoSphere
romainguy released this
Assets
8
This release of Filament is a check point release towards Sceneform 1.6.
Features
- Added a proper JavaScript API
- Added new
TextureHelper
in the Java API to upload AndroidBitmap
objects easily, without an extra copy - Added Stream::getTimestamp() to query the update timestamp of a stream texture
- Added buffer usage hints to the driver interface
- Added new Android sample project to demonstrate how to texture meshes
- Added new
filameshio
library to read files generated byfilamesh
Enhancements
- Improved Java APIs when used from Kotlin
- Updated release archives instructions to detail how to link against prebuilt libraries
Bug fixes
- Fixed tangent frame computation on mobile when a scale is present
- Fixed a shader typo that caused GPU skinning to fail
- Fixed normals transformations when skinning with non-uniform scales
- Fixed an INVALID_OPERATION bug in the OpenGL backend
Initial public release
romainguy released this
Assets
This release of Filament matches the initial open sourcing of the project on GitHub. It represents the status of Filament as of August 3rd 2018.
Watchers:350 |
Star:10868 |
Fork:970 |
创建时间: 2018-08-04 01:26:00 |
最后Commits: 今天 |
许可协议:Apache-2.0 |
8933be1
Compare
TransformManager.getParent(int)
.