Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/render/svm.cpp')
-rw-r--r--intern/cycles/render/svm.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index e5140ea990b..538b1aae313 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -115,6 +115,7 @@ SVMCompiler::SVMCompiler(ShaderManager *shader_manager_, ImageManager *image_man
background = false;
mix_weight_offset = SVM_STACK_INVALID;
use_multi_closure = use_multi_closure_;
+ compile_failed = false;
}
int SVMCompiler::stack_size(ShaderSocketType type)
@@ -164,10 +165,12 @@ int SVMCompiler::stack_find_offset(ShaderSocketType type)
}
}
- fprintf(stderr, "Out of SVM stack space.\n");
- assert(0);
+ if(!compile_failed) {
+ compile_failed = true;
+ fprintf(stderr, "Cycles: out of SVM stack space, shader \"%s\" too big.\n", current_shader->name.c_str());
+ }
- return offset;
+ return 0;
}
void SVMCompiler::stack_clear_offset(ShaderSocketType type, int offset)
@@ -654,6 +657,12 @@ void SVMCompiler::compile_type(Shader *shader, ShaderGraph *graph, ShaderType ty
node->compile(*this);
}
+ /* if compile failed, generate empty shader */
+ if(compile_failed) {
+ svm_nodes.clear();
+ compile_failed = false;
+ }
+
add_node(NODE_END, 0, 0, 0);
}