[Bf-blender-cvs] [851af3d5990] temp-sybren-usd-patch-01: USD: reuse `pxr::TfToken` objects
Sybren A. Stüvel
noreply at git.blender.org
Thu Nov 28 15:07:22 CET 2019
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;
}
More information about the Bf-blender-cvs
mailing list