Google releases open source rendering engine "Filament"

Filament is a physically based rendering engine for Android, Windows, Linux and macOS

Rendering engine without 3d modelling software it’s useless

A real time physically-based render engine with an Apache license is far far from useless. Potentially lots of interesting stuff in there to learn from and/or steal. Check out all the Blender monkeys in the docs!

4 Likes

Quiet in the peanut gallery!

This engine is used in Sceneform, for developers to create AR content for Android.

It could be used in other software as well, but I’d like to point out that it has very nice documentation which is pretty good teaching material.

5 Likes

While it is nice that the engine is Open Source, I am skeptical of Google having a long term commitment to the project when looking at their track record.

In many cases, Google will drop or deprecate a project after a few years unless it shows itself to be a huge revenue generator (does anyone of any recent stories related to Google Fiber, Sketchup, ect…)? They’re even dropping their music product in favor of starting over.

Wow, even with some sections still being written, that documentation is easily the best, most accessible explanation of some of the principles of PBR I’ve ever come across. This will be an invaluable resource to researchers and programmers.

9 Likes

It s an documentation you can t stop reading until finished.

1 Like

I’m not so sure …
consider that the hardware / future is turning towards realtime rendering …
and the next step forward is on internet is simulate “realistic” virtual worlds …
certainly knowing google is all to see, it is his way of dealing with new projects with his eternal “beta” … and if they do not go aside them … but usually changes the skills gained in new types of projects …

https://www.phoronix.com/scan.php?page=news_item&px=Filament-1.5-Real-Time-PBR

Filament is Google’s real-time physically based rendering engine that supports Android along with Linux and all other major platforms, including a target for WebAssembly+WebGL. Filament 1.2.0 was released on Tuesday as the latest step forward for this PBR rendering engine.

(ps … in the official site there is Suzanne rendered in real time in the browser as if it were an image)
https://google.github.io/filament/

v1.2.0

@prideout prideout released this on 24 Apr · 425 commits to master since this release

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

Here are a few sample materials rendered with Filament:

Damaged Helmet Helmet Brushed copper Material 1 Material 2 Material 6

Material 8

demo realtime on browser…
https://google.github.io/filament/webgl/

2 Likes

I wonder why they put the disclaimer at the bottom, I guess if it’s now open source anything could go with the code :smiley:

"Disclaimer

This is not an officially supported Google product."

2 Likes