Commit: 851af3d5990db17b27fc040e82da0093d5031e8b
Author: Sybren A. Stüvel
Date: Wed Nov 27 10:02:45 2019 +0100
Branches: temp-sybren-usd-patch-01
https://developer.blender.org/rB851af3d5990db17b27fc040e82da0093d5031e8b
USD: reuse `pxr::TfToken` objects
TfToken objects are not cheap to construct, so we do it once and reuse them.
===================================================================
M source/blender/usd/intern/usd_writer_abstract.cc
===================================================================
diff --git a/source/blender/usd/intern/usd_writer_abstract.cc
b/source/blender/usd/intern/usd_writer_abstract.cc
index d79de7dbef1..98c7784d404 100644
--- a/source/blender/usd/intern/usd_writer_abstract.cc
+++ b/source/blender/usd/intern/usd_writer_abstract.cc
@@ -28,6 +28,17 @@ extern "C" {
#include "DNA_modifier_types.h"
}
+/* TfToken objects are not cheap to construct, so we do it once. */
+namespace usdtokens {
+// Materials
+static const pxr::TfToken diffuse_color("diffuseColor",
pxr::TfToken::Immortal);
+static const pxr::TfToken metallic("metallic", pxr::TfToken::Immortal);
+static const pxr::TfToken preview_shader("previewShader",
pxr::TfToken::Immortal);
+static const pxr::TfToken preview_surface("UsdPreviewSurface",
pxr::TfToken::Immortal);
+static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal);
+static const pxr::TfToken surface("surface", pxr::TfToken::Immortal);
+}; // namespace usdtokens
+
USDAbstractWriter::USDAbstractWriter(const USDExporterContext
&usd_export_context)
: usd_export_context_(usd_export_context), frame_has_been_written_(false),
is_animated_(false)
{
@@ -114,18 +125,16 @@ pxr::UsdShadeMaterial
USDAbstractWriter::ensure_usd_material(Material *material)
usd_material = pxr::UsdShadeMaterial::Define(stage, usd_path);
// Construct the shader.
- pxr::SdfPath shader_path =
usd_path.AppendChild(pxr::TfToken("previewShader"));
+ pxr::SdfPath shader_path = usd_path.AppendChild(usdtokens::preview_shader);
pxr::UsdShadeShader shader = pxr::UsdShadeShader::Define(stage, shader_path);
- shader.CreateIdAttr(pxr::VtValue(pxr::TfToken("UsdPreviewSurface")));
- shader.CreateInput(pxr::TfToken("diffuseColor"),
pxr::SdfValueTypeNames->Color3f)
+ shader.CreateIdAttr(pxr::VtValue(usdtokens::preview_surface));
+ shader.CreateInput(usdtokens::diffuse_color, pxr::SdfValueTypeNames->Color3f)
.Set(pxr::GfVec3f(material->r, material->g, material->b));
- shader.CreateInput(pxr::TfToken("roughness"), pxr::SdfValueTypeNames->Float)
- .Set(material->roughness);
- shader.CreateInput(pxr::TfToken("metallic"), pxr::SdfValueTypeNames->Float)
- .Set(material->metallic);
+ shader.CreateInput(usdtokens::roughness,
pxr::SdfValueTypeNames->Float).Set(material->roughness);
+ shader.CreateInput(usdtokens::metallic,
pxr::SdfValueTypeNames->Float).Set(material->metallic);
// Connect the shader and the material together.
- usd_material.CreateSurfaceOutput().ConnectToSource(shader,
pxr::TfToken("surface"));
+ usd_material.CreateSurfaceOutput().ConnectToSource(shader,
usdtokens::surface);
return usd_material;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs