Commit Graph

5637 Commits

Author SHA1 Message Date
Mathias Agopian
ebb07520c0 change picking to use floats (#6747)
floats can have up to 16.7M unique integers which is enough for encoding
an Entity. 
This change will help a later one that adds support for ES2
2023-04-19 13:53:45 -07:00
Benjamin Doherty
29d5ae621a Release Filament 1.32.4 2023-04-19 14:09:32 -04:00
Mathias Agopian
6e275514ad matc: attributes are no longer hardcoded in a file
They're not hardcoded in a database inside MaterialBuilder and are
generated. This will be needed later for ES2 support.

We could actually imagine something more dynamic in the future too.
2023-04-18 15:09:43 -07:00
Benjamin Doherty
08503943f4 Update web docs 2023-04-17 13:29:47 -04:00
Elie Michel
0c547748bf Small typos in Design doc (#6740) 2023-04-17 10:23:16 -07:00
Powei Feng
19ab9f0403 vulkan: refactor image layout transition (#6729)
- Moved most of the layout transition logic into VulkanImageUtil
   so that we'd have a single place to consider if failure arises
 - Add an abstraction on top of vk's layouts so that reasoning
   about our use cases (and corresponding layout is easier).
 - Removed the redundant VulkanDepthLayout
 - Refactor VulkanTexture::transitionLayout so that most of the
   transition paths can be done through this entry point. It also
   enables us to handle tracking the current layout.
 - Add a special case to transition the depth attachment/texture
   if it is both a sampler and an attachment.
 - Add a few debug printing markers across the classe - guarded
   under the existing FILAMENT_VULKAN_VERBOSE define.
2023-04-12 15:49:37 -07:00
Mathias Agopian
c895554a22 don't write floats with a trailing f
this is not supported in ES2
2023-04-12 10:12:19 -07:00
Mathias Agopian
968c2c40fa Cleanup shader generation
- refactor the code so that all defines are generated in the same place
- generate common_type after all defines are generated
- protect (with defines) structures and UBOs that are not needed, based
  on the variant
2023-04-12 10:12:19 -07:00
Mathias Agopian
de845d2885 make CodeGenParam a parameter of semantic analysis 2023-04-12 10:12:19 -07:00
Mathias Agopian
0e1f57d712 simplify code that resolves precision qualifiers
Some logic specific to uniform was pushed too low in the method 
resolving a precision to a string.
2023-04-12 10:12:19 -07:00
Mathias Agopian
6b3dfbc635 reduce our reliance on unsigned types
This is to facilitate ES2 support, in all places where unsigned types
were not strictly needed, we now use the corresponding signed type.
2023-04-12 10:12:19 -07:00
Mathias Agopian
5e2b4dec99 fix specification constant injection in glsl
- boolean where handled as int
- always cast float to float()
2023-04-11 15:56:06 -07:00
Powei Feng
0cd4a143ab vulkan: fix spec constant bool size 2023-04-11 15:55:37 -07:00
Ben Doherty
c7ad9acc79 Fix float spec constant formatting (#6731) 2023-04-11 15:55:04 -07:00
Benjamin Doherty
afeaf90d0d Fix build when exceptions disabled 2023-04-11 15:36:24 -07:00
Benjamin Doherty
3603aaafa6 Release Filament 1.32.3 2023-04-11 11:17:21 -07:00
Ben Doherty
6cab8d2cd4 Expose specialization constants to materials as constant parameters (#6652) 2023-04-11 11:09:53 -07:00
Ben Doherty
ca2f3d76e6 Metal: work around iPad pipeline error (#6724) 2023-04-10 16:45:38 -07:00
daemyung jang(danny.jang)
a2beaf0582 Support the external image on macOS (#6689)
* Support the external image on macOS

Implement CocoaExternalImage.

* Fix to take an onwership of the external image

* Correct incorrect comments

* Rename a function explicitly

Make a function name to know copying RECTANGLE to TEXTURE2D.

* Do lazy initialization

Create CocoaExternalImage::SharedGl when it's needed.

* Fix a crash when engine is terminated

Destroy the external image shared gl before gl context is destroyed.

* Remove an useless variable
2023-04-10 09:38:26 -07:00
Romain Guy
4a116e6791 Improve size optimizations when compiling material (#6721)
* Improve size optimizations when compiling material

This changes the behavior of the size optimizer in matc (-S), but
only for GLSL and MSL. With this change we gain a ~65% size reduction
on a lit material compiled for OpenGL. To get those gains we generate
extra SPIRV debug information to preserve variable names and better
utilize the line dictionary. Unfortunately this break the SPIRV
optimizer so we skip it and instead rely on a simple DCE pass provided
by glslang. We also enhance the whitespace removal pass of the GLSL
minifier to move lone { and } to the previous line, which avoids
generating an extra index in each shader variant. Each index being
at least as big as the character itself, this is quite wasteful.

When generating SPIRV for Vulkan, we rely on spirv-opt for size
optimizations as before.
2023-04-07 09:34:43 -07:00
Mathias Agopian
040fc64583 Improve how we cache shared shaders
Some shaders can be shared across all materials (e.g. the depth 
shaders). We use the filament default material as the "source" of
the cache, but until now we relied on an a priori knowledge of which
variants were present in the default material.

With this change, we now query once the list of variants (of interest)
in the default material and reuse that list for caching these variants
later.

This is better because the cached variants are now entirely driven by
the default material (which they depend on anyways). This is also faster
because we don't need to query which variant we need each time we create
a material.
2023-04-07 09:33:26 -07:00
Mathias Agopian
e19011d0e0 use the enum instead of ints everywhere for ShaderModel and ShaderStage 2023-04-07 09:33:26 -07:00
Mathias Agopian
8d3b395e86 ProgramBuilder is a relic, rename to Program 2023-04-07 09:33:26 -07:00
Mathias Agopian
2d1d8a6eec add a few asserts 2023-04-07 09:33:06 -07:00
Powei Feng
498a355fb2 vulkan: Fix validation errors (#6717)
- Depth attachment layout has generated a lot of error due to
   it being read-only. But the store-ops for the attachment during
   the renderpass are all write ops. We set the depth attachment
   layout as VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
 - Enable extra blitting step for SSAO because of the above layout
   conundrum.
 - Index buffers did not have a pipeline barriers after loading
   them.
 - Remove `assert_invariant(utils::popcount(sampleCount) == 1);`
   from `reduceSampleCount`. This assert fails when enabling the
   duplicate pass for SSAO.
2023-04-06 17:32:27 -07:00
Powei Feng
944031af14 vulkan: add missing index buffer barrier (#6718) 2023-04-06 15:09:10 -07:00
Mathias Agopian
ee9d427526 hellotriangle can now choose the backend 2023-04-05 16:22:46 -07:00
Benjamin Doherty
9b98ae66ce Release Filament 1.32.2 2023-04-05 12:54:40 -07:00
Mathias Agopian
126ba44719 expose getShadowCascade() only when shadowing and lighting is enabled 2023-04-04 21:31:23 -07:00
Mathias Agopian
503e3ba555 honor matc -t (print shader) options, even when compilation fails early 2023-04-04 21:30:49 -07:00
Mathias Agopian
c264d26edd filter out VSM variant for unlit materials DEPTH shaders
The VSM variant is never needed for unlit materials, it was filtered
out correctly for color shaders but not for the depth shaders.
This removes 4 variants from all unlit materials.

Also improve matinfo variants output.
2023-04-04 16:52:04 -07:00
Romain Guy
185c68c55b Suppress numerous libz warnings (#6709)
* Suppress numerous libz warnings

zlib will fix this issue later (see https://github.com/madler/zlib/issues/633).
For now we will just turn off the warning.

* Fix Windows build
2023-04-04 11:15:39 -07:00
Romain Guy
4624b0d1a1 Update libz and libpng to fix compilation warnings (#6708) 2023-04-04 10:07:18 -07:00
Romain Guy
5fe0a50c99 Update spirv-cross to fix build failures with recent versions of clang (#6707) 2023-04-04 10:06:57 -07:00
Mathias Agopian
a484fe1de3 rename ChunkcContainer::addChild/addSimpleChild to push/emplace (#6704)
'child' didn't make any sense in this API, push/emplace mimics
std::vector, which is closer to what the api actually does.
2023-04-03 14:06:42 -07:00
Mathias Agopian
e48690bdf9 matc: new feature-level options
The feature-level option sets the maximum feature level allowed for
the material. matc will fail if the specified material has a higher
feature level than the value set with the feature-level option. The
default is 3 (max).

This can be used to ensure that materials don't use features above
a specified level.
2023-04-03 14:05:38 -07:00
Mathias Agopian
bc40ff7f19 fix typos in documentation
Fixes #6294
2023-03-31 15:27:50 -07:00
Mathias Agopian
30979124b5 skinning now works when the model is far from the origin
We are doing skinning computations effectively in world space, so
some of the math must be done in high-precision.
2023-03-31 14:47:54 -07:00
Mathias Agopian
6eb4c5e356 gltf_viewer: debug option to move the origin far away 2023-03-31 14:47:54 -07:00
Ben Doherty
38ede3719f TangentSpaceMesh fixes (#6697) 2023-03-31 12:03:49 -07:00
Mathias Agopian
4503ad1e34 fix -ffast-math and -fno-finite-math-only
- remove -ffast-math in place where it didn't seem too useful
- added -fno-finite-math-only everywhere we use -ffast-math so that
  isinf/isnan work.
2023-03-30 16:15:42 -07:00
Romain Guy
9fc6b0d654 Update LICENSE (#6691) 2023-03-28 17:27:31 -07:00
Romain Guy
d00223332e Update README.md 2023-03-28 15:22:20 -07:00
Mathias Agopian
d3013ae151 better selection of opengl context version on desktop
fixes #6682
2023-03-28 11:59:05 -07:00
Mathias Agopian
b2fc46c320 start froxelization earlier 2023-03-28 10:46:11 -07:00
Romain Guy
53aac259a0 Fix emscripten compilation errors and warnings (#6688)
These errors and warnings only appear with more recent versions of
the emscripten SDK.
2023-03-27 17:33:45 -07:00
Powei Feng
af35b87d5b vulkan: prefer discrete GPU over integrated (#6677) 2023-03-27 08:09:16 -07:00
Mathias Agopian
0171452b02 fix stream unit-test 2023-03-24 17:30:00 -07:00
alexfh
065a33c846 Add a missing #include <exception>
... which is needed to avoid compilation error with recent LLVM libc++ (after https://reviews.llvm.org/D146097). Previously, symbols like std::terminate() were available through other headers (e.g. <functional>, <vector>, etc.).
2023-03-24 17:21:28 -07:00
Mathias Agopian
90601b9471 update remote ui 2023-03-24 17:19:35 -07:00