In the ssao pass, for silhouette pixels,
```
highp vec3 v = p - origin;
```
can be a "long" vector where the length cannot be captured with
mediump on mobile. This means that
```
float vv = dot(v, v);
float vn = dot(v, normal);
```
and other variables can overflow. This caused the silhouettes to
be dark when ssao is turned on a PowerVR gpu.
The fix is use highp for the relevant variables.
Implemented the custom 3D LUT feature in the ColorGrading API, allowing
users to specify a custom LUT for final color mapping.
To test this feature, added a "Custom LUT" option to the color grading
settings in the gltf_viewer sample. This includes several procedurally
generated LUTs for testing purposes:
- Negative
- Grayscale
- Sepia
- Teal and Orange
Updated settings serialization (Settings.cpp) and the viewer UI
(ViewerGui.cpp) to support these options.
FIXES=[362596936]
- Update default_test.json with targeted test variants and documented
tolerance presets.
- Refactor test suite to cover distinct code paths while maintaining
multi-backend compatibility (OpenGL/Vulkan).
- Integrate TestProgressBar and UI summary text for better test progress
visualization.
- Enhance validation managers with dynamic naming, zip extraction/export,
and bundle creation.
- Update validation_app.py terminal UI to support multiple devices,
device switching, and local result serving.
- the first problem was that we don't need (or can) resolve RenderBuffer
attachments, it's meaningless.
- the bigger problem was that we were marking all attachments of a FBO
for potential resolve (at FBO creation). Later, during endRenderPass,
the resolve pass itself would be triggered if the RT had a sidecar
RT. But that's wrong because attachments that match the RT sample
count don't need to be resolved.
In turn, this was causing these attachments to be *discarded*
because, in beginRenderPass, we were detecting a case where it
looked like a MS attachment was used with non a MS rendertarget
(and filament disallows that, the attachment must be discarded).
We fix this by making sure attachments that don't need to be
resolved are not marked as such.
FIXES=[453757787]
Relaxes exact pixel matching for `UpdateImageSRGB` test on software/MESA OpenGL drivers. Linear filtering on sRGB textures produces slightly different fractional weights for edge pixels compared to hardware texturing units.
FIXES=[453756688]
- Added a bounds check in the DICTIONARY_NUMERIC_FLAG case to prevent a
heap buffer overflow when writing decoded numeric literals.
- Tightened the existing bounds check for dictionary strings to use `>=`
instead of `>`, preventing a potential off-by-one overflow when
writing the null terminator.
- Fixed the `MaterialChunkHeapOverflow` and `MaterialChunkOOBReadText`
unit tests in `test_filaflat.cpp` by adding missing header fields to
the mock payloads so they correctly pass initialization.
Fixes#9871
* a new tribool type in libutils (header only)
* Support `Engine::compile` overload to generate view-dependent variants
Implemented an `Engine::compile()` method to infer and generate shader
permutations directly based on feature states from a provided `View`
alongside `tribool` settings (skinning, shadowReceiver).
- Added a new `Material::compile()` overload that directly accepts
a precalculated `FixedCapacityVector<Variant>`, decoupling the
Material compilation process from specific feature flag checks.
FIXES=[468058969]
- Move the renderer options to be applied before others before view
and camera options.
- Add "render" field to the output of the json description of
the settings (this was missing).
- This fixes the Scene->Background Color setting for
Android's gltf_viewer