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

Reply via email to