Commit Graph

630 Commits

Author SHA1 Message Date
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
Mathias Agopian
adbe3a75f2 don't use a deque for the frame history
deque is not worth it with few items.
2018-11-21 13:46:07 -08:00
Mathias Agopian
75aaa3d9ab don't use a deque for just a handful of elements
this eliminates a bunch of code
2018-11-21 13:46:07 -08:00
Mathias Agopian
265bae40db Improve/comment FrameSkipper
Try to make FrameSkipper a little less confusing.
2018-11-21 13:46:07 -08:00
Mathias Agopian
9e39004b1f Add wait_for and wait_until to our Condition implementation
We're using timed condition variable in one place, but the STL version
pulls in a lot of code because it does clock calculations in 
"long double" (!!!!). Since we already had an implementation
of condition_variable, we just add the timed version.
This saves several KiB of code.

Also don't use unique_lock() lock/unlock because it can throw exceptions.
2018-11-21 13:46:07 -08:00
Mathias Agopian
7b2a1b0018 Get rid of the memory pool for UniformBuffer
The Pool wasn't used much anymore, since we're explicitly copy
the data into the command stream. Moreover, it generated a lot of code
and in fact was probably less efficient than malloc itself -- 
I think this was a misguided optimization in the first place.
2018-11-21 13:46:07 -08:00
Mathias Agopian
1212728e45 get rid of std::string in OpenGLProgram
This was generating tons of code.
2018-11-21 13:46:07 -08:00
Mathias Agopian
815fb36b98 code size optimizations
- prevent unrolling of some loops. e.g. one loop generated more than
  1 KB of code!
2018-11-21 13:46:07 -08:00
Mathias Agopian
5bcc4cfff1 Improve the slow-path of creating a program
This removes a lot of heap allocations/deallocations, and reduces
code size. Most improvements come from using CString and
StaticString instead of std::string and better using move
semantics.
2018-11-21 13:46:07 -08:00
Mathias Agopian
c1a7164084 Improve usage of CString
This cuts down 7 calls to free() to 1, when
instantiating a new program. There are still many low-hanging fruits
there.
2018-11-21 13:46:07 -08:00
Mathias Agopian
9bb87b8725 minor reorganizing of the command loop 2018-11-21 13:46:07 -08:00
Philip Rideout
454c102e3c Remove non-existing option from build help. 2018-11-21 12:12:37 -08:00
Philip Rideout
ee26f58dcf Improve error reporting for ShaderModel mismatch.
Aaron pointed out that this error is easy to run into and quite cryptic
since one value is decimal and the other is hex. Users might not be
aware that one of them is a bitmask, and that this is related to how
they invoke matc or filamat.
2018-11-21 12:12:37 -08:00
prideout
776284b2b5 Raise sampler limit to 16.
In practice this limits materials to 10 samplers since Filament uses 5
for lights and skips 1 slot for the post-process sampler. This can
probably be optimized.
2018-11-20 16:05:16 -08:00
Ben Doherty
86fb7b4524 Compile filamat and dependencies for all platforms (#506)
* Compile filamat and dependencies for all platforms

* Describe changes made to CMakeLists
2018-11-20 15:31:16 -08:00
prideout
cfa9895b96 Improve error reporting for bindings overflow.
We now check for sampler overflow during material compilation rather
than waiting for run-time checks. This allows for Kokoro-based
validation of sample materials, and allows developers to catch this
issue in their asset pipeline.

We should also probably raise the upper limit (Qualcomm allows up to 16
samplers in their Vulkan implementation) but that can be a separate PR.

Fixes #507
2018-11-20 15:28:02 -08:00
Ben Doherty
b5fa822e86 Move GLSLPostProcessor and dependencies into filamat (#500)
* Move GLSLPostProcessor into filamat
2018-11-20 12:30:26 -08:00
Philip Rideout
aa0090a85b Fix build warnings. 2018-11-19 15:59:31 -08:00
Philip Rideout
0d476b9f6d Fix debug builds. 2018-11-19 15:45:40 -08:00
prideout
694eab703c Remove usage of std::string in VulkanDriver. 2018-11-19 14:18:39 -08:00
Philip Rideout
b3dce967eb Rollback MeshAssimp enhancements.
This caused regressions with some of our samples like vk_hellopbr:

- For the new 1x1 textures, RGB isn't accepted by Vulkan and Metal.
  Currently these platforms require RGBA, although we plan on adding
  reshaping functionality for the future.
- Too many texture samplers in a single shader, this causes a run time
  error. This could be alleviated by creating an atlas.
- vk_hellopbr assumes that all materials have a "metallic" param.

Going forward, we plan on creating a new library that avoids MeshAssimp,
so for now let's just disable gltf_viewer.
2018-11-19 14:18:12 -08:00
Philip Rideout
1413b4d622 Fix path in vk_texturedquad 2018-11-19 14:17:13 -08:00
magicwhale
fc0d587b40 Added support for more features in gltf_viewer sample 2018-11-19 09:27:08 -08:00
magicwhale
1d392d38bd updated assimp 2018-11-19 09:27:08 -08:00
magicwhale
bc38c8a773 Edited MeshAssimp and added gltf_viewer sample code 2018-11-19 09:27:08 -08:00
Philip Rideout
84d2fb222b Flesh out JS bindings a bit. 2018-11-16 17:21:44 -08:00
Philip Rideout
1ed8618cca Refresh website to publish new tutorial. 2018-11-16 17:21:18 -08:00
Philip Rideout
edb545919a Fix regression with non-Vulkan backends.
This fixes the "shader is not ASCII" error seen with GL backend,
introduced when we changed blob ownership semantics to accommodate
shader compression. It was due to missing null terminators.

We actually never bothered including the trailing null in blob length,
which was wrong but happened to work because the BlobDictionary held a
weak reference to chunk data. SInce it now holds an actual copy, the
lack of null caused our strings to contain garbage memory.
2018-11-16 15:43:41 -08:00
Philip Rideout
e652507315 Tutorial fixups per code review feedback. 2018-11-16 14:09:41 -08:00
Philip Rideout
ffff8437ba Add tutorial that describes compression and async loading. 2018-11-16 14:09:41 -08:00
Philip Rideout
b2a2da532a Fix Android-with-Vulkan build. 2018-11-16 12:07:23 -08:00