[Bf-blender-cvs] [b030bc4671d] usd-importer-T81257-merge: USD import: use pointers for out parameters.
makowalski
noreply at git.blender.org
Sat Jul 24 03:44:29 CEST 2021
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. @@
More information about the Bf-blender-cvs
mailing list