Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/pass.cpp
| Show First 20 Lines • Show All 160 Lines • ▼ Show 20 Lines | |||||
| PassInfo Pass::get_info(PassType type) | PassInfo Pass::get_info(PassType type) | ||||
| { | { | ||||
| PassInfo pass_info; | PassInfo pass_info; | ||||
| pass_info.use_filter = true; | pass_info.use_filter = true; | ||||
| pass_info.use_exposure = false; | pass_info.use_exposure = false; | ||||
| pass_info.divide_type = PASS_NONE; | pass_info.divide_type = PASS_NONE; | ||||
| pass_info.is_aligned = true; | |||||
| pass_info.use_compositing = false; | pass_info.use_compositing = false; | ||||
| pass_info.use_denoising_albedo = true; | pass_info.use_denoising_albedo = true; | ||||
| switch (type) { | switch (type) { | ||||
| case PASS_NONE: | case PASS_NONE: | ||||
| pass_info.num_components = 0; | pass_info.num_components = 0; | ||||
| break; | break; | ||||
| case PASS_COMBINED: | case PASS_COMBINED: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| break; | break; | ||||
| case PASS_DEPTH: | case PASS_DEPTH: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| pass_info.use_filter = false; | pass_info.use_filter = false; | ||||
| break; | break; | ||||
| case PASS_MIST: | case PASS_MIST: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| break; | break; | ||||
| case PASS_NORMAL: | case PASS_NORMAL: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| break; | break; | ||||
| case PASS_ROUGHNESS: | case PASS_ROUGHNESS: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| break; | break; | ||||
| case PASS_UV: | case PASS_UV: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| break; | break; | ||||
| case PASS_MOTION: | case PASS_MOTION: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| pass_info.divide_type = PASS_MOTION_WEIGHT; | pass_info.divide_type = PASS_MOTION_WEIGHT; | ||||
| break; | break; | ||||
| case PASS_MOTION_WEIGHT: | case PASS_MOTION_WEIGHT: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| break; | break; | ||||
| case PASS_OBJECT_ID: | case PASS_OBJECT_ID: | ||||
| case PASS_MATERIAL_ID: | case PASS_MATERIAL_ID: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| pass_info.use_filter = false; | pass_info.use_filter = false; | ||||
| break; | break; | ||||
| case PASS_EMISSION: | case PASS_EMISSION: | ||||
| case PASS_BACKGROUND: | case PASS_BACKGROUND: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| break; | break; | ||||
| case PASS_AO: | case PASS_AO: | ||||
| pass_info.num_components = 3; | pass_info.num_components = 3; | ||||
| break; | break; | ||||
| case PASS_SHADOW: | case PASS_SHADOW: | ||||
| pass_info.num_components = 3; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = false; | pass_info.use_exposure = false; | ||||
| break; | break; | ||||
| case PASS_RENDER_TIME: | case PASS_RENDER_TIME: | ||||
| /* This pass is handled entirely on the host side. */ | /* This pass is handled entirely on the host side. */ | ||||
| pass_info.num_components = 0; | pass_info.num_components = 0; | ||||
| break; | break; | ||||
| case PASS_DIFFUSE_COLOR: | case PASS_DIFFUSE_COLOR: | ||||
| case PASS_GLOSSY_COLOR: | case PASS_GLOSSY_COLOR: | ||||
| case PASS_TRANSMISSION_COLOR: | case PASS_TRANSMISSION_COLOR: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| break; | break; | ||||
| case PASS_DIFFUSE_DIRECT: | case PASS_DIFFUSE_DIRECT: | ||||
| case PASS_DIFFUSE_INDIRECT: | case PASS_DIFFUSE_INDIRECT: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| pass_info.divide_type = PASS_DIFFUSE_COLOR; | pass_info.divide_type = PASS_DIFFUSE_COLOR; | ||||
| break; | break; | ||||
| case PASS_GLOSSY_DIRECT: | case PASS_GLOSSY_DIRECT: | ||||
| case PASS_GLOSSY_INDIRECT: | case PASS_GLOSSY_INDIRECT: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| pass_info.divide_type = PASS_GLOSSY_COLOR; | pass_info.divide_type = PASS_GLOSSY_COLOR; | ||||
| break; | break; | ||||
| case PASS_TRANSMISSION_DIRECT: | case PASS_TRANSMISSION_DIRECT: | ||||
| case PASS_TRANSMISSION_INDIRECT: | case PASS_TRANSMISSION_INDIRECT: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| pass_info.divide_type = PASS_TRANSMISSION_COLOR; | pass_info.divide_type = PASS_TRANSMISSION_COLOR; | ||||
| break; | break; | ||||
| case PASS_VOLUME_DIRECT: | case PASS_VOLUME_DIRECT: | ||||
| case PASS_VOLUME_INDIRECT: | case PASS_VOLUME_INDIRECT: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| break; | break; | ||||
| case PASS_CRYPTOMATTE: | case PASS_CRYPTOMATTE: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| break; | break; | ||||
| case PASS_DENOISING_NORMAL: | case PASS_DENOISING_NORMAL: | ||||
| pass_info.num_components = 3; | pass_info.num_components = 3; | ||||
| pass_info.is_aligned = false; | |||||
| break; | break; | ||||
| case PASS_DENOISING_ALBEDO: | case PASS_DENOISING_ALBEDO: | ||||
| pass_info.num_components = 3; | pass_info.num_components = 3; | ||||
| pass_info.is_aligned = false; | |||||
| break; | break; | ||||
| case PASS_SHADOW_CATCHER: | case PASS_SHADOW_CATCHER: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| pass_info.use_exposure = true; | pass_info.use_exposure = true; | ||||
| pass_info.use_compositing = true; | pass_info.use_compositing = true; | ||||
| pass_info.use_denoising_albedo = false; | pass_info.use_denoising_albedo = false; | ||||
| break; | break; | ||||
| Show All 9 Lines | case PASS_ADAPTIVE_AUX_BUFFER: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| break; | break; | ||||
| case PASS_SAMPLE_COUNT: | case PASS_SAMPLE_COUNT: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| pass_info.use_exposure = false; | pass_info.use_exposure = false; | ||||
| break; | break; | ||||
| case PASS_AOV_COLOR: | case PASS_AOV_COLOR: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 3; | ||||
| break; | break; | ||||
| case PASS_AOV_VALUE: | case PASS_AOV_VALUE: | ||||
| pass_info.num_components = 1; | pass_info.num_components = 1; | ||||
| break; | break; | ||||
| case PASS_BAKE_PRIMITIVE: | case PASS_BAKE_PRIMITIVE: | ||||
| case PASS_BAKE_DIFFERENTIAL: | case PASS_BAKE_DIFFERENTIAL: | ||||
| pass_info.num_components = 4; | pass_info.num_components = 4; | ||||
| ▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | void Pass::add_internal( | ||||
| } | } | ||||
| pass.info_ = get_info(type); | pass.info_ = get_info(type); | ||||
| pass.is_auto_ = is_auto; | pass.is_auto_ = is_auto; | ||||
| pass.is_written_ = is_written; | pass.is_written_ = is_written; | ||||
| passes.push_back(pass); | passes.push_back(pass); | ||||
| /* Order from by components, to ensure alignment so passes with size 4 come first and then passes | /* Order from by components and type, This is required to for AOVs and cryptomatte passes, | ||||
| * with size 1. Note this must use stable sort so cryptomatte passes remain in the right order. | * which the kernel assumes to be in order. Note this must use stable sort so cryptomatte | ||||
| */ | * passes remain in the right order. */ | ||||
| stable_sort(&passes[0], &passes[0] + passes.size(), compare_pass_order); | stable_sort(&passes[0], &passes[0] + passes.size(), compare_pass_order); | ||||
| if (pass.info_.divide_type != PASS_NONE) { | if (pass.info_.divide_type != PASS_NONE) { | ||||
| Pass::add_internal(passes, pass.info_.divide_type, mode, flags); | Pass::add_internal(passes, pass.info_.divide_type, mode, flags); | ||||
| } | } | ||||
| } | } | ||||
| bool Pass::contains(const vector<Pass> &passes, PassType type, PassMode mode) | bool Pass::contains(const vector<Pass> &passes, PassType type, PassMode mode) | ||||
| ▲ Show 20 Lines • Show All 88 Lines • Show Last 20 Lines | |||||