Commit Graph

710 Commits

Author SHA1 Message Date
Mathias Agopian
785ce645e2 pool allocators benchmark
this benchmark shows that, as we expected, on Android mutexes,
spinlocks and lock-free algorithms are running at similar performance.
2018-11-29 11:44:52 -08:00
Ben Doherty
fe4907d0ff Remove use of iostream in filamat (#549) 2018-11-29 10:35:37 -08:00
Philip Rideout
97d5f0f52c Fix libshader build for Windows. 2018-11-29 07:37:56 -08:00
Philip Rideout
239317ee10 Use resgen for libshaders. 2018-11-29 07:37:56 -08:00
Philip Rideout
4278e1bd59 Remove assimp usage from some sample apps.
This shows how resgen can be used for mesh data. It also removes the
MeshAssimp dependency from samples that were meant to be small and
self-contained.
2018-11-28 19:46:37 -08:00
Philip Rideout
12754fd7eb Minor resgen improvements.
This adds a couple optional features:

1) Preserve file extensions when generating symbols.
   This is useful to distinguish foo.vs from foo.fs

2) Append null characters to data blobs.
   Useful when treating FOO_DATA as a C string.
2018-11-28 16:58:41 -08:00
Philip Rideout
0b84425bd0 Fix up tangents in MeshAssimp to help with #528.
We started to write our own implementation of mikktspace, but it
required an unindexed mesh for input. This was awkward because assimp is
already applying a pipeline of operations that includes tangent
generation and indexing. It felt reduandant to add our own pipeline on
top of that (unindexing => tangentgen => reindexing).

Since assimp's CalcTangentsProcess method is already producing
tangents that follow the orientation implied by texture coordinates,
this simply needs to be tweaked to match glTF. (flip the bitangent)

Also fixed a bug for the case where models have neither UV's nor
tangents, where we were calling norm instead of normalize. :)
2018-11-28 15:46:04 -08:00
Ben Doherty
b759074c8f Deprecate set method on MaterialBuilder (#545)
* Remove the defines entry in material definitions

* Deprecate set function

* Remove some getter methods from MaterilaBuilder

* Fix tests, add to CI
2018-11-28 15:35:19 -08:00
Ben Doherty
3a677fa832 Fix matc crash (#546) 2018-11-28 15:00:45 -08:00
magicwhale
2a5e978f2e Changed MeshAssimp to use constants defined in assimp header files 2018-11-28 12:15:24 -08:00
Mathias Agopian
cf5606e940 Fix another bug in AtomicFreeList
An assert checking invariants would sometime trigger, the problem
was a logic error that would be exposed by a race when running out
of space in the list.

The root of the problem is that in one place we were not remapping the 
-1 offset to nullptr, storing a pointer violating our invariants.

Also added more asserts!!!
2018-11-28 12:10:23 -08:00
Romain Guy
e6cb4d0dfa Update sample screenshots in README 2018-11-28 11:43:13 -08:00
Philip Rideout
91abaf575b Add tangents utility to fix #532.
I tested this by writing a quick-and-dirty Sphere demo.
2018-11-28 11:27:37 -08:00
Romain Guy
47d10687a5 Fix docs 2018-11-28 10:03:38 -08:00
magicwhale
ad1f3cf133 Added support for different min and mag filter samplers in gltf_viewer (#539)
Modified MeshAssimp.cpp to support different min and mag filter types for gltf files.
2018-11-28 10:03:07 -08:00
François Guthmann
9915ec7841 EV100 formula typo (#543)
Forgot the parenthesis when I corrected it, I'm sorry...
2018-11-28 09:31:13 -08:00
Philip Rideout
0011b1bba3 Use resgen in samples and MeshAssimp. 2018-11-28 08:35:44 -08:00
Philip Rideout
39fbcec767 Refactor resgen functionality in CMakeLists.
By defining a top-level function, we will allow the use of resgen
in multiple projects.

Also removed an redundant edge in the dependency graph.
2018-11-27 21:59:25 -08:00
Mathias Agopian
3861accb97 split CommandStream.h and add systrace option
systrace can now be enabled in the CommandStream's Dispatcher, which
allows it to work with all backends.
2018-11-27 20:21:34 -08:00
Romain Guy
808fd9819c Sort FADE materials with TRANSPARENT materials (#535)
FADE is just a variant of TRANSPARENT that only affects shading.
This change introduces the "render blending mode" which is the
blending mode that must be used when generating the render keys.
2018-11-27 16:04:34 -08:00
Mathias Agopian
05854e0d05 port the "filament_calls" benchmark to google benchmark 2018-11-27 15:07:45 -08:00
Ben Doherty
a1ed3b81a3 Move static code analysis into filamat (#534)
* Handle static code analysis automatically

* Fix matc test cases

* Only call InitializeProcess once per process
2018-11-27 14:11:27 -08:00
Romain Guy
d62a7c7d8d Add bit of documentation 2018-11-27 14:00:26 -08:00
Sebastian Hartte
6b030c9694 More documentation of the free list 2018-11-27 11:44:32 -08:00
Sebastian Hartte
df4a2bb86e Fixes #542 by moving the assert to after checking for a possible race condition 2018-11-27 11:44:32 -08:00
Ben Doherty
0548b28535 Update glslang (#526)
* Update glslang

* Update builtinResource

* Add glslang update README
2018-11-27 09:52:03 -08:00
shartte
ae74911bee Implicit conversion to float3 does not work in these cases for MSVC. (#529) 2018-11-27 09:34:55 -08:00
Philip Rideout
30092dc12b Add style guidelines for strings.
This also adds the std:: qualifier to resgen (see also PR #356)
2018-11-27 09:05:57 -08:00
Philip Rideout
f5fc6fe4d7 Tweak shader model error message.
The error message could say "need 0x2 but contains 0x2" which is still
confusing. Now that we're printing the actual required shader model
in English, we can simply say:

    The material 'foobar' was not built for desktop.
    Compiled material contains shader models 0x2.
2018-11-27 09:05:15 -08:00
Philip Rideout
19026931a4 Fix Android warning. 2018-11-26 16:55:34 -08:00
Romain Guy
588ce8fe3f More code style cleanup 2018-11-26 14:07:07 -08:00
Romain Guy
44c4362edb Code style cleanups 2018-11-26 14:04:43 -08:00
Ben Doherty
594f1abbbc Rename GlslChunk to TextChunk (#527)
* Rename Glsl -> Text

* Make MaterialTextChunk and DictionaryTextChunk more generic
2018-11-26 14:02:04 -08:00
Romain Guy
20ffb52dc2 Re-enable glTF support (#505)
* Revert "Rollback MeshAssimp enhancements."

This reverts commit b3dce967eb.

* Re-enable glTF support

* Start looking for texture ids at 1, not 0

* Detect if the importer is glTF

* glTF and regular materials both work
2018-11-26 13:14:28 -08:00
Pixelflinger
cf4410f656 Add some libutils benchmarks 2018-11-26 11:51:17 -08:00
Pixelflinger
bc0f2f26f2 Tweak Profiler API so it works in multithread
Instead of using a singleton, Profiler has to be instantiated in the
scope/thread it is used.
2018-11-26 11:51:17 -08:00
Pixelflinger
80aa9964f5 Add google benchmark to the build 2018-11-26 11:51:17 -08:00
Pixelflinger
417d606e5b fix google benchmark README so it works in CLion 2018-11-26 11:51:17 -08:00
Pixelflinger
42a55d3b08 fix google benchmark build for ANDROID SDK < 29 2018-11-26 11:51:17 -08:00
Pixelflinger
6a38c8fde6 fix google benchmark with emscripten (workaround) 2018-11-26 11:51:17 -08:00
Pixelflinger
89f739fd06 add google benchmark library 2018-11-26 11:51:17 -08:00
Ben Doherty
6d158bbc80 Remove codeGenTargetApi (#511) 2018-11-26 10:51:34 -08:00
Philip Rideout
0fda416c49 Use resgen for Filament built-in materials. 2018-11-26 10:31:09 -08:00
shartte
9ab9333fa5 Fixes various MSVC issues in public headers (#523) 2018-11-26 09:17:19 -08:00
François Guthmann
78804251e9 Corrected typo in formula (#519)
It looks like there is a minus sign missing in there, see https://www.wolframalpha.com/input/?i=(((1%2Bsqrt(x))+%2F+(1+-+sqrt(x)))+-+1.5)+%2F+(((1%2Bsqrt(x))+%2F+(1+-+sqrt(x)))+%2B+1.5)

I'm not sure what the code does though https://github.com/google/filament/blob/master/shaders/src/brdf.fs#L282
2018-11-23 10:09:54 -08:00
François Guthmann
5a402dc6a8 Corrected exposure from ev100 formula (#518)
The new formula should be the correct one according to this document (first line p86): https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
2018-11-22 10:03:29 -08:00
Philip Rideout
0807cfbaaa Fix Windows build. 2018-11-21 22:14:22 -08:00
Philip Rideout
e90b53fdce Introduce resgen tool for embedding binary blobs.
This tool can be used to replace inc files for built-in materials. The
inc files are unfriendly to IDE's and do not extend to non-material
resource types such as baked texture data.

The tool aggregates a sequence of binary blobs, each of which becomes a
"resource" whose id is the basename of the input file. It produces the
following set of files:

    resources.h ......... declares sizes and offsets for each resource
    resources.S ......... small assembly file with incbin directive
    resources.apple.S ... ditto but with different rodata name
    resources.bin ....... the aggregated binary blob
    resources.c ......... large xxd-style array (only for WASM)

We did an experiment to test the incbin directive on a variety of
platforms in PR #510.
2018-11-21 17:18:21 -08:00
Romain Guy
55dd612c64 Add screenshots to Android samples' README (#513)
This change also optimizes the size of existing images using squoosh.app.
This should make the main README a lot lighter and faster to load (it saves
several MiBs).
2018-11-21 14:16:21 -08:00
Mathias Agopian
d1b19efa55 a fast approximation of pow() and pow(x, 2.2f)
fast::pow(x, 2.2f) is about 100x faster than std::pow.
std::pow(x, 2.2f) takes roughly 1000 cycles.
2018-11-21 13:46:56 -08:00