diff options
author | Alexander Romanov <a.romanov@blend4web.com> | 2017-07-03 19:49:35 +0300 |
---|---|---|
committer | Alexander Romanov <a.romanov@blend4web.com> | 2017-07-03 19:53:00 +0300 |
commit | e1482841dd5dd55cb453d37d115ec80f44c02316 (patch) | |
tree | 63cee90e2ab7b4316b4e36ffeb181700e99d6aab /intern | |
parent | 1ad0cc6bde4746949eee7a9babb97178a05816c3 (diff) | |
parent | 1fb30758034c2f83862bb7fc5f30a1a4d7b4510b (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/render/constant_fold.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/render/light.cpp | 4 | ||||
-rw-r--r-- | intern/elbeem/intern/solver_util.cpp | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/intern/cycles/render/constant_fold.cpp b/intern/cycles/render/constant_fold.cpp index 2569d9eec27..943b218f0e4 100644 --- a/intern/cycles/render/constant_fold.cpp +++ b/intern/cycles/render/constant_fold.cpp @@ -160,6 +160,14 @@ bool ConstantFolder::try_bypass_or_make_constant(ShaderInput *input, bool clamp) bypass(input->link); return true; } + else { + /* disconnect other inputs if we can't fully bypass due to clamp */ + foreach(ShaderInput *other, node->inputs) { + if(other != input && other->link) { + graph->disconnect(other); + } + } + } return false; } diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp index 625dd3ded39..93d88c5642c 100644 --- a/intern/cycles/render/light.cpp +++ b/intern/cycles/render/light.cpp @@ -224,6 +224,10 @@ void LightManager::disable_ineffective_light(Device *device, Scene *scene) bool LightManager::object_usable_as_light(Object *object) { Mesh *mesh = object->mesh; + /* Skip objects with NaNs */ + if (!object->bounds.valid()) { + return false; + } /* Skip if we are not visible for BSDFs. */ if(!(object->visibility & (PATH_RAY_DIFFUSE|PATH_RAY_GLOSSY|PATH_RAY_TRANSMIT))) { return false; diff --git a/intern/elbeem/intern/solver_util.cpp b/intern/elbeem/intern/solver_util.cpp index 5e112eb3f29..4bcc3640d72 100644 --- a/intern/elbeem/intern/solver_util.cpp +++ b/intern/elbeem/intern/solver_util.cpp @@ -855,6 +855,10 @@ void LbmFsgrSolver::advanceParticles() { if(k<=mSizez-1-cutval){ CellFlagType pflag = RFLAG(level, i,j,k, workSet); //errMsg("PIT move"," at "<<PRINT_IJK<<" flag"<<convertCellFlagType2String(pflag) ); + if (pflag & CFMbndOutflow) { + DEL_PART; + continue; + } if(pflag & (CFBnd)) { handleObstacleParticle(p); continue; |