20 September 2021
These release notes describe changes from Katana 4.5v1.010005a to 4.5v1.010006a.
Katana's Live Render system has been enhanced to support more flexible and scalable workflows.
When starting a Live Render, the values of global Graph State Variables (those stored in Project Settings) are now pinned to their current values, meaning that subsequent changes to global GSVs won't be reflected in the render. Checkboxes now appear in columns of GSVs in the Catalog tab, indicating this new pinned state, which can be used to unpin specific GSVs, so that values of global GSVs are reflected during a Live Render. This feature allows you to pick and choose exactly which renders should be updated in response to changes of specific global GSVs, and which GSVs you'd like to leave unchanged to the values they had when the Live Render was started.
For even greater flexibility, it is now possible to access the values of local Graph State Variables, in addition to global Graph State Variables, in the context of parameter expressions. Details on this are available in the release notes summary of feature enhancement ID 166141 below.
A Sync to Project Settings checkbox has been added at the top of the Catalog tab, which determines whether choosing a Catalog item as the Front buffer item will update the project’s global Graph State Variables and current time to match it. This feature can be used to quickly switch between different shots, assets, and/or frames, while keeping a number of renders running at the same time.
The processing of Live Render Updates has been moved from the Katana process to the renderboot process, with the potential of freeing up the artist’s local workstation when rendering remotely using a Farm API plug-in, e.g. via the Katana Queue using remote agents. Updates to a Katana project’s node graph are now sent as resulting Op Tree Deltas to the renderboot process, where they are turned into Live Render Update Attributes (LRUA), as it was previously done in the Katana process.
No changes are required for render plug-ins to take advantage of this feature, as Katana’s Render Plug-in APIs are left unchanged.
In this alpha release, the Live Render Updates column is no longer shown by default in the Scene Graph tab, as in Foresight+, the entire scene graph is observed and communicated in the form of Op Tree Deltas from Katana to the renderboot process. An environment variable named KATANA_DISABLE_FORESIGHT_PLUS is available, which, when set, disables Foresight+ features, and instead falls back to the legacy Live Rendering system that uses scene graph deltas in the form of Live Render Update Attributes that are sent from Katana to the renderboot process. When Foresight+ is disabled, the Live Render Updates column is shown in the Scene Graph tab, as in previous lines of releases.
The Viewer tab now supports rendering of instanced geometry via instance array locations. The attributes of these instance array locations are expected to follow Katana's Attribute Conventions for Instancing. In particular, instance sources must be scene graph locations of type instance source. These instance sources may also contain other instance arrays, resulting in nested instancing.
Instanced geometry in the Viewer tab supports per-instance primvar data. These attributes must be set on an instance array location, with a primvar value per index in the geometry.instanceIndex attribute. The scope of each primvar must be instance, which implies a constant value per instance. In particular, other interpolation types per-instance are not supported. If the source geometry or multiple instance arrays in a hierarchy contain the same primvar, the one closest to the geometry takes precedence.
Foundry's Advanced Viewport (HdGnz) is now available to choose as a Hydra Render Delegate named Gnz in the Viewer tab's new Display menu.
The order of exposed parameters that can be defined via the Material Interface tab of ShadingGroup nodes inside NetworkMaterialCreate nodes is now respected in the resulting Network Material. In order to record the desired ordering information, ShadingGroup nodes to which exposed parameters have been added now create a shading node subnet location in the scene graph, just like ShadingNodeSubnet nodes in the legacy Network Material workflow did.
When adding exposed parameters from shading nodes inside of a ShadingGroup node to that node's Material Interface tab using the Add Exposed Parameters context menu command, the exposed parameters are now added in the order that was defined by any nested ShadingGroup nodes within.
ShadingGroup nodes now allow for specifying name and page prefixes to be applied to exposed parameters of shading nodes contained within them, by way of a new publicInterface group parameter containing a namePrefix and pagePrefix child parameter. This gives creators of shading node networks flexibility in the naming of shading node parameters in the public interface of the resulting Network Material.
The name and page prefixes of ShadingGroups are combined with the name and page prefixes specified in the publicInterface group parameter on shading nodes contained within them. Just like on shading nodes themselves, the publicInterface.pagePrefix parameter on ShadingGroup nodes allows for specifying nested page titles and prefixes by using dots (.), e.g. Top-level Page.Nested Page.Prefix.
USD Export has been enhanced with the ability to export light locations, including light linking information, via UsdMaterialBake nodes using the UsdLux APIs.
A new type of plug-in has been added to allow further customization of the USD Export process without the need to rebuild the Katana USD plug-ins. The USD Export plug-in system is implemented with its own dedicated plug-in registry, whose API is accessible via the new UsdExport.pluginAPI and UsdExport.pluginRegistry Python modules.
USD Export plug-ins are registered during application startup using the standard Katana plug-in registry mechanism, by adding a UsdExportPlugins folder to a directory whose file system location path is referenced in the KATANA_RESOURCES environment variable, and defining a PluginRegistry module variable in a Python module in that folder.
Here's a simple example of defining and registering an export plug-in using such a plug-in Python module:
from UsdExport.pluginAPI import BaseUsdExportPlugin class MyUsdExportPlugin(BaseUsdExportPlugin): priority = 1000 @staticmethod def WritePrim(stage, sdfLocationPath, attrDict): print('MyUsdExportPlugin.WritePrim(): Exporting "{}"...'.format(sdfLocationPath)) PluginRegistry = [ ('UsdExport', 1, 'MyUsdExportPlugin', (['light'], MyUsdExportPlugin)), ]
The plug-in's WritePrim() function will be called as part of exporting USD on each location which matches the location types for which the plug-in is registered. In the example above, the WritePrim() function will be called for light locations.
Using the new UsdExport.pluginRegistry APIs, it is also possible to register and deregister an export plug-in interactively at runtime, for example in a Python tab. This can be used for quickly iterating over a new plug-in that is in development. Here's an example:
from UsdExport.pluginAPI import BaseUsdExportPlugin import UsdExport.pluginRegistry class MyUsdExportPlugin(BaseUsdExportPlugin): priority = 1000 @staticmethod def WritePrim(stage, sdfLocationPath, attrDict): print('MyUsdExportPlugin.WritePrim(): Exporting "{}"...'.format(sdfLocationPath)) UsdExport.pluginRegistry.RegisterUsdExportPlugin('MyUsdExportPlugin', ['light'], MyUsdExportPlugin)
We plan to continue expanding on this behavior by utilizing the SdrRegistry information available for light shaders to write out accurate USD data for each light type.
A new Schema, LightAPI, has been added to allow for attributes required to define the light's shader ID, such that round-tripping of a light will work in the future for all light types.
Locations with transform attributes will also be exported to an Xform Prim.
The version of 3Delight that we ship with Katana has been upgraded to 3Delight 2.6.4, introducing support for Python 3 in 3Delight for Katana.
For more information, please refer to the 3Delight for Katana Changelog.
ID 166141 / BZ 51870 - The following functions have been added for use in Python-based Parameter Expressions, allowing you to work with Local Graph State:
Equivalent functionality is available for Reference Expressions:
Other changes in Python-based Parameter Expressions:
Authors of custom node types are encouraged to consult the Supporting Local Graph State in Parameter Evaluation section in the Katana Developer Guide for more information.
The parameter interface of NetworkMaterialCreate and NetworkMaterialEdit nodes has been revised as follows:
ID 473828 - The color of connections between shading node ports is now by default determined by the type of the target port of the connection (an input port), rather than the type of the source port (an output port). A new preference named useColorFromInputPortForConnections has been added to the nodegraph category of preferences to control this appearance.
PxrUsdIn no longer reads and writes camera or light lists to the location provided by a UsdIn node's location parameter.
A new Op PxrUsdInUpdateGlobalListsOp, which runs after UsdIn's current Op(s), has been added to set globals.cameraList and lightList directly on the /root/world location; provided they are within a model hierarchy with the USD Stage.
The hydra and viewer viewer render plug-ins have been removed. They were superseded by the use of UsdPreviewSurface materials in Katana 4.0v1.
Unused ViewerAPI options related to the Viewer tab have been removed:
Creators of SuperTool-based node types can now opt out of allowing users to edit user parameters on their custom SuperTool nodes, by implementing the following function on their node type class:
def isUserParameterEditingAllowed(self): return False
ID 124108 / BZ 51004 - It is now possible to configure the columns that are shown in the table of objects of an edited GafferThree node in the Parameters tab, by registering callbacks that are called when setting up the GafferThree node's SceneGraphView widget, and when setting up the tab widget below the table of objects.
The following new API functions have been added:
Here's a usage example, showing how callbacks can be set up from a UIPlugins Python module, e.g. ~/.katana/UIPlugins/RegisterGafferThreeCallbacks.py:
from Katana import Plugins from UI4.Widgets.SceneGraphView import ColumnDataType GafferThreeAPI = Plugins.GafferThreeAPI def configureGafferThreeSceneGraphView(objectHash, node, editor, sceneGraphView): # Hide some standard columns of GafferThree for columnName in ('Int', 'Exp', 'Linking'): column = sceneGraphView.getColumnByName(columnName) column.setVisible(False) # Add a new column for editing the diffuse contribution of 3Delight lights diffColumn = sceneGraphView.addColumn('Diff') diffColumn.setAttributeName('material.dlLightParams.diffuse_contribution') diffColumn.setDataType(ColumnDataType.Number) diffColumn.setEditable(True) def configureGafferThreeTabWidget(objectHash, node, editor, tabWidget): editor.removeTab('Linking') editor.addTab('Look') GafferThreeAPI.RegisterSceneGraphViewSetupCallback(configureGafferThreeSceneGraphView) GafferThreeAPI.RegisterTabWidgetSetupCallback(configureGafferThreeTabWidget)
The representation of partially checked checkboxes has been tweaked so that a filled square is now drawn, similar to Nuke, instead of the classic checkmark.
ID 434351 - The image shown in Katana's splash screen can now be customized by setting the new KATANA_SPLASH_IMAGE_FILE environment variable to the filename of an image file.
export KATANA_SPLASH_IMAGE_FILE=~/Pictures/taco.png:~/Pictures/bell.png export KATANA_SPLASH_IMAGE_FILE=`ls /path/to/splash_screens/*.png | tr '\n' ':'`
ID 481971 - When minimizing the OUTPUT sidebar of a NetworkMaterialCreate node that has been entered in the Node Graph tab, CPU utilization unexpectedly spiked. (This issue was a regression in Katana 4.0v1.)
ID 480325 - When opening the context menu of a node in the Node Graph tab, a synchronous scene graph cook and a 'Manual 3D Update' were triggered, potentially freezing the UI. (This issue was a regression in Katana 3.5v1.)
With changes introduced in Katana 3.5v1, the intention was to determine the availability of the menu command for starting a Preview Render with Profiling, depending on whether the Geolib3-MT Runtime was chosen in the render settings.
Renders commissioned with runtime profiling enabled, but configured by render settings to use the Classic Geolib runtime (which were previously precluded by the context menu), now fail with an appropriate error message.
ID 317214 - TeleParameter widgets did not respect the grid layout of surrounding parameter widgets, in terms of their label and edit widget alignment.
ID 478937 - When applying a saved bookmark in the Scene Graph tab, a Python exception was raised. (This issue was regression in Katana 4.5v1.010005a.)
ID 482178 - When toggling the checked state of columns in the header context menu of the Catalog tab's catalog item view, the context menu flickered.
ID 473602 - The Viewer caused a flush of caches when changing render delegates.
ID 476538 - When expanding a faceset location with bounds while in Faces mode, Katana crashed. (This issue was a regression in Katana 4.0v1.)
ID 476717 - When switching render delegate, the shadow mode selected from the Viewer tab's Display menu was not respected. Instead, shadows would be shown for all lights until the shadow mode was next changed.
ID 484335 - When right-clicking ports on certain nodes in a NetworkMaterialCreate node in the Node Graph tab, such as a Switch node, the wrong context menu was opened. (This issue was a regression in Katana 4.5v1.010005a.)
ID 484419 - When clicking the View State button on a locked shading node, the View State of that node did not cycle as expected.
ID 485687 - When undoing the creation of a ShadingGroup node in a NetworkMaterialCreate or NetworkMaterialEdit node, the undo history was unexpectedly cleared. (This issue was a regression in Katana 4.5v1.010005a.)
ID 485690 - When cutting multiple selected shading nodes from inside of a NetworkMaterialCreate or NetworkMaterialEdit node by pressing Ctrl+X, then undoing the cutting, the previously cut shading nodes were not restored with their previous view states. (This issue was a regression in Katana 4.5v1.010005a.)
ID 486296 - When the input on the inside of a ShadingGroup node in a NetworkMaterialCreate or NetworkMaterialEdit node contained multiple nested page names, it did not show the port on the outside of the node. (This issue was a regression in Katana 4.5v1.010005a.)
ID 485388 - When choosing the Export Args File command for a shader of a Material node that is edited in the Parameters tab, a Python exception was raised. (This issue was a regression in Katana 4.5v1.010005a.)
ID 485588 - When attempting to obtain the string representation of data of a ConstVector object in Python which contains characters outside of the C0 Controls and Basic Latin range, an exception was raised. (This issue was a regression in Katana 4.5v1.010005a.)
ID 486210 - When attempting to access the OpenGLGPUTiming or OpenGLTraceMarker module within the virtual Utils module, an AttributeError exception was raised. (This issue was regression in Katana 4.5v1.010005a.)
ID 485613 - When attempting to obtain the XML text representation of a StringAttribute object in Python which contains non-ASCII characters, an exception was raised. (This issue was a regression in Katana 4.5v1.010005a.)
ID 485812 - The ifelse() function in the context of Python-based parameter expressions wrongly always evaluated to the first of the two given alternatives. (This issue was a regression in Katana 4.5v1.010005a.)
ID 485870 - When starting up Katana, in certain environments, a UnicodeDecodeError exception was raised from within the Naming.GetSafeIdentifier() function. (This issue was a regression in Katana 4.5v1.010005a.)
ID 486348 - Names in libOpenColorIO.so / OpenColorIO.dll were wrongly namespaced with an Fn prefix: FnOpenColorIO rather than just OpenColorIO.
ID 486470 - FnPlatform/StringView.h, part of the Katana public API, was missing the <ostream> header.
ID 114182 / BZ 49288 - When exporting a Catalog item you need to specify the export folder path to an existing folder. If the folder you're trying to export to does not exist on disk Katana will fail to export. (This issue is a regression in Katana 2.0v1.)
ID 427252 - Locators created via PrimitiveCreate nodes can be snapped to in all modes, rather than just the Lights, Cameras, and Locators mode.
ID 420882 - Changing between the Viewer (Hydra) tab's multipane layout options quickly can cause a crash or many error messages to be written to the terminal/console.
ID 380129 - Use of non-conformant GL anti-aliasing modes that employ supersampling reduces rendered point size by the supersampling scaling factor. Katana currently employs any reported anti-aliasing mode (up to a maximum sample count of 16): as a workaround, change the viewerHydra.antiAliasing preference to a lesser anti-aliasing mode.
ID 352167 - Textures loaded from Hydra shaders are not cleared or reloaded from disk when flushing caches.
ID 85118 / BZ 41152 - When editing parameters of a node that is part of a LiveGroup node and reloading the parent LiveGroup node, the UI state of the Parameters tab is reset. This includes scroll bar positions, selections of items, and selections of nested tabs (for example Object, Material and Linking tabs for a Gaffer node).
ID 84998 / BZ 41092 - When reloading a LiveGroup node's parameter interface and contents from its source, parameters of child nodes that are edited in floating panes disappear from those panes.
ID 84020 / BZ 40598 - Reverting a LiveGroup node does not revert its user parameters.
ID 84018 / BZ 40600 - Undoing a revert of an unpublished LiveGroup node does not restore the LiveGroup's editable and modified state.
ID 83061 / BZ 40237 - Nodes can be dragged into the Group bubble of a non-editable LiveGroup node.
ID 442604 - When "exploding" a NetworkMaterialEdit node in the Node Graph tab into its parts by selecting it and choosing Edit > Explode Selected Groups or pressing the U key, Python exceptions are raised.
ID 429775 - NetworkMaterialEdit nodes do not currently respect local Graph State changes, for example as performed by VariableSet nodes downstream.
ID 429302 - When editing a locked node inside a NetworkMaterialEdit node graph, the parameters will be shown at their default state.
ID 427408 - When entering a NetworkMaterialEdit node whose sceneGraphLocation parameter is empty, warnings are logged by the Geolib3 Runtime.
ID 423341 - In a NetworkMaterialEdit node graph, connections can be displayed incorrectly if a node's name begins with a number.
ID 402064 - In a ShadingGroup node graph, the connection between a Dot node and a shading node port can be wrongly colored in some cases.
ID 269449 - Choosing Edit Shader Parameters from the main wrench menu of Material nodes does not show wrench buttons next to shader parameters. This can be worked around by toggling the edit flag on the node. (This issue is a regression in Katana 2.5v1.)
ID 199304 - The namespace parameter on Material nodes wrongly allows the insertion of Unicode codepoints outside the ASCII range.
ID 191052 - Katana does not have any support for the texture reference object workflows of V-Ray for Maya.
ID 188533 - Expressions linked to non-local parameters on not previously edited Material nodes can't be evaluated.
ID 105434 / BZ 47520 - Reference Expressions may not refer to dynamic parameters such as shader parameters.
ID 60457 / BZ 31790 - Setting an array or group parameter to an expression results in an invalid expression. Upon setting a valid expression (for example, an evaluation of an equivalent parameter on another node using getParam), the parameter is not immediately updated. To workaround this issue, close and reopen the parameter, or flush caches while the node is not edited.
ID 381284 - The 3Delight renderer plug-in makes use of source material locations rather than resolved material attributes as a means of de-duplication. This can result in material data being lost when excluding material locations from the Render Working Set during a Live Render session.
ID 176598 - Use of nodes that modify Graph State Variables in Interactive Render Filters is not currently supported.
ID 74799 / BZ 36926 - The rendererSettings > displayOptions parameter of a RenderOutputDefine node for the PRMan renderer, shown when its type parameter is set to 'raw', cannot be set using the Parameters tab.
ID 70217 / BZ 36176 - The 2D node Disk Render Upstream Render Outputs option does not use the batch render method, batchRender, for upstream render nodes, instead using diskRender.
ID 70016 / BZ 36137 - Rendering repeatedly with a large number of AOVs consumes more and more memory, possibly leading to a crash when running out of memory.
ID 12517 / BZ 16168 - Only one Monitor tab may display the results of a Preview Render. The use of multiple Monitor tabs is not currently supported.
ID 373702 - Clicking in the Viewport and pressing a shortcut whilst the mouse is hovered in another widget will still send the event back to the 'focused' Viewport widget, for shortcuts where the widget hovered over does not handle the shortcut.
ID 208802 - Closing the Histogram tab after use leaves the Monitor tab unable to display rendered images.
ID 123558 / BZ 50911 - When changing an array parameter's tuple count/size, any corresponding attributes are not properly updated in the Attributes tab.
ID 112544 / BZ 49051 - The Viewer tab may lose sync with the Scene Graph tab when changes to expansion state are interrupted.
ID 107038 / BZ 47853 - Indication of attribute source nodes (such as the yellow 'glow' in the Node Graph tab) is unavailable as of Katana 2.0v1.
ID 71965 / BZ 36691 - State badges are currently shown for attribute values of dynamic array child parameters, even though only their parent array parameter should appear with a state badge.
ID 65347 / BZ 34949 - Using Compiz can lead to text fields not receiving focus events correctly due to an incompatibility between Compiz and Qt. Depending on your configuration, disabling Compiz "desktop effects" may resolve the problem.
ID 488364 - Baking USD files via UsdMaterialBake with an input port with no connection can cause Katana to crash. (This issue is a regression in Katana 4.5v1.010005a.)
ID 468287 - UsdIn is not retaining expanded view state information for shading nodes in a Network Material context.
ID 446730 - When trying to overwrite variants already baked from a UsdMaterialBake node, an error can be printed to the terminal, resulting in the USD file not being written. In this instance, flushing caches before overwriting the file should act as a workaround.
ID 381692 - (Windows only) When logging out and logging back in again, the colors in the UI are incorrect. For example, certain parts of certain types of tabs may appear with a white background color. (This issue is a regression in Katana 3.1v1, possibly caused by QTBUG-52728 - Paint bug and palette errors after some events in Windows)
ID 344118 - (Windows only) When installing Katana and opting to install the bundled version of 3Delight, the installation of 3Delight is made by modifying system-wide environment variables such as KATANA_RESOURCES. Thereafter, launching any version of Katana will pick up this installation of 3Delight, which may be incompatible with the version of Katana being launched.
NOTE: This issue does not affect Linux, where a bundled 3Delight installation is tied to its corresponding Katana installation.
ID 218742 - (Windows only) Katana must be installed to a path no longer than ~140 characters. Attempting to install to a longer path results in an unintuitive error: "The system cannot find the path specified."
ID 337653 - Katana logs deprecation warnings when loading the PyMockAsset, PyMultiMockAsset, and PyMockFileSeq shipping example Asset API plug-ins.
ID 84326 / BZ 40709 - The Alembic library does not support multiple process or thread access to an Alembic file. This means that a crash occurs when modifying an Alembic file outside Katana, while it's loaded in an open Katana scene. To avoid this, you must Flush Caches before attempting to update any modified Alembic files.
ID 80738 / BZ 39261 - Operations that lock and unlock nodes do not currently create entries in the Undo History, which can lead to an incorrect node graph state when undoing and redoing operations.
ID 70196 / BZ 36170 - Control keys (notably arrow keys) do not function as expected in shell mode.
Minimum | Recommended | |
---|---|---|
CPU | Dual-core processor | |
Storage | 1+ GB available for installation | |
System RAM | 1+ GB available | |
Graphics RAM | 1+ GB available | 2+ GB available |
Display | 800 x 600 | 1920 x 1080 |
OpenGL | OpenGL 4.3+ (see note below) |
The configurations listed below are those that Foundry have tested with Katana. Due to the constantly changing nature and wide variety of computer hardware available in the market, Foundry is unable to officially certify hardware. The list below can be used as a recommendation and does not guarantee that it meets your particular needs.
NVIDIA Quadro M4000
NVIDIA Quadro P4000
NVIDIA Quadro K4000
NVIDIA Quadro K6000
Please download and install the latest graphics driver from the NVIDIA website.
If you encounter any issues, please contact Customer Support directly through the Support Portal at the following address: https://support.foundry.com.
Copyright © 2021 The Foundry Visionmongers Ltd.