blender_test/intern/cycles/util
Lukas Stockner e308b891c8 Cycles: Use faster and exact GGX VNDF sampling algorithm
Based on "Sampling the GGX Distribution of Visible Normals" by Eric Heitz
(https://jcgt.org/published/0007/04/01/).

Also, this removes the lambdaI computation from the Beckmann sampling code and
just recomputes it below. We already need to recompute for two other cases
(GGX and clearcoat), so this makes the code more consistent.

In terms of performance, I don't expect a notable impact since the earlier
computation also was non-trivial, and while it probably was slightly more
accurate, I'd argue that being consistent between evaluation and sampling is
more important than absolute numerical accuracy anyways.

Differential Revision: https://developer.blender.org/D17100
2023-01-24 17:59:29 +01:00
..
algorithm.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
aligned_malloc.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
aligned_malloc.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
args.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
array.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
atomic.h Cycles: Add support for rendering on Intel GPUs using oneAPI 2022-06-29 12:58:04 +02:00
boundbox.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
CMakeLists.txt Cycles: Remove OpenGL header 2022-12-02 17:19:00 +01:00
color.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
debug.cpp Cycles: remove SSE3 and AVX kernel optimization levels 2023-01-16 17:53:36 +01:00
debug.h Cycles: remove SSE3 and AVX kernel optimization levels 2023-01-16 17:53:36 +01:00
defines.h Cycles: Add basic support for using OSL with OptiX 2022-11-09 15:30:21 +01:00
deque.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
disjoint_set.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
foreach.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
function.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
guarded_allocator.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
guarded_allocator.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
guiding.h Cycles: add Path Guiding on CPU through Intel OpenPGL 2022-09-27 15:56:32 +02:00
half.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
hash.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
ies.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
ies.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
image_impl.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
image.h Cycles: load 8 bit image textures as half float for some color spaces 2022-06-02 18:04:38 +02:00
list.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
log.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
log.h Cleanup: add verbose logging category names instead of numbers 2022-06-17 14:08:14 +02:00
map.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
math_cdf.cpp Cycles: Fix recently introduced off-by-one error in an assert 2023-01-10 02:10:20 +01:00
math_cdf.h Fix T88849: Motion blur in cycles leaves bright edge on trailing end of blur 2023-01-09 03:08:36 +01:00
math_fast.h Fix Cycles SSE4 define for fast math rint function. 2022-12-06 19:06:43 +01:00
math_float2.h Cycles: Use faster and exact GGX VNDF sampling algorithm 2023-01-24 17:59:29 +01:00
math_float3.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_float4.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_float8.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_int2.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_int3.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_int4.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_int8.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
math_intersect.h Cycles: store axis and length of an area light instead of their product 2022-12-02 15:23:09 +01:00
math_matrix.h Cleanup: use make_float4(f) zero_float4() to simplify code 2022-03-23 20:06:12 +01:00
math.h Cycles: Cleanup: Add general-purpose conversion between sin and cos 2023-01-24 17:59:29 +01:00
md5.cpp Cycles: Remove use of sprintf() in MD5 code 2022-11-03 15:10:37 +01:00
md5.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
murmurhash.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
murmurhash.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
openimagedenoise.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
openvdb.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
optimization.h Cycles: remove SSE3 and AVX kernel optimization levels 2023-01-16 17:53:36 +01:00
param.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
path.cpp Cycles: Cache only up to 5 kernels of each type on Metal 2022-11-11 18:10:29 +00:00
path.h Cycles: Cache only up to 5 kernels of each type on Metal 2022-11-11 18:10:29 +00:00
profiling.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
profiling.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
progress.h Cycles: take into account time limit for progress bar 2022-08-11 19:37:18 +02:00
projection.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
queue.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
rect.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
semaphore.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
set.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
simd.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
simd.h Cleanup: clang-format 2022-04-13 13:45:42 +10:00
stack_allocator.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
static_assert.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
stats.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
string.cpp Cycles: Apple Silicon optimization to specialize intersection kernels 2022-07-15 13:40:04 +02:00
string.h Cycles: Apple Silicon optimization to specialize intersection kernels 2022-07-15 13:40:04 +02:00
system.cpp Cleanup: remove unused functions 2023-01-16 19:40:25 +01:00
system.h Cycles: remove SSE3 and AVX kernel optimization levels 2023-01-16 17:53:36 +01:00
task.cpp Cleanup: add verbose logging category names instead of numbers 2022-06-17 14:08:14 +02:00
task.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
tbb.h Fix T97498, T97651: crash in Cycles with TBB 2021 after recent changes 2022-04-28 00:24:13 +02:00
texture.h Images: add mirror extension type 2022-12-14 19:27:29 +01:00
thread.cpp Fix T103960: build issue with GCC 13 in Cycles thread code 2023-01-18 16:43:47 +01:00
thread.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
time.cpp Cycles: unify math functions names 2022-06-23 15:02:53 +02:00
time.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
transform_avx2.cpp Cycles: make transform inverse match Embree exactly 2022-08-09 16:59:05 +02:00
transform_inverse.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
transform_sse41.cpp Cycles: make transform inverse match Embree exactly 2022-08-09 16:59:05 +02:00
transform.cpp Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
transform.h Cycles: Add basic support for using OSL with OptiX 2022-11-09 15:30:21 +01:00
types_float2_impl.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_float2.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_float3_impl.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_float3.h Cycles: use packed float3 back for oneAPI 2022-10-26 10:53:23 +02:00
types_float4_impl.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_float4.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_float8_impl.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
types_float8.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
types_int2_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_int2.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_int3_impl.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_int3.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_int4_impl.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_int4.h Cleanup: make vector types make/print functions consistent between CPU and GPU 2022-08-09 16:07:23 +02:00
types_int8_impl.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
types_int8.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
types_spectrum.h Cycles: add new Spectrum and PackedSpectrum types 2022-08-09 16:49:34 +02:00
types_uchar2_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uchar2.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uchar3_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uchar3.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uchar4_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uchar4.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint2_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint2.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint3_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint3.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint4_impl.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_uint4.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types_ushort4.h Cleanup: simplifications and consistency for vector types 2022-07-28 21:27:13 +02:00
types.h Refactor: replace Cycles sse/avx types by vectorized float4/int4/float8/int8 2022-11-08 12:28:40 +01:00
unique_ptr.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
vector.h Cleanup: simplify CPU instruction checking 2022-08-09 16:59:05 +02:00
version.h Cycles: sync changes from standalone repository 2022-09-18 17:34:23 +02:00
windows.cpp Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
windows.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00
xml.h Cycles: use SPDX license headers 2022-02-11 17:47:34 +01:00