What's New in Katana 3.1

Introduction

This document describes notable changes introduced in Katana 3.1. These changes include:

Table of Contents

Technical Changes

Third-party Software

The table below summarizes changes to shipped versions of third-party software. Katana 3.1v1 aims for compatibility with VFX Reference Platform CY2017.

Katana 3.1 Katana 3.0
Qt 5.6.1 4.8.5
PyQt 5.6 4.11.4
SIP 4.18.1 4.17
OpenSubdiv 3.1.1 3.0.5
Ptex 2.1.28 2.1.10
fmt 4.1.0 Not shipped
Fontconfig Not shipped 2.8.0 (Linux only)

Due to the port from Qt 4 to Qt 5, the following user interface APIs have changed:

Viewer API Improvements

FnAttribute Improvements

Katana now supports creating attributes with 232 or more values per time sample, and error handing relating to internal size limits has been made more robust. Previously, Katana could crash or generate malformed attributes if certain internal limits were breached, and there was no formal documentation for these limits. Internal data limits of FnAttribute (which are now documented in the C++ headers) are as follows:

OpScript can now inspect and create attributes with more than 227 values per time sample using a new getSamples() method; available on any data attribute. The 'sample accessor' object returned by getSamples() supports inspecting a read-only view of time sample data, as well as creating a mutable copy of a sample buffer in order to manipulate the existing data. Full documentation is available in the Katana Developer Guide, but a contrived example is as follows:

local myIntAttr = Interface.GetAttr('myAttr')

local newSamples = {}
for _, sample in ipairs(myIntAttr:getSamples()) do
  -- Create a mutable copy of the sample buffer
  local buffer = sample:toArray()
  for i, elem in ipairs(buffer) do
    buffer:set(i, elem * 2)
  end

  local t = sample:getSampleTime()
  newSamples[t] = buffer
end

Interface.SetAttr('myAttr', IntAttribute(newSamples))

For backwards compatibility, myDataAttr:getNearestSample(time) continues to return a copy of a time sample as a Lua table, and is subject to a maximum of 227 values. Please note that the getSamples() API requires the new LuaJIT-based OpScript backend, and is not available in the legacy Lua 5.1 backend.

Performance Improvements

The performance of application startup, user interface interaction, and idle CPU usage has been improved by optimizing the Katana event system and removing instances where Katana polls for events.

The performance of Ogawa-based Alembic reads has also been improved by using memory-mapped I/O.

New Features

ProfilingMockRenderer

Experimental Features

Monitor Front Buffer

An experimental viewer layer that shows pixel data from the Monitor tab has been added to the Viewer (Hydra) tab.

When setting the KATANA_EXPERIMENTAL_MONITOR_OVERLAY environment variable in a Katana launch environment to 1, a Monitor Front Buffer toggled menu item is added to the tab's View menu. When View > Monitor Front Buffer is turned on, an image layer is inserted in the tab's viewer layers, which shows the pixel data of the catalog item that is shown as the front buffer in Katana's Monitor tab.