diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2014-04-21 17:53:20 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2014-04-21 18:14:37 +0400 |
commit | 04a10907dc41a3016374f9efc4820987cc7a5460 (patch) | |
tree | d737a14c5876104e7da4f85ca9db898a1dd3dcad /intern/cycles/kernel/kernel_shader.h | |
parent | 7765b73f6d2002b074b7e78985171ef035075fbb (diff) |
Code cleanup: remove old closure sampling code Cycles.
This was the original code to get things working on old GPUs, but now it is no
longer in use and various features in fact depend on this to work correctly to
the point that enabling this code is too buggy to be useful.
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 127 |
1 files changed, 4 insertions, 123 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index a731446954a..1351ab2e482 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -490,8 +490,6 @@ ccl_device void shader_merge_closures(ShaderData *sd) /* BSDF */ -#ifdef __MULTI_CLOSURE__ - ccl_device_inline void _shader_bsdf_multi_eval(KernelGlobals *kg, const ShaderData *sd, const float3 omega_in, float *pdf, int skip_bsdf, BsdfEval *result_eval, float sum_pdf, float sum_sample_weight) { @@ -519,28 +517,18 @@ ccl_device_inline void _shader_bsdf_multi_eval(KernelGlobals *kg, const ShaderDa *pdf = (sum_sample_weight > 0.0f)? sum_pdf/sum_sample_weight: 0.0f; } -#endif - ccl_device void shader_bsdf_eval(KernelGlobals *kg, const ShaderData *sd, const float3 omega_in, BsdfEval *eval, float *pdf) { -#ifdef __MULTI_CLOSURE__ bsdf_eval_init(eval, NBUILTIN_CLOSURES, make_float3(0.0f, 0.0f, 0.0f), kernel_data.film.use_light_pass); _shader_bsdf_multi_eval(kg, sd, omega_in, pdf, -1, eval, 0.0f, 0.0f); -#else - const ShaderClosure *sc = &sd->closure; - - *pdf = 0.0f; - *eval = bsdf_eval(kg, sd, sc, omega_in, pdf)*sc->weight; -#endif } ccl_device int shader_bsdf_sample(KernelGlobals *kg, const ShaderData *sd, float randu, float randv, BsdfEval *bsdf_eval, float3 *omega_in, differential3 *domega_in, float *pdf) { -#ifdef __MULTI_CLOSURE__ int sampled = 0; if(sd->num_closure > 1) { @@ -591,13 +579,6 @@ ccl_device int shader_bsdf_sample(KernelGlobals *kg, const ShaderData *sd, } return label; -#else - /* sample the single closure that we picked */ - *pdf = 0.0f; - int label = bsdf_sample(kg, sd, &sd->closure, randu, randv, bsdf_eval, omega_in, domega_in, pdf); - *bsdf_eval *= sd->closure.weight; - return label; -#endif } ccl_device int shader_bsdf_sample_closure(KernelGlobals *kg, const ShaderData *sd, @@ -618,21 +599,16 @@ ccl_device int shader_bsdf_sample_closure(KernelGlobals *kg, const ShaderData *s ccl_device void shader_bsdf_blur(KernelGlobals *kg, ShaderData *sd, float roughness) { -#ifdef __MULTI_CLOSURE__ for(int i = 0; i< sd->num_closure; i++) { ShaderClosure *sc = &sd->closure[i]; if(CLOSURE_IS_BSDF(sc->type)) bsdf_blur(kg, sc, roughness); } -#else - bsdf_blur(kg, &sd->closure, roughness); -#endif } ccl_device float3 shader_bsdf_transparency(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -643,12 +619,6 @@ ccl_device float3 shader_bsdf_transparency(KernelGlobals *kg, ShaderData *sd) } return eval; -#else - if(sd->closure.type == CLOSURE_BSDF_TRANSPARENT_ID) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bsdf_alpha(KernelGlobals *kg, ShaderData *sd) @@ -663,7 +633,6 @@ ccl_device float3 shader_bsdf_alpha(KernelGlobals *kg, ShaderData *sd) ccl_device float3 shader_bsdf_diffuse(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -674,17 +643,10 @@ ccl_device float3 shader_bsdf_diffuse(KernelGlobals *kg, ShaderData *sd) } return eval; -#else - if(CLOSURE_IS_BSDF_DIFFUSE(sd->closure.type)) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bsdf_glossy(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -695,17 +657,10 @@ ccl_device float3 shader_bsdf_glossy(KernelGlobals *kg, ShaderData *sd) } return eval; -#else - if(CLOSURE_IS_BSDF_GLOSSY(sd->closure.type)) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bsdf_transmission(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -716,17 +671,10 @@ ccl_device float3 shader_bsdf_transmission(KernelGlobals *kg, ShaderData *sd) } return eval; -#else - if(CLOSURE_IS_BSDF_TRANSMISSION(sd->closure.type)) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bsdf_subsurface(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -737,17 +685,10 @@ ccl_device float3 shader_bsdf_subsurface(KernelGlobals *kg, ShaderData *sd) } return eval; -#else - if(CLOSURE_IS_BSSRDF(sd->closure.type)) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bsdf_ao(KernelGlobals *kg, ShaderData *sd, float ao_factor, float3 *N_) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); float3 N = make_float3(0.0f, 0.0f, 0.0f); @@ -771,21 +712,10 @@ ccl_device float3 shader_bsdf_ao(KernelGlobals *kg, ShaderData *sd, float ao_fac *N_ = N; return eval; -#else - *N_ = sd->N; - - if(CLOSURE_IS_BSDF_DIFFUSE(sd->closure.type)) - return sd->closure.weight*ao_factor; - else if(CLOSURE_IS_AMBIENT_OCCLUSION(sd->closure.type)) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif } ccl_device float3 shader_bssrdf_sum(ShaderData *sd, float3 *N_, float *texture_blur_) { -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); float3 N = make_float3(0.0f, 0.0f, 0.0f); float texture_blur = 0.0f, weight_sum = 0.0f; @@ -810,20 +740,6 @@ ccl_device float3 shader_bssrdf_sum(ShaderData *sd, float3 *N_, float *texture_b *texture_blur_ = texture_blur/weight_sum; return eval; -#else - if(CLOSURE_IS_BSSRDF(sd->closure.type)) { - if(N_) *N_ = sd->closure.N; - if(texture_blur_) *texture_blur_ = sd->closure.data1; - - return sd->closure.weight; - } - else { - if(N_) *N_ = sd->N; - if(texture_blur_) *texture_blur_ = 0.0f; - - return make_float3(0.0f, 0.0f, 0.0f); - } -#endif } /* Emission */ @@ -836,7 +752,6 @@ ccl_device float3 emissive_eval(KernelGlobals *kg, ShaderData *sd, ShaderClosure ccl_device float3 shader_emissive_eval(KernelGlobals *kg, ShaderData *sd) { float3 eval; -#ifdef __MULTI_CLOSURE__ eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i < sd->num_closure; i++) { @@ -845,9 +760,6 @@ ccl_device float3 shader_emissive_eval(KernelGlobals *kg, ShaderData *sd) if(CLOSURE_IS_EMISSION(sc->type)) eval += emissive_eval(kg, sd, sc)*sc->weight; } -#else - eval = emissive_eval(kg, sd, &sd->closure)*sd->closure.weight; -#endif return eval; } @@ -856,7 +768,6 @@ ccl_device float3 shader_emissive_eval(KernelGlobals *kg, ShaderData *sd) ccl_device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd) { -#ifdef __MULTI_CLOSURE__ float3 weight = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i < sd->num_closure; i++) { @@ -867,12 +778,6 @@ ccl_device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd) } return weight; -#else - if(sd->closure.type == CLOSURE_HOLDOUT_ID) - return make_float3(1.0f, 1.0f, 1.0f); - - return make_float3(0.0f, 0.0f, 0.0f); -#endif } /* Surface Evaluation */ @@ -880,12 +785,8 @@ ccl_device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd) ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, float randb, int path_flag, ShaderContext ctx) { -#ifdef __MULTI_CLOSURE__ sd->num_closure = 0; sd->randb_closure = randb; -#else - sd->closure.type = NBUILTIN_CLOSURES; -#endif #ifdef __OSL__ if(kg->osl) @@ -894,7 +795,7 @@ ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, #endif { #ifdef __SVM__ - svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, randb, path_flag); + svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, path_flag); #else sd->closure.weight = make_float3(0.8f, 0.8f, 0.8f); sd->closure.N = sd->N; @@ -907,12 +808,8 @@ ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd, int path_flag, ShaderContext ctx) { -#ifdef __MULTI_CLOSURE__ sd->num_closure = 0; sd->randb_closure = 0.0f; -#else - sd->closure.type = NBUILTIN_CLOSURES; -#endif #ifdef __OSL__ if(kg->osl) { @@ -923,9 +820,8 @@ ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd, int { #ifdef __SVM__ - svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, 0.0f, path_flag); + svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, path_flag); -#ifdef __MULTI_CLOSURE__ float3 eval = make_float3(0.0f, 0.0f, 0.0f); for(int i = 0; i< sd->num_closure; i++) { @@ -937,13 +833,6 @@ ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd, int return eval; #else - if(sd->closure.type == CLOSURE_BACKGROUND_ID) - return sd->closure.weight; - else - return make_float3(0.0f, 0.0f, 0.0f); -#endif - -#else return make_float3(0.8f, 0.8f, 0.8f); #endif } @@ -1062,11 +951,7 @@ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, { /* reset closures once at the start, we will be accumulating the closures * for all volumes in the stack into a single array of closures */ -#ifdef __MULTI_CLOSURE__ sd->num_closure = 0; -#else - sd->closure.type = NBUILTIN_CLOSURES; -#endif sd->flag = 0; for(int i = 0; stack[i].shader != SHADER_NONE; i++) { @@ -1097,7 +982,7 @@ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, else #endif { - svm_eval_nodes(kg, sd, SHADER_TYPE_VOLUME, 0.0f, path_flag); + svm_eval_nodes(kg, sd, SHADER_TYPE_VOLUME, path_flag); } #endif @@ -1113,12 +998,8 @@ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, ShaderContext ctx) { -#ifdef __MULTI_CLOSURE__ sd->num_closure = 0; sd->randb_closure = 0.0f; -#else - sd->closure.type = NBUILTIN_CLOSURES; -#endif /* this will modify sd->P */ #ifdef __SVM__ @@ -1128,7 +1009,7 @@ ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, Shad else #endif { - svm_eval_nodes(kg, sd, SHADER_TYPE_DISPLACEMENT, 0.0f, 0); + svm_eval_nodes(kg, sd, SHADER_TYPE_DISPLACEMENT, 0); } #endif } |