Commit: b030bc4671d662491c05ab42a603cb00fe8aa948 Author: makowalski Date: Fri Jul 23 21:25:21 2021 -0400 Branches: usd-importer-T81257-merge https://developer.blender.org/rBb030bc4671d662491c05ab42a603cb00fe8aa948
USD import: use pointers for out parameters. Changed return parameter types from references to pointers, to improve code readability, per suggestion from Sybren. =================================================================== M source/blender/io/usd/intern/usd_capi_import.cc M source/blender/io/usd/intern/usd_reader_material.cc M source/blender/io/usd/intern/usd_reader_material.h M source/blender/io/usd/intern/usd_reader_mesh.cc M source/blender/io/usd/intern/usd_reader_mesh.h M source/blender/io/usd/intern/usd_reader_xform.cc M source/blender/io/usd/intern/usd_reader_xform.h =================================================================== diff --git a/source/blender/io/usd/intern/usd_capi_import.cc b/source/blender/io/usd/intern/usd_capi_import.cc index 7e6259459d3..8255fca284c 100644 --- a/source/blender/io/usd/intern/usd_capi_import.cc +++ b/source/blender/io/usd/intern/usd_capi_import.cc @@ -103,21 +103,25 @@ static bool gather_objects_paths(const pxr::UsdPrim &object, ListBase *object_pa /* Update the given import settings with the global rotation matrix to orient * imported objects with Z-up, if necessary */ -static void convert_to_z_up(pxr::UsdStageRefPtr stage, ImportSettings &r_settings) +static void convert_to_z_up(pxr::UsdStageRefPtr stage, ImportSettings *r_settings) { if (!stage || pxr::UsdGeomGetStageUpAxis(stage) == pxr::UsdGeomTokens->z) { return; } - r_settings.do_convert_mat = true; + if (!r_settings) { + return; + } + + r_settings->do_convert_mat = true; /* Rotate 90 degrees about the X-axis. */ float rmat[3][3]; float axis[3] = {1.0f, 0.0f, 0.0f}; axis_angle_normalized_to_mat3(rmat, axis, M_PI / 2.0f); - unit_m4(r_settings.conversion_mat); - copy_m4_m3(r_settings.conversion_mat, rmat); + unit_m4(r_settings->conversion_mat); + copy_m4_m3(r_settings->conversion_mat, rmat); } enum { @@ -211,7 +215,7 @@ static void import_startjob(void *customdata, short *stop, short *do_update, flo return; } - convert_to_z_up(stage, data->settings); + convert_to_z_up(stage, &data->settings); /* Set up the stage for animated data. */ if (data->params.set_frame_range) { @@ -524,7 +528,7 @@ CacheArchiveHandle *USD_create_handle(struct Main * /*bmain*/, USDImportParams params{}; blender::io::usd::ImportSettings settings{}; - convert_to_z_up(stage, settings); + convert_to_z_up(stage, &settings); USDStageReader *stage_reader = new USDStageReader(stage, params, settings); @@ -560,7 +564,7 @@ void USD_get_transform(struct CacheReader *reader, Object *object = usd_reader->object(); if (object->parent == nullptr) { /* No parent, so local space is the same as world space. */ - usd_reader->read_matrix(r_mat_world, time, scale, is_constant); + usd_reader->read_matrix(r_mat_world, time, scale, &is_constant); return; } @@ -568,7 +572,7 @@ void USD_get_transform(struct CacheReader *reader, BKE_object_get_parent_matrix(object, object->parent, mat_parent); float mat_local[4][4]; - usd_reader->read_matrix(mat_local, time, scale, is_constant); + usd_reader->read_matrix(mat_local, time, scale, &is_constant); mul_m4_m4m4(r_mat_world, mat_parent, object->parentinv); mul_m4_m4m4(r_mat_world, r_mat_world, mat_local); } diff --git a/source/blender/io/usd/intern/usd_reader_material.cc b/source/blender/io/usd/intern/usd_reader_material.cc index cfa068f75b0..02ed7c35e57 100644 --- a/source/blender/io/usd/intern/usd_reader_material.cc +++ b/source/blender/io/usd/intern/usd_reader_material.cc @@ -245,19 +245,23 @@ namespace { /* Compute the x- and y-coordinates for placing a new node in an unoccupied region of * the column with the given index. Returns the coordinates in r_locx and r_locy and * updates the column-occupancy information in r_ctx. */ -void compute_node_loc(const int column, float &r_locx, float &r_locy, NodePlacementContext &r_ctx) +void compute_node_loc(const int column, float *r_locx, float *r_locy, NodePlacementContext *r_ctx) { - r_locx = r_ctx.origx - column * r_ctx.horizontal_step; + if (!(r_locx && r_locy && r_ctx)) { + return; + } + + (*r_locx) = r_ctx->origx - column * r_ctx->horizontal_step; - if (column >= r_ctx.column_offsets.size()) { - r_ctx.column_offsets.push_back(0.0f); + if (column >= r_ctx->column_offsets.size()) { + r_ctx->column_offsets.push_back(0.0f); } - r_locy = r_ctx.origy - r_ctx.column_offsets[column]; + (*r_locy) = r_ctx->origy - r_ctx->column_offsets[column]; /* Record the y-offset of the occupied region in * the column, including padding. */ - r_ctx.column_offsets[column] += r_ctx.vertical_step + 10.0f; + r_ctx->column_offsets[column] += r_ctx->vertical_step + 10.0f; } } // End anonymous namespace. @@ -369,46 +373,46 @@ void USDMaterialReader::set_principled_node_inputs(bNode *principled, /* Recursively set the principled shader inputs. */ if (pxr::UsdShadeInput diffuse_input = usd_shader.GetInput(usdtokens::diffuseColor)) { - set_node_input(diffuse_input, principled, "Base Color", ntree, column, context); + set_node_input(diffuse_input, principled, "Base Color", ntree, column, &context); } if (pxr::UsdShadeInput emissive_input = usd_shader.GetInput(usdtokens::emissiveColor)) { - set_node_input(emissive_input, principled, "Emission", ntree, column, context); + set_node_input(emissive_input, principled, "Emission", ntree, column, &context); } if (pxr::UsdShadeInput specular_input = usd_shader.GetInput(usdtokens::specularColor)) { - set_node_input(specular_input, principled, "Specular", ntree, column, context); + set_node_input(specular_input, principled, "Specular", ntree, column, &context); } if (pxr::UsdShadeInput metallic_input = usd_shader.GetInput(usdtokens::metallic)) { ; - set_node_input(metallic_input, principled, "Metallic", ntree, column, context); + set_node_input(metallic_input, principled, "Metallic", ntree, column, &context); } if (pxr::UsdShadeInput roughness_input = usd_shader.GetInput(usdtokens::roughness)) { - set_node_input(roughness_input, principled, "Roughness", ntree, column, context); + set_node_input(roughness_input, principled, "Roughness", ntree, column, &context); } if (pxr::UsdShadeInput clearcoat_input = usd_shader.GetInput(usdtokens::clearcoat)) { - set_node_input(clearcoat_input, principled, "Clearcoat", ntree, column, context); + set_node_input(clearcoat_input, principled, "Clearcoat", ntree, column, &context); } if (pxr::UsdShadeInput clearcoat_roughness_input = usd_shader.GetInput( usdtokens::clearcoatRoughness)) { set_node_input( - clearcoat_roughness_input, principled, "Clearcoat Roughness", ntree, column, context); + clearcoat_roughness_input, principled, "Clearcoat Roughness", ntree, column, &context); } if (pxr::UsdShadeInput opacity_input = usd_shader.GetInput(usdtokens::opacity)) { - set_node_input(opacity_input, principled, "Alpha", ntree, column, context); + set_node_input(opacity_input, principled, "Alpha", ntree, column, &context); } if (pxr::UsdShadeInput ior_input = usd_shader.GetInput(usdtokens::ior)) { - set_node_input(ior_input, principled, "IOR", ntree, column, context); + set_node_input(ior_input, principled, "IOR", ntree, column, &context); } if (pxr::UsdShadeInput normal_input = usd_shader.GetInput(usdtokens::normal)) { - set_node_input(normal_input, principled, "Normal", ntree, column, context); + set_node_input(normal_input, principled, "Normal", ntree, column, &context); } } @@ -418,9 +422,9 @@ void USDMaterialReader::set_node_input(const pxr::UsdShadeInput &usd_input, const char *dest_socket_name, bNodeTree *ntree, const int column, - NodePlacementContext &r_ctx) const + NodePlacementContext *r_ctx) const { - if (!(usd_input && dest_node)) { + if (!(usd_input && dest_node && r_ctx)) { return; } @@ -487,9 +491,9 @@ void USDMaterialReader::follow_connection(const pxr::UsdShadeInput &usd_input, const char *dest_socket_name, bNodeTree *ntree, int column, - NodePlacementContext &r_ctx) const + NodePlacementContext *r_ctx) const { - if (!(usd_input && dest_node && dest_socket_name && ntree)) { + if (!(usd_input && dest_node && dest_socket_name && ntree && r_ctx)) { return; } @@ -524,7 +528,7 @@ void USDMaterialReader::follow_connection(const pxr::UsdShadeInput &usd_input, /* The normal texture input requires creating a normal map node. */ float locx = 0.0f; float locy = 0.0f; - compute_node_loc(column + 1, locx, locy, r_ctx); + compute_node_loc(column + 1, &locx, &locy, r_ctx); bNode *normal_map = add_node(nullptr, ntree, SH_NODE_NORMAL_MAP, locx, locy); @@ -555,15 +559,15 @@ void USDMaterialReader::convert_usd_uv_texture(const pxr::UsdShadeShader &usd_sh const char *dest_socket_name, bNodeTree *ntree, const int column, - NodePlacementContext &r_ctx) const + NodePlacementContext *r_ctx) const { - if (!usd_shader || !dest_node || !ntree || !dest_socket_name || !bmain_) { + if (!usd_shader || !dest_node || !ntree || !dest_socket_name || !bmain_ || !r_ctx) { return; } float locx = 0.0f; float locy = 0.0f; - compute_node_loc(column, locx, locy, r_ctx); + compute_node_loc(column, &locx, &locy, r_ctx); /* Create the Texture Image node. */ bNode *tex_image = add_node(nullptr, ntree, SH_NODE_TEX_IMAGE, locx, locy); @@ -660,15 +664,15 @@ void USDMaterialReader::convert_usd_primvar_reader_float2( const char *dest_socket_name, bNodeTree *ntree, const int column, - NodePlacementContext &r_ctx) const + NodePlacementContext *r_ctx) const { - if (!usd_shader || !dest_node || !ntree || !dest_socket_name || !bmain_) { + if (!usd_shader || !dest_node || !ntree || !dest_socket_name || !bmain_ || !r_ctx) { return; } float locx = 0.0f; float locy = 0.0f; - compute_node_loc(column, locx, locy, r_ctx); + compute_node_loc(column, &locx, &locy, r_ctx); /* Create the UV Map node. */ bNode *uv_map = add_node(nullptr, ntree, SH_NODE_UVMAP, locx, locy); diff --git a/source/blender/io/usd/intern/usd_reader_material.h b/sour @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs