Commit Graph
710 Commits
Author SHA1 Message Date
Romain Guy 42e319e074 Add white furnace IBL (#89)
Useful to test BRDFs and energy conservation
2018-08-13 15:51:44 -07:00
Philip Rideout acffdb328a Fix release-only warnings. (#88) 2018-08-13 15:26:51 -07:00
Philip Rideout 143da431c1 Enable image comparison in unit test. (#86) 2018-08-13 12:31:04 -07:00
Romain Guy 45b36e9306 Add link to Python bindings 2018-08-13 12:23:52 -07:00
Romain Guy 3a538f90c8 Update docs 2018-08-13 12:22:53 -07:00
Mathias Agopian c91d2aedd8 per-light multithreading works again for froxelization
We spawn MAX_LIGHTS/32 (currently 8) jobs and
multi-threading is active as soon as we have more
than one light. All jobs work on disjoint buffers
to avoid false sharing between threads.

It’s possible to adjust roughly the number of jobs
by changing the group size (currently 32). However
this also affects vectorization.

With the current parameters, with 256 lights max
we get 8 jobs, and 4 spot-light test / froxel.
2018-08-13 11:36:24 -07:00
Mathias Agopian 7b7bd85def New froxelization algorithm that uses much less memory
Instead of building a list of froxel per light,
we now build a bitfield of lights per froxel.
To keep the code efficient we have to split
the bitfield array in 4, so that we can use
multiple threads without having them or’ing
each other’s cache-lines.

This data structure is also what we want in 
froxelizeAssignRecords(), and the conversion from
one format to the other is much faster.

Our internal data structure is now 256 KiB
instead of 2 MiB. It would be 1 MiB for 1024 lights
(down from 16 MiB)

Additionally, because the code is simpler, we get
more vectorization, especially with spot-lights.

One draw-back of the current version is that
multi-threading happens only every 64 lights.
This will be fixed later.
2018-08-13 11:36:24 -07:00
Philip Rideout 1f380a6ec6 Introduce new image library, Phase I. (#80)
* Overhaul the image library, Phase I.

The preps for our upcoming mipgen command line tool by adding filtering
capabilities and unit tests for a new LinearImage class, which will
subsume Image (deprecated).

Filament's new image library is composed of three components:

- LinearImage....simple 3D tensor of floats
- ImageOps.......free functions for simple transforms
- ImageSampler...high quality filtering

The old Image class was a simple untyped data blob and is now
deprecated. The new LinearImage class is always float32, and always
stores pixels in packed scanline order. This makes it easier to
implement image-based algorithms because they can be agnostic of the
underlying format.

Remaining refactorings:
- Phase  II will migrate imageio to LinearImage
- Phase III will migrate all downstream tools to LinearImage
- Phase  IV will remove old the Image class

* Image library code review feedback.
2018-08-13 10:39:57 -07:00
Romain Guy c546890294 Add issue templates 2018-08-13 09:12:40 -07:00
Omar Shehata 41bbac7098 Fix typo (#85)
Fixing a typo in the overview section.
2018-08-13 07:44:31 -07:00
Mathias Agopian a4851ed835 fix a bunch of clang-tidy warnings
fixed a couple actual real bugs (missing returns 
in operator=, wrong implicit bool conversion).

mostly added a bunch of explicit ctor.
2018-08-10 20:53:58 -07:00
Romain Guy 9ac432d530 Fix continuous integration tests 2018-08-10 16:23:03 -07:00
Romain Guy 451d62e4de Fix artifacts location (#78) 2018-08-10 16:07:29 -07:00
shartte 6216b1a459 Remove more unsupported compiler flags when clang-cl.exe is being used. (#76) 2018-08-10 15:35:49 -07:00
Romain Guy 56d280a729 Exclude more tests 2018-08-10 15:14:39 -07:00
Romain Guy 5aab9b016f Fix tests list 2018-08-10 14:50:23 -07:00
Romain Guy af13e385c1 Run unit tests in continuous builds (#75) 2018-08-10 14:31:41 -07:00
Philip Rideout 3e9979b75d Fix the surfaceCapabilities check. (#74)
Some Intel drivers report a max image count of 0, which is legit.

Fixes #71.
2018-08-10 13:28:59 -07:00
prideout 307f4782ae Disable hex mode after printing diagnostics. 2018-08-10 12:09:09 -07:00
Philip Rideout fbe854e37d VulkanDriver now prints GPU info. (#73)
This is motivated by #71.
2018-08-10 11:58:03 -07:00
Romain Guy 263012384b Mac buils should inspect the job name (#72) 2018-08-10 11:19:52 -07:00
Mathias Agopian 8d2b3b2229 froxelization fixes (#70)
* fix stack corruption when the scene has more than 255 lights

* fix froxelization with more than 255 lights

Make sure froxelization works when the engine is
configured with more than a maximum of 255 lights.

The main issue was that the froxel structure on the
GPU uses 8 bits to encode the light count (per
froxel). So we have this 255 light max per
froxel limitation. The CPU code now honors this.

With this change we can go back to 256 lights
from 255!

All that said, it’s not recommended to increase
the maximum number of lights because the memory
usage on the CPU explodes. For instance we
go from 4 MiB with 256 lights to 18 MiB for 1024.
2018-08-09 23:07:24 -07:00
Romain Guy 12da05e249 Update docs 2018-08-09 17:41:07 -07:00
Mathias Agopian d6746e1140 Set max number of lights to 255 instead of 256 (#66)
This always was the intention because internally 
it uses 8-bits buffers instead of 16-bits. One of
our temporary buffer goes from 4 MiB to 2 MiB.
This got mistakenly changed to 256 recently.
2018-08-09 17:30:59 -07:00
Philip Rideout 07c34ee833 Simplify Image by flipping RADIANCE images. (#63)
* Simplify Image by flipping RADIANCE images.

Unit test for the new flip() method is forthcoming.

* Optimize image flipping.
2018-08-09 17:30:17 -07:00
Romain Guy 0f20068775 Detect GCC before attempting a build (#64)
This change fixes #62
2018-08-09 17:12:37 -07:00
Romain Guy 6b1788fc6e Add about section 2018-08-09 16:06:50 -07:00
Philip Rideout 69b65d9e2d Rename ColorSpace header to ColorTransform. (#61) 2018-08-09 15:54:18 -07:00
Romain Guy e5535c7a66 Rg/less warnings (#60)
* Fix warnings for real this time
2018-08-09 14:16:10 -07:00
Philip Rideout 9ed20705ec Refactor color space utilities. (#58)
* Refactor color space utilities.

* Repair Android build.
2018-08-09 13:58:58 -07:00
Ben Doherty 714e0c18e0 Fix build error on Windows 2018-08-09 13:26:44 -07:00
Romain Guy 69941a2795 Remove warnings on Darwin and Linux (#59) 2018-08-09 11:39:15 -07:00
Ben Doherty b0ab4c7321 Fix various compiler warnings on Windows (#56) 2018-08-09 10:27:43 -07:00
Romain Guy 70391fa16b Fedora needs libcxx-devel 2018-08-09 10:21:59 -07:00
Romain Guy 202ce993af Document pre-exposed lights
Fixes various mistakes
Add link to the GitHub project
Document the IBL specular in the cloth section
2018-08-09 10:18:51 -07:00
Ben Doherty b8a2457e28 Revert "Don't require Python to build (#51) (#55) 2018-08-09 09:53:35 -07:00
Romain Guy 128ab657df Switch cloth model from Ashikhmin NDF to "Charlie" NDF (#53)
* Add new Cloth NDF

Based on the work by Estevez and Kulla, also known as the "Charlie" sheen.

* Restore DFG computation to GGX

* New proposed approximation for Cloth DFG

* Add "Charlie" cloth DFG approximation to cmgen

* Switch to "Charlie" sheen for cloth shading

* Document the new cloth NDF and DFG approximation
2018-08-08 17:22:41 -07:00
Mathias Agopian a6877d5baa Fix cmgen cross cubmap input
Fixes bug #45
2018-08-08 16:50:02 -07:00
Romain Guy 9ee46fa8cf Don't require Python to build (#51)
Fixes #50
2018-08-08 12:57:22 -07:00
Ben Doherty 520ff90f34 Fix pathing issues on Windows (#49) 2018-08-08 12:17:30 -07:00
Romain Guy f3c4582727 Update incorrect Charlie DFG (#48) 2018-08-08 10:26:26 -07:00
Romain Guy 9df04b8670 Allow Android CI builds to run on Darwin (#47)
CI builds seem faster on macOS, this change prepares the scripts to move CI to macOS machines for Android builds.
2018-08-08 09:47:16 -07:00
Romain Guy 294bc98940 Make spirv-tools more quiet (#46)
We don't need the pkg-config step of spirv-tools' build configuration. Let's turn this off to keep the build quiet when nothing has changed.
2018-08-08 09:46:22 -07:00
Damianno19 3d9dfd5085 Fix forward declaration type. (#44)
* Update MaterialBuilder.h

* Fix forward declaration type. Class instead struct
2018-08-08 08:53:32 -07:00
emmcbd de1743c572 Fix huge memory allocation when decoding PNG, which can end up with std::bad_alloc (#43) 2018-08-08 07:45:57 -07:00
Romain Guy bb75923b79 Fix post-process shader when not in Vulkan (#41)
* Fix post-process shader when not in Vulkan

The post-process shader must not flip the source texture when we compile for OpenGL. This happens because we use SPIR-V/Vulkan as an intermediate format.

* Fix the Android build

We need to output a location when targeting SPIR-V for mobile.
2018-08-07 18:46:30 -07:00
Mathias Agopian 8c2da20e31 move intersection tests to their own headers
since the code is generic enough, move
sphere-plane and sphere-cone intersection tests
to their own header.
2018-08-07 18:30:17 -07:00
Mathias Agopian 8bd7688d33 slightly improve froxelizer unit test 2018-08-07 17:51:07 -07:00
Ben Doherty 46228e9610 Fix shader compilation on Windows 2018-08-07 17:10:03 -07:00
Philip Rideout f8a8098e0f Split off imageio lib from image. (#36)
* Split off imageio lib from image.

* Remove duplicated math funcs.
2018-08-07 16:38:04 -07:00