diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-02-19 19:44:58 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-03-17 14:01:19 +0300 |
commit | 7778a1a0a12fc026dc5bcc2c195b9460d1c77b53 (patch) | |
tree | f680fdee39ac648faa17dd145e0c521c5bea72fa /intern/cycles/kernel/kernel_bake.h | |
parent | 9c7517fb636da9c5a8b4eead09957f29db1a6687 (diff) |
Cycles: optimization for constant background colors.
Skip shader evaluation then, as we already do for lights. Less than
1% faster in my tests, but might as well be consistent for both.
Diffstat (limited to 'intern/cycles/kernel/kernel_bake.h')
-rw-r--r-- | intern/cycles/kernel/kernel_bake.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h index 920b10086c5..37c163f2538 100644 --- a/intern/cycles/kernel/kernel_bake.h +++ b/intern/cycles/kernel/kernel_bake.h @@ -351,7 +351,7 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input, out = make_float3(roughness, roughness, roughness); } else { - out = shader_emissive_eval(kg, &sd); + out = shader_emissive_eval(&sd); } break; } @@ -475,8 +475,9 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input, shader_setup_from_background(kg, &sd, &ray); /* evaluate */ - int flag = 0; /* we can't know which type of BSDF this is for */ - out = shader_eval_background(kg, &sd, &state, flag); + int path_flag = 0; /* we can't know which type of BSDF this is for */ + shader_eval_surface(kg, &sd, &state, path_flag | PATH_RAY_EMISSION); + out = shader_background_eval(&sd); break; } default: @@ -554,8 +555,9 @@ ccl_device void kernel_background_evaluate(KernelGlobals *kg, shader_setup_from_background(kg, &sd, &ray); /* evaluate */ - int flag = 0; /* we can't know which type of BSDF this is for */ - float3 color = shader_eval_background(kg, &sd, &state, flag); + int path_flag = 0; /* we can't know which type of BSDF this is for */ + shader_eval_surface(kg, &sd, &state, path_flag | PATH_RAY_EMISSION); + float3 color = shader_background_eval(&sd); /* write output */ output[i] += make_float4(color.x, color.y, color.z, 0.0f); |