Commit Graph

1790 Commits

Author SHA1 Message Date
Powei Feng
6e249c4c1b matdbg: material info and fix resizing (#7295) 2023-10-24 21:56:42 -07:00
Powei Feng
7b7dfad552 filamat: Fix MaterialInfo::userMaterialHasCustomDepth init (#7292)
Leaving it uninitialized leads to msan failure.
2023-10-24 15:43:24 -07:00
Powei Feng
deb3eb0b11 matdbg: fix deadlock and add experimental UI (#7275)
- Ensure that waiting on lock times out so that we don't lock
   up a thread when the client is gone.
 - Add an experimental folder to matdbg/web/ for the new
   UI work.
2023-10-24 13:48:29 -07:00
Sungun Park
d3016adaff FFilamentAsset has root nodes' scene-mask set
The transient property `mRootNotes` in FAssetLoader is built when a new
root asset is created and referenced whenever a new instance is created.
So it incurs an undefined behavior when a previously created asset tries
creating a new instance after a newly created asset has already created
via the same asset loader.

Move this transient property to each asset so that they can reference it
when a new instance is created.

This partially fixes #7269
2023-10-23 15:30:49 -07:00
Sungun Park
6c29542fad Cleanup function signatures
There's no functional change in this commit.

Make some parameter names more legible by renaming them and put output
parameters to the right of their function.
2023-10-23 15:30:49 -07:00
Sungun Park
0d2a96d630 Remove transient property mAsset from FAssetLoader
The temporary variable has been used to store the current instance of
FFilamentAsset being loaded for easy access from internal methods.  This
causes a crash as to a complex scenario as follows.

val asset1 = assetLoader.createAsset(assetBuffer1)
val instance1 = assetLoader.createInstance(asset1)
val asset2 = assetLoader.createAsset(assetBuffer2)
val instance2 = assetLoader.createInstance(asset1)

As the first step of fixing this issue, remove the transient property
`mAsset` from FAssetLoader. This commit alone doesn't resolve the issue,
and more commits are following.

Consolidate the low level version of createInstance, which takes a
pointer to cgltf_data type, into the high level version as the latter
one uses a parameter for FFilamentAsset instead of referencing mAsset.

Update all other relevant methods to take a FFilamentAsset pointer
instead of cgltf_data.

This partially fixes #7269
2023-10-23 15:30:49 -07:00
Mathias Agopian
0f9a2dd6af Froxel visualization debug option
The setting can be changed at runtime using a debug property.
2023-10-23 10:02:52 -07:00
Mathias Agopian
626621fb1c minor filament benchmarks cleanup 2023-10-23 10:02:26 -07:00
Powei Feng
2b78fd8359 Update MATERIAL_VERSION to 45 2023-10-22 22:18:43 -07:00
Ben Doherty
9d181a172a Create use-after-free detector for Metal textures (#7250) 2023-10-20 17:15:42 -04:00
Mathias Agopian
6498cf5b64 dynamic shadowmap visualization (#7274)
* debugging PCF mode

This mode always uses a hard PCF and takes a 
slightly slower code path.

* dynamic shadowmap visualization

The directional shadowmap visualizer is implemented behind a 
specialization constant. Add the DebugRegistry infrastructure to be
able to update the spec-constant at runtime and have a subset of 
all materials invalidated.

This allows to toggle the visualization at runtime using a debug
property.

This is also a proof of concept that we can update spec-constants
at runtime; we could probably leverage this work for engine-wide
shader configurations.

* Update main.fs

* Update filament/src/details/Material.cpp

Co-authored-by: Powei Feng <powei@google.com>

---------

Co-authored-by: Powei Feng <powei@google.com>
2023-10-19 12:18:00 -07:00
Adrian Perez
3c77d2c3f5 StructureOfArrays can push_back move-only types 2023-10-19 12:13:28 -07:00
Powei Feng
960c6170fe vk: optimize headless swapchain (#7264)
- Remove queue submit call when using headless swapchain. It was meant
    to emulate a real swapchain, but queue submits are expensive.
 - Add option to remove flush and wait when window resizes. If a
    headless platform uses this signal to refresh the swapchain, we
    don't necessarily need it to also flush and wait before the refresh.
 - Refactor VulkanPlatform customizations
2023-10-19 11:43:24 -07:00
mackong
37c2fe31d5 samples: support apply all animations in gltf_viewer 2023-10-19 08:45:25 -07:00
Mathias Agopian
1b0db0fca2 fix a couple shadow stability bugs
- shadows are now stable (in stable mode) when an IBL rotation is
  used.

- fix the shadow transform option which didn't work when an IBL rotation
  was used

- also use the x-axis as a reference for the "up" direction when
  computing the light space matrix so that we don't fall into the
  degenerate case when the light points straight down, which is a
  common case

FIXES=[299310624]
2023-10-17 12:26:43 -07:00
mackong
163f02035f fix ubershader index for transmission&volume material (#7244)
Co-authored-by: Mathias Agopian <mathias@google.com>
2023-10-16 12:15:47 -07:00
Mathias Agopian
14263efbea fix mixed-precision quaternion math
We follow the same rules as C++, e.g. float * double -> double
2023-10-16 10:52:36 -07:00
Powei Feng
92846305f5 matdbg: change from websocket to GET (#7263)
- Use a hanging-GET approach to reduce dependency on websockets.
 - Also add mutex to protect access to MaterialRecords, which is
   written to/read from from multiple threads.
2023-10-13 14:43:34 -07:00
Ben Doherty
38ceee8d75 Support stencil buffer when post-processing is disabled (#7227) 2023-10-13 10:04:39 -07:00
Ben Doherty
fc6744ba75 Add AgX tonemapper (#7236) 2023-10-13 09:44:29 -07:00
Powei Feng
078a17469a matdbg: refactor EDIT command (#7255)
The websocket code for parsing the EDIT command is pretty verbose.
Proposing that we move to a HTTP POST request instead.

Also moved the API handler code out of DebugServer.h for clarity.
2023-10-12 10:40:57 -07:00
Eliza Velasquez
0887e388db matinfo: further refactor out redundant code 2023-10-11 16:17:48 -07:00
Eliza Velasquez
e4a57cedf9 matinfo: add support for viewing ESSL1 code 2023-10-11 16:17:48 -07:00
Ben Doherty
d92bdce852 Remove problematic GlslangToSpv option: emitNonSemanticShaderDebugInfo (#7260) 2023-10-11 15:13:41 -07:00
Ben Doherty
6279613b79 Metal: support float16 operations in --optimize-size mode (#7249) 2023-10-09 14:15:07 -07:00
Mathias Agopian
39d555d115 get rid of filmat-lite, which was poorly maintained 2023-10-02 14:18:25 -07:00
Mathias Agopian
21ea99a1d9 fade shadows out at shadowFar distance
Instead of a hard cutoff, we fade shadows out at
the shadowFar distance if active, fading occurs
over about 10% of the shadowFar distance.

- this works only for the directional shadow
  (other lights don't use shadowFar).
2023-09-28 16:21:27 -07:00
Mathias Agopian
f0b0505207 fix materials that write to the depth or use discard
these materials would not generate proper structure or shadow buffer,
because they used a special variant that in most case removed the
user code.

now when the user code writes the depth or calls discard, the user
shader is kept.
2023-09-28 16:19:17 -07:00
Mathias Agopian
11997d007a cleanup ASTHelpers, GLSLTools
- fix IDE warnings
- rename ASTUtils to ASTHelpers to match filename
- break dependency of ASTHelper on GLSLTools
- break dependency of GLSLTools on MaterialInfo
2023-09-28 16:19:17 -07:00
Powei Feng
b2cef9bfee Update MATERIAL_VERSION to 44 2023-09-27 16:32:17 -07:00
Eliza Velasquez
3aee9402d5 Add ESSL1 block to feature level 0 mats
Previously, when a material was expilicitly built for feature level 0, it was
necessary to write ESSL 1.0 code which was incompatible with the OpenGL feature
level 1 implementation in Filament. Rather than adjust the Filament
implementation so that feature level 1 uses the same workarounds as feature
level 0 to emulate GLES 3.0+ features, it's more runtime-efficient to have matc
embed ESSL 1.0 and 3.0 shaders as separate chunks and load the corresponding
one based on the active feature level.

Feature level 0 material shaders must still be written in what is effectively
ESSL 1.0. To assist with this, a small set of compatibility definitions are
introduced when building the ESSL 3.0 variant. These are virtually all
textureXXX() functions, and end up either optimized out or inlined by glslang.

One final effect of this change is that external and 3D samplers are now
properly supported in feature level 0 materials.
2023-09-26 22:46:51 +00:00
Jacob Su
6ebd22f474 Fix test_gltfio cmake duplicate libs and failed UT. (#7199)
* fix test-gltfio cmake duplicated libs links.

* fix test_gltfio failed UT.
2023-09-25 12:52:46 -07:00
Powei Feng
9cbf741ac2 Update MATERIAL_VERSION to 43 2023-09-25 10:08:56 -07:00
fvbj
5d30435620 Extend skinning for >4 bones per vertex (#6772)
* Add skinning and morphing samples to check functionality
* Implement skinning for more than four bones pair vertex

The API allows defining an unlimited number of bone indices and weights of primitives. Data is defined in building process of the renderable manager. Backward compatibility with the original solution.
Skinning of vertices is calculated on GPU, data is transferred to the vertex shader in the texture.
2023-09-21 13:04:12 -07:00
Mathias Agopian
d02231dce9 fix build most recent emscripten build 2023-09-21 13:02:35 -07:00
Romain Guy
cb9bfaeb83 Fix build warnings (#7189)
The latest macOS toolchain triggers warnings for duplicate libraries at
link time. This is caused by our dependency chains.

Also remove an inlining warning in Kotlin and unnecessary warnings in
build.sh when doing a clean or generating web docs.
2023-09-20 10:16:55 -07:00
Mathias Agopian
3dcdb202d1 new API to return a Material's supported variants
FIXES=[297456590]
2023-09-19 15:48:39 -07:00
Mathias Agopian
9474798c75 remove anamorphic bloom feature
This features didn't work well, had a lot of artifacts and generally
wasn't very useful. This kind of effect should be accomplished
differently.

This is an API break because BloomOptions::anamorphism has been removed.
2023-09-18 16:09:21 -07:00
Mathias Agopian
9f62dc2f2f Improve bloom
- add a quality option
- remove the ping-pong code, we'll disable for GPU that don't work
  instead.
- improve quality by doing a better first downscale
  (using a 5x5 gaussian).
- improve performance by using a 9 tap filter instead of 13 for
  in most cases
- fix usages of setMinMaxLevels as it resets the base level to "min"
2023-09-18 11:51:51 -07:00
Eliza Velasquez
58017a0e6a Tweak documentation
This is admittedly a very nitpicky change.

For most of the changes, I went through the various Markdown files and added
language names to the source blocks for better syntax highlighting on GitHub. It
also makes it easier to copy and paste commands without copying the leading `$`.
I avoided changing anything in `third_party`.

Additionally, I added some instructions for compiling the Android samples on the
command line and fixed some typos.
2023-09-12 20:28:46 +00:00
mackong
d9c2893976 Fix possible change of scale sign when decomposing matrix (#7138)
Co-authored-by: Mathias Agopian <mathias@google.com>
2023-09-12 12:28:02 -07:00
Mathias Agopian
da96b45827 apply shadow settings to all lights in the scene
this "fixes" point light shadows in gltf_viewer, which were never
enabled
2023-09-12 10:08:07 -07:00
Ben Doherty
2c63a5ad7a Fix use of -Wno-deprecated-register flag and MSVC (#7156) 2023-09-11 13:40:02 -07:00
Mathias Agopian
6fd5d45295 fix shadow stability when eye is far from world origin
in stable mode the scale was ever so slightly varying with the 
camera position, because it was calculated from the camera frustum in
world-space, this variation was amplified when the camera is far from 
the origin, which eventually caused the modulo needed for snapping the
shadowmap projection to widely vary, leading to the instability.

We now calculate the camera frustum sphere in view space, which is
guaranteed to be constant. If "shadow caster mode" is chosen, we 
quantize the scale a little bit so it stays constant.

The snapping code itself has been cleaned.
2023-09-08 11:19:19 -07:00
Mathias Agopian
e0a37de1ba cleanup 2023-09-07 00:09:02 -07:00
Mathias Agopian
4e2a791e81 Directional shadows can now be transformed
This setting only exists for artistic reasons.

b/297095805
2023-09-07 00:09:02 -07:00
Jacob Su
8d7743ce67 Bug: fix underscores literal operators c++ compatible error. (#7136) 2023-09-05 10:03:51 -07:00
mackong
682585be4a Fix TextureFlags for sheenRoughnessMap (#7139) 2023-09-05 10:00:12 -07:00
Romain Guy
9046d04de4 Fix a crash in gltfio when not using ubershaders (#7135) 2023-09-02 12:45:58 -07:00
Romain Guy
25a8291101 Don't force masked blending for transmission/volume materials (#7126)
* Don't force masked blending for transmission/volume materials

glTF lets you choose your own alpha mode when using the transmission
and volume material extensions. We were forcing the masked mode which
was incorrect, except to pass the standard tests.

* Update release notes
2023-08-30 13:34:49 -07:00