blender/intern
Sergey Sharybin dc7bbd731a Cycles: Fix wrong hair render results when using BVH motion steps
The issue here was mainly coming from minimal pixel width feature
which is quite commonly enabled in production shots.

This feature will use some probabilistic heuristic in the curve
intersection function to check whether we need to return intersection
or not. This probability is calculated for every intersection check.
Now, when we use multiple BVH nodes for curve primitives we increase
probability of that primitive to be considered a good intersection
for us. This is similar to increasing minimal width of curve.

What is worst here is that change in the intersection probability
fully depends on exact layout of BVH, meaning probability might
change differently depending on a view angle, the way how builder
binned the primitives and such. This makes it impossible to do
simple check like dividing probability by number of BVH steps.

Other solution might have been to split BVH into fully independent
trees, but that will increase memory usage of all the static
objects in the scenes, which is also not something desirable.

For now used most simple but robust approach: store BVH primitives
time and test it in curve intersection functions. This solves the
regression, but has two downsides:

- Uses more memory.

  which isn't surprising, and ANY solution to this problem will
  use more memory.

  What we still have to do is to avoid this memory increase for
  cases when we don't use BVH motion steps.

- Reduces number of maximum available textures on pre-kepler cards.

  There is not much we can do here, hardware gets old but we need
  to move forward on more modern hardware..
2017-02-15 12:45:04 +01:00
..
atomic Atomics: Add some extra utility functions 2016-11-15 13:41:08 +01:00
audaspace Fix T50065: Audaspace: some values of the lower limit of Factory.limit causes the factory not to play 2016-11-28 17:23:44 +01:00
container Remove SCons building system 2016-01-04 14:20:48 +05:00
cycles Cycles: Fix wrong hair render results when using BVH motion steps 2017-02-15 12:45:04 +01:00
decklink Cleanup: comment blocks 2016-07-02 10:08:33 +10:00
dualcon Remove SCons building system 2016-01-04 14:20:48 +05:00
eigen Remove SCons building system 2016-01-04 14:20:48 +05:00
elbeem Fix fluid sim build error with MSVC. 2016-10-03 22:15:24 +02:00
ffmpeg Fix compilation error with FFmpeg and Ubuntu Trusty 2016-02-19 22:05:06 +01:00
ghost Fix T46795 : Reset GWLP_USERDATA to NULL at window destruction so any future events will not try to reference this deleted class. 2016-11-30 18:26:25 -07:00
glew-mx Remove SCons building system 2016-01-04 14:20:48 +05:00
gpudirect Cleanup: comment blocks 2016-07-02 10:08:33 +10:00
guardedalloc Atomics: Make naming more obvious about which value is being returned 2016-11-15 12:16:26 +01:00
iksolver FIX T49899: Add EIGEN_MAKE_ALIGNED_OPERATOR_NEW to classes that use eigen's data types , to force aligned on 16 byte boundaries. 2016-11-15 13:21:01 -07:00
itasc Cleanup: Reduce amount of misleading indentation 2016-09-01 12:14:16 +02:00
libmv Libmv: Fix missing virtual destructor in frame access sub-class 2016-12-20 12:29:41 +01:00
locale Remove SCons building system 2016-01-04 14:20:48 +05:00
memutil Remove SCons building system 2016-01-04 14:20:48 +05:00
mikktspace Fix T49523: very slow normal map tangent computation for rendering in 2.78. 2016-10-06 03:12:04 +02:00
moto BGE: Various render improvements. 2016-06-11 22:05:20 +02:00
opencolorio OCIO: Implement exposure/gamma for fallback implementation 2016-12-02 16:57:00 +01:00
opensubdiv OpensSubdiv: Cleanup, unused argument 2016-12-20 12:29:41 +01:00
openvdb Fix T48236: OpenVDB smoke cache glitches out with smokeless flames. 2016-04-22 11:46:02 +02:00
rigidbody Remove SCons building system 2016-01-04 14:20:48 +05:00
smoke Cleanup: Strict CLang warning in Smoke module 2017-01-09 13:12:43 +01:00
string Fix STR_String Capitalize on non Win32 2016-12-15 12:58:19 +11:00
utfconv C++ conformance fixes (MSVC /permissive-) 2017-02-06 10:44:56 +01:00
CMakeLists.txt CMake: Remove MOTO library dependency when it is not needed 2017-02-06 19:29:42 +01:00