Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/kernel_bake.h
| Show First 20 Lines • Show All 319 Lines • ▼ Show 20 Lines | ccl_device void kernel_bake_evaluate(KernelGlobals *kg, | ||||
| /* light passes if we need more than color */ | /* light passes if we need more than color */ | ||||
| if (pass_filter & ~BAKE_FILTER_COLOR) | if (pass_filter & ~BAKE_FILTER_COLOR) | ||||
| compute_light_pass(kg, &sd, &L, rng_hash, pass_filter, sample); | compute_light_pass(kg, &sd, &L, rng_hash, pass_filter, sample); | ||||
| switch (type) { | switch (type) { | ||||
| /* data passes */ | /* data passes */ | ||||
| case SHADER_EVAL_NORMAL: | case SHADER_EVAL_NORMAL: | ||||
| case SHADER_EVAL_ROUGHNESS: | case SHADER_EVAL_ROUGHNESS: | ||||
| case SHADER_EVAL_EMISSION: { | case SHADER_EVAL_EMISSION: | ||||
| case SHADER_EVAL_AOV_COLOR: | |||||
| case SHADER_EVAL_AOV_VALUE: { | |||||
| if ((type == SHADER_EVAL_AOV_COLOR) || (type == SHADER_EVAL_AOV_VALUE)) { | |||||
| state.flag |= PATH_RAY_BAKE_AOV; | |||||
| } | |||||
| if (type != SHADER_EVAL_NORMAL || (sd.flag & SD_HAS_BUMP)) { | if (type != SHADER_EVAL_NORMAL || (sd.flag & SD_HAS_BUMP)) { | ||||
| int path_flag = (type == SHADER_EVAL_EMISSION) ? PATH_RAY_EMISSION : 0; | int path_flag = (type == SHADER_EVAL_EMISSION) ? PATH_RAY_EMISSION : 0; | ||||
| shader_eval_surface(kg, &sd, &state, NULL, path_flag); | shader_eval_surface(kg, &sd, &state, NULL, path_flag); | ||||
| } | } | ||||
| if (type == SHADER_EVAL_NORMAL) { | if (type == SHADER_EVAL_NORMAL) { | ||||
| float3 N = sd.N; | float3 N = sd.N; | ||||
| if (sd.flag & SD_HAS_BUMP) { | if (sd.flag & SD_HAS_BUMP) { | ||||
| N = shader_bsdf_average_normal(kg, &sd); | N = shader_bsdf_average_normal(kg, &sd); | ||||
| } | } | ||||
| /* encoding: normal = (2 * color) - 1 */ | /* encoding: normal = (2 * color) - 1 */ | ||||
| out = N * 0.5f + make_float3(0.5f, 0.5f, 0.5f); | out = N * 0.5f + make_float3(0.5f, 0.5f, 0.5f); | ||||
| } | } | ||||
| else if (type == SHADER_EVAL_ROUGHNESS) { | else if (type == SHADER_EVAL_ROUGHNESS) { | ||||
| float roughness = shader_bsdf_average_roughness(&sd); | float roughness = shader_bsdf_average_roughness(&sd); | ||||
| out = make_float3(roughness, roughness, roughness); | out = make_float3(roughness, roughness, roughness); | ||||
| } | } | ||||
| else if (type == SHADER_EVAL_AOV_COLOR) { | |||||
| out = make_float3(sd.aov_value[0], sd.aov_value[1], sd.aov_value[2]); | |||||
| } | |||||
| else if (type == SHADER_EVAL_AOV_VALUE) { | |||||
| out = make_float3(sd.aov_value[0], sd.aov_value[0], sd.aov_value[0]); | |||||
| } | |||||
| else { | else { | ||||
| out = shader_emissive_eval(&sd); | out = shader_emissive_eval(&sd); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| case SHADER_EVAL_UV: { | case SHADER_EVAL_UV: { | ||||
| out = primitive_uv(kg, &sd); | out = primitive_uv(kg, &sd); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 164 Lines • Show Last 20 Lines | |||||