- Put QueryManager into its own .h/.cpp
- Do not assert when endTime <= beginTime. This could happen if
they were set on different command buffers. To be resolved
later.
- Better logic for iterating through a bitset.
PPM does not store alpha channel, but TIFF does. We add a method
to export RGBA to a TIFF file without compression.
We add the corresponding options to gltf_viewer and
AutomationEngine.
The default export format for both gltf_viewer and AutomationEngine
is now TIFF.
We are not correctly handling gltf models with multiple color
attributes. Filament doesn't allow for more than one color
attribute. So we just set the additional attributes as
VertexAttribute::CUSOM(N).
Fixes#8396
Just like mCulling, mShadowCulling needs to be inherited from the
material.
Fix breakage introduced in #8422 with attempted fix in #8475 and
caused by an uninitialized variable (mShadowCulling).
BUGS=[391679058]
Enabling UBSan shows the following error:
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior filamat/src/eiff/Flattener.h:102:17 in
filamat/src/eiff/Flattener.h:102:17: runtime error: applying non-zero offset 8 to null pointer
We reference a placeholder byte on the heap when in DryRunner mode
to workaround this issue.
We are in the process of updating glslang, which requires
set(IOS_MIN_TARGET "13.0")
This is a problem since we are targeting iOS 11 in general.
glslang is a filamat depedency, and we're building filamat for
iOS for the iOS version of the backend test.
So one solution is to set set(IOS_MIN_TARGET "13.0") for the
backend test. And we might revisit this solution later.
But for now, we simply disable backend tests (and filamat tests)
for iOS.
* Introduce FrameGraphInfo class
* Move the assignment into pimpl
* Make ctors explicit
* Add ctors to fg info structs
* Revert the macro change to align with existing
* Address the comments
* Remove pimpl and move func def to .cc
* Fix
* Convert the FrameGraph to FrameGraphInfo
* Initialize and update debug server on engine side
* Fix compile error
* Address the comments
* Update
* Use camelCase
* Use camelCase
* Update
* Add JsonWriter to convert fginfo to json
* Add getStatus api and implement it
* Add increment
* Implement GET apis
* Fix compile error
* Update
* Use c_str_safe
* Add operator== for FrameGraphInfo
* Call updateFrameGraph in appropriate locations
* Address the comments
* Add webview for fgviewer
* Remove head and tail bracket
* Fix the table element
* Force web to re-render when fg info gets updated
* Skip culled resources
* Mark subresources as gray
* Add parent info for subresources
* Collapse subresources into their parent resource
* Make the leftmost column fixed
* Remove unused stuff in html
* Fix the comment
* Refactor the code
* Cull unused resources
* Update
* Fix the naming
* Format the file
* Merge multiple resource node in to single resource
* Improve the logic and naming
* Refine the code
* Introduce FrameGraphInfo class
* Move the assignment into pimpl
* Make ctors explicit
* Add ctors to fg info structs
* Revert the macro change to align with existing
* Address the comments
* Remove pimpl and move func def to .cc
* Fix
* Convert the FrameGraph to FrameGraphInfo
* Initialize and update debug server on engine side
* Fix compile error
* Address the comments
* Update
* Use camelCase
* Use camelCase
* Update
* Add JsonWriter to convert fginfo to json
* Add getStatus api and implement it
* Add increment
* Implement GET apis
* Fix compile error
* Update
* Use c_str_safe
* Add operator== for FrameGraphInfo
* Call updateFrameGraph in appropriate locations
* Address the comments
* Add webview for fgviewer
* Remove head and tail bracket
* Fix the table element
* Force web to re-render when fg info gets updated
* Skip culled resources
* Mark subresources as gray
* Add parent info for subresources
* Collapse subresources into their parent resource
* Make the leftmost column fixed
* Remove unused stuff in html
* Fix the comment
* Refactor the code
* Cull unused resources
* Update
* Fix the naming
* Format the file
* Fix naming
* Address the comments
* Address the comment
* Introduce FrameGraphInfo class
* Move the assignment into pimpl
* Make ctors explicit
* Add ctors to fg info structs
* Revert the macro change to align with existing
* Address the comments
* Remove pimpl and move func def to .cc
* Fix
* Convert the FrameGraph to FrameGraphInfo
* Initialize and update debug server on engine side
* Fix compile error
* Address the comments
* Update
* Use camelCase
* Use camelCase
* Update
* Add JsonWriter to convert fginfo to json
* Add getStatus api and implement it
* Add increment
* Implement GET apis
* Fix compile error
* Update
* Use c_str_safe
* Add operator== for FrameGraphInfo
* Call updateFrameGraph in appropriate locations
* Address the comments
The definition of the froxel buffer sizes were spread across
multiple places and for different use cases (including
allocating the buffer, setting to a descriptor set, and adjusting
the relevant spec constant). In this commit, we try to unify
the size definitions into Froxelizer::getFroxelBufferByteCount().
We also remove the vulkan-only special case for froxel buffer
UBO. This case was introduced because spec constant couldn't be
used to size arrays for some drivers in the past, but we introduced a
workaround that replaced spec constants with constants.
* Implement query to check if texture format is mipmappable
This will allow Filament's users to perform check beforehand.
* add java bindings
* add javascript binding
1. changes weren't refreshed for windows/linux-mesa vulkan. This
is due to a reordering of the shaders when the shader source
is replaced. We fix this by ensuring the ordering before
writing out the edit.
Fixes#7286
2. A condition was flipped in the SourceFormatter causing the
format feature to not work on linux
3. The material update status wasn't really propagated to the
front-end due to not updating the status counter.
the new MaterialInstance::setCullingMode(color, shadow) API allows to
set a separate face culling mode for the color pass and the shadow
passes.
FIXES[391679058]
Now the helper function `getEyeIndex` becomes available for all shader
stages including post-processing. It used to be only accessible from
surface vertex shaders.
The API works this way:
```
auto vendor = OpenGLPlatform::getVendorString(engine->getDriver());
```
Obviously the Backend must be `Backend::OPENGL` and the `Driver` must
have been created with an `OpenGLPlatform` subclass.
FIXES=[385367277]
The current API used a void* in Texture::setExternalImage to pass
the platform specific image. This was a problem because on some
platform like Android, there could be several types (EGLImageKHR and
AHardwareBuffer), and with the void* there was no way to distinguish
them on the backend / platform side.
We now have a new Texture API which takes a
Platform::ExternalImageHandle, which is a reference-counted handle
to a Platform::ExternalImage. Platform::ExternalImage is an opaque
type only known by the platform.
This type must be created using a concrete Platform specific API, such
as:
PlatformEGL::createExternalImage
PlatformEGLAndroid::createExternalImage
PlatformCocoaGL::createExternalImage
PlatformCocoaTouchGL::createExternalImage
New types can easily be added in the future.
There is no "destroy" call because the Platform::ExternalImageHandle is
reference-counted and the client can let go of it as soon as it
doesn't need it any longer (typically after calling
Texture::setExternalImage). Platform::ExternalImage is a small
structure that just anonymously wraps the concrete types.
New internal driver APIs have been added to handle this functionality.
If FXAA is the last post process effect (i.e. no upscaling), and
color grading produced a luma channel, then FXAA needs to reset the
alpha channel to 1.
This will allow a more lenient rollout of the assertion, which
otherwise will increase crashes for current clients.
We also disable features.engine.debug.assert_material_instance_in_use
by default (it was enabled for debug builds).