From af0f34a9371b06ab2fa9db15973faa8582b4222b Mon Sep 17 00:00:00 2001 From: John Haddon Date: Thu, 6 Jul 2023 15:42:54 +0100 Subject: [PATCH] GUI startup : Add UsdPreviewSurface shaders to node menu --- Changes.md | 2 +- startup/gui/menus.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index cd02567e1b3..a8f2ae202b4 100644 --- a/Changes.md +++ b/Changes.md @@ -6,7 +6,7 @@ Features - MeshNormals : Added a new node for adjusting mesh normals. - VolumeScatter : Added a new node for scattering points throughout a volume. -- USDShader : Added a node for loading shaders from USD's `SdrRegistry`. This includes shaders such as `UsdPreviewSurface` and `UsdUVTexture`. +- USDShader : Added a node for loading shaders from USD's `SdrRegistry`. This includes shaders such as `UsdPreviewSurface` and `UsdUVTexture`, which are now available in the `USD/Shaders` section of the node menu. Improvements ------------ diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 77b9c717721..dab12a54f20 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -514,6 +514,28 @@ def __shaderNodeCreator( nodeName, shaderName ) : import GafferUSD import GafferUSDUI +def __usdShaderCreator( shaderName ) : + + node = GafferUSD.USDShader( name = shaderName ) + node.loadShader( shaderName ) + return node + +for menuPath, shader in [ + [ "Preview Surface", "UsdPreviewSurface" ], + [ "UV Texture", "UsdUVTexture" ], + [ "Transform 2D", "UsdTransform2d" ], + [ "Primvar Reader/Int", "UsdPrimvarReader_int" ], + [ "Primvar Reader/Float", "UsdPrimvarReader_float" ], + [ "Primvar Reader/Float2", "UsdPrimvarReader_float2" ], + [ "Primvar Reader/Float3", "UsdPrimvarReader_float3" ], + [ "Primvar Reader/Float4", "UsdPrimvarReader_float4" ], + [ "Primvar Reader/String", "UsdPrimvarReader_string" ], + [ "Primvar Reader/Point", "UsdPrimvarReader_point" ], + [ "Primvar Reader/Vector", "UsdPrimvarReader_vector" ], + [ "Primvar Reader/Normal", "UsdPrimvarReader_normal" ], +] : + nodeMenu.append( "/USD/Shader/{}".format( menuPath ), functools.partial( __usdShaderCreator, shader ), searchText = shader ) + nodeMenu.append( "/USD/Attributes", GafferUSD.USDAttributes, searchText = "USDAttributes" ) nodeMenu.append( "/USD/Layer Writer", GafferUSD.USDLayerWriter, searchText = "USDLayerWriter" )