diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2016-01-15 18:00:56 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2016-01-15 18:00:56 +0300 |
commit | 9a76354585e2cd2011267e79bd99ca59a06588f8 (patch) | |
tree | e775e7c44dc210ef9978b483930ade6a9b4d6fc5 /source/blender/makesrna | |
parent | 9137a4401440d3f3206e989f49f3539079d685b8 (diff) |
Cycles-Bake: Custom Baking passes
The combined pass is built with the contributions the user finds fit.
It is useful for lightmap baking, as well as non-view dependent effects
baking.
The manual will be updated once we get closer to the 2.77 release.
Meanwhile the new page can be found here:
http://dalaifelinto.com/blender-manual/render/cycles/baking.html
Reviewers: sergey, brecht
Differential Revision: https://developer.blender.org/D1674
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/RNA_enum_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_render.c | 22 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 65 |
3 files changed, 88 insertions, 2 deletions
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index dd646ec12de..b1048f72022 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -141,6 +141,9 @@ extern EnumPropertyItem rna_enum_controller_type_items[]; extern EnumPropertyItem rna_enum_render_pass_type_items[]; extern EnumPropertyItem rna_enum_render_pass_debug_type_items[]; +extern EnumPropertyItem rna_enum_bake_pass_type_items[]; +extern EnumPropertyItem rna_enum_bake_pass_filter_type_items[]; + extern EnumPropertyItem rna_enum_keymap_propvalue_items[]; extern EnumPropertyItem rna_enum_operator_context_items[]; diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index dd07f3cb038..6fce93dd9f6 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -84,6 +84,21 @@ EnumPropertyItem rna_enum_render_pass_debug_type_items[] = { {0, NULL, 0, NULL, NULL} }; +EnumPropertyItem rna_enum_bake_pass_type_items[] = { + {SCE_PASS_COMBINED, "COMBINED", 0, "Combined", ""}, + {SCE_PASS_AO, "AO", 0, "AO", ""}, + {SCE_PASS_SHADOW, "SHADOW", 0, "Shadow", ""}, + {SCE_PASS_NORMAL, "NORMAL", 0, "Normal", ""}, + {SCE_PASS_UV, "UV", 0, "UV", ""}, + {SCE_PASS_EMIT, "EMIT", 0, "Emit", ""}, + {SCE_PASS_ENVIRONMENT, "ENVIRONMENT", 0, "Environment", ""}, + {SCE_PASS_DIFFUSE_COLOR, "DIFFUSE", 0, "Diffuse", ""}, + {SCE_PASS_GLOSSY_COLOR, "GLOSSY", 0, "Glossy", ""}, + {SCE_PASS_TRANSM_COLOR, "TRANSMISSION", 0, "Transmission", ""}, + {SCE_PASS_SUBSURFACE_COLOR, "SUBSURFACE", 0, "Subsurface", ""}, + {0, NULL, 0, NULL, NULL} +}; + #ifdef RNA_RUNTIME #include "MEM_guardedalloc.h" @@ -162,7 +177,7 @@ static void engine_render(RenderEngine *engine, struct Scene *scene) } static void engine_bake(RenderEngine *engine, struct Scene *scene, - struct Object *object, const int pass_type, + struct Object *object, const int pass_type, const int pass_filter, const int object_id, const struct BakePixel *pixel_array, const int num_pixels, const int depth, void *result) { @@ -178,6 +193,7 @@ static void engine_bake(RenderEngine *engine, struct Scene *scene, RNA_parameter_set_lookup(&list, "scene", &scene); RNA_parameter_set_lookup(&list, "object", &object); RNA_parameter_set_lookup(&list, "pass_type", &pass_type); + RNA_parameter_set_lookup(&list, "pass_filter", &pass_filter); RNA_parameter_set_lookup(&list, "object_id", &object_id); RNA_parameter_set_lookup(&list, "pixel_array", &pixel_array); RNA_parameter_set_lookup(&list, "num_pixels", &num_pixels); @@ -432,7 +448,9 @@ static void rna_def_render_engine(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_REQUIRED); prop = RNA_def_pointer(func, "object", "Object", "", ""); RNA_def_property_flag(prop, PROP_REQUIRED); - prop = RNA_def_enum(func, "pass_type", rna_enum_render_pass_type_items, 0, "Pass", "Pass to bake"); + prop = RNA_def_enum(func, "pass_type", rna_enum_bake_pass_type_items, 0, "Pass", "Pass to bake"); + RNA_def_property_flag(prop, PROP_REQUIRED); + prop = RNA_def_int(func, "pass_filter", 0, 0, INT_MAX, "Pass Filter", "Filter to combined, diffuse, glossy, transmission and subsurface passes", 0, INT_MAX); RNA_def_property_flag(prop, PROP_REQUIRED); prop = RNA_def_int(func, "object_id", 0, 0, INT_MAX, "Object Id", "Id of the current object being baked in relation to the others", 0, INT_MAX); RNA_def_property_flag(prop, PROP_REQUIRED); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 137661a744b..434a6c24952 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -391,6 +391,20 @@ EnumPropertyItem rna_enum_stereo3d_interlace_type_items[] = { {0, NULL, 0, NULL, NULL} }; +EnumPropertyItem rna_enum_bake_pass_filter_type_items[] = { + {R_BAKE_PASS_FILTER_NONE, "NONE", 0, "None", ""}, + {R_BAKE_PASS_FILTER_AO, "AO", 0, "AO", ""}, + {R_BAKE_PASS_FILTER_EMIT, "EMIT", 0, "Emit", ""}, + {R_BAKE_PASS_FILTER_DIRECT, "DIRECT", 0, "Direct", ""}, + {R_BAKE_PASS_FILTER_INDIRECT, "INDIRECT", 0, "Indirect", ""}, + {R_BAKE_PASS_FILTER_COLOR, "COLOR", 0, "Color", ""}, + {R_BAKE_PASS_FILTER_DIFFUSE, "DIFFUSE", 0, "Diffuse", ""}, + {R_BAKE_PASS_FILTER_GLOSSY, "GLOSSY", 0, "Glossy", ""}, + {R_BAKE_PASS_FILTER_TRANSM, "TRANSMISSION", 0, "Transmission", ""}, + {R_BAKE_PASS_FILTER_SUBSURFACE, "SUBSURFACE", 0, "Subsurface", ""}, + {0, NULL, 0, NULL, NULL} +}; + #ifdef RNA_RUNTIME #include "DNA_anim_types.h" @@ -3747,6 +3761,57 @@ static void rna_def_bake_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Cage", "Cast rays to active object from a cage"); RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + /* custom passes flags */ + prop = RNA_def_property(srna, "use_pass_ambient_occlusion", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_AO); + RNA_def_property_ui_text(prop, "AO", "Add ambient occlusion contribution"); + + prop = RNA_def_property(srna, "use_pass_emit", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_EMIT); + RNA_def_property_ui_text(prop, "Emit", "Add emission contribution"); + + prop = RNA_def_property(srna, "use_pass_direct", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_DIRECT); + RNA_def_property_ui_text(prop, "Direct", "Add direct lighting contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_indirect", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_INDIRECT); + RNA_def_property_ui_text(prop, "Indirect", "Add indirect lighting contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_color", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_COLOR); + RNA_def_property_ui_text(prop, "Color", "Color the pass"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_diffuse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_DIFFUSE); + RNA_def_property_ui_text(prop, "Diffuse", "Add diffuse contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_glossy", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_GLOSSY); + RNA_def_property_ui_text(prop, "Glossy", "Add glossy contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_transmission", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_TRANSM); + RNA_def_property_ui_text(prop, "Transmission", "Add transmission contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "use_pass_subsurface", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_SUBSURFACE); + RNA_def_property_ui_text(prop, "Subsurface", "Add subsurface contribution"); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + + prop = RNA_def_property(srna, "pass_filter", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "pass_filter"); + RNA_def_property_enum_items(prop, rna_enum_bake_pass_filter_type_items); + RNA_def_property_flag(prop, PROP_ENUM_FLAG); + RNA_def_property_ui_text(prop, "Pass Filter", "Passes to include in the active baking pass"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); } static void rna_def_scene_game_data(BlenderRNA *brna) |