Katana Developer Guide
======================

**Welcome to the Katana Developer Guide!**

This collection of pages aims to provide you with an API reference, examples,
and guidelines for developing scripts and plug-ins for Katana using Python,
Lua, and C++. You can learn how to automate and customize workflows, processes,
and the user interface, and how to integrate Katana with your pipeline.

If you're new to Katana, you may want to have a look at the
`Glossary of Katana Terms <https://learn.foundry.com/katana/Content/ug/glossary.html>`_
first, to familiarize yourself with Katana-specific terminology.

We hope you'll find what you're looking for. If you have any questions, you can
reach out to us via our `Support <https://support.foundry.com>`_ website, the
`Foundry Community <https://community.foundry.com/discuss/katana>`_ forums, or
you can head over to the independently-hosted
`Katana Community <https://discord.gg/Rgn9ucN>`_ Discord server.


Katana in a Nutshell
--------------------

Katana is a node-based application, and provides a *recipe*-based approach to
look development and lighting.

Katana project files store the descriptions of *nodes* and their *parameters*
and *ports*, which are connected to form *node graphs*.

Katana node graphs are *synced* to create and configure graphs of operators
(*Ops*) and their arguments (*Op Args*).

Ops are *cooked* using Katana's *Geolib* to create *locations* and *attributes*
of 3D scenes in a *scene graph*, ready for viewing and rendering.

In the end, *It's all just a bunch of Attributes*.


.. toctree::
    :caption: Application
    :maxdepth: 1

    CEL
    AttributeConventions/index
    EnvironmentVariables
    ArgsFiles/index
    ExternalSoftware
    Licenses/index
    Qt6Migration


.. toctree::
    :caption: Parameter Expressions
    :maxdepth: 1

    Overview <ParameterExpressions/index>
    ParameterExpressions/PythonExpressions
    ParameterExpressions/ReferenceExpressions

.. toctree::
    :caption: Scripting in Katana
    :maxdepth: 1

    Scripting/WorkingWithProjects
    Scripting/WorkingWithNodes/index
    Scripting/CustomizingNodeTypes/index
    Scripting/CustomizingUserInterface/index
    Scripting/RenderingAScene/index
    Scripting/CookingAScene/index
    Scripting/CallbacksAndEvents


.. toctree::
    :caption: Ops and OpScript
    :maxdepth: 1

    OpsAndOpScript/AssetAPI/index
    OpsAndOpScript/Attributes/index
    OpsAndOpScript/AttributeFunctions/index
    OpsAndOpScript/BuiltinOpTypes.rst
    OpsAndOpScript/Configuration/index
    OpsAndOpScript/CookInterface/index
    OpsAndOpScript/CookInterfaceUtilities/index
    OpsAndOpScript/Hints/index
    OpsAndOpScript/LookFiles/index
    OpsAndOpScript/MaterialResolve/index
    OpsAndOpScript/OpArgsBuilders/index
    OpsAndOpScript/Paths/index
    OpsAndOpScript/Resolutions/index
    OpsAndOpScript/Transformations/index
    OpsAndOpScript/ExpressionMath/index
    OpsAndOpScript/Imath/index
    OpsAndOpScript/Pystring/index
    OpsAndOpScript/OpWrite.rst

.. toctree::
    :caption: Writing Plug-ins
    :maxdepth: 1

    Plugins/PluginSystem.rst
    Plugins/Compatibility.rst
    Plugins/Asset/index
    Plugins/DisplayDriver
    Plugins/Renderer/index
    Plugins/DefaultAttributeProducer
    Plugins/Utilities/index
    Plugins/Viewer/index
    Plugins/HydraRenderDelegates/index
    Plugins/KatanaUSDPlugins/index
    Plugins/LookFileBakeAPI.rst
    Plugins/MaterialSolo.rst
    Plugins/FarmAPI.rst

.. toctree::
    :caption: Performance
    :maxdepth: 1

    Performance/ProfileResults.rst

.. toctree::
    :caption: Performance Optimization Guide
    :maxdepth: 1

    PerformanceOptimizationGuide/StartHere.rst
    PerformanceOptimizationGuide/NodeGraph.rst
    PerformanceOptimizationGuide/Ops.rst
    PerformanceOptimizationGuide/Concurrency.rst
    PerformanceOptimizationGuide/OpScript.rst

.. toctree::
    :caption: USD Processing Engine
    :maxdepth: 1

    UsdProcessingEngine/APIUsage.rst
    UsdProcessingEngine/API.rst
    UsdProcessingEngine/UsgPythonAPI.rst
    UsdProcessingEngine/Engines/index.rst
    UsdProcessingEngine/KatanaToUsd/index.rst
    UsdProcessingEngine/UsdLayerExport.rst
    UsdProcessingEngine/UsdPythonWrite.rst

.. toctree::
    :caption: API Reference
    :maxdepth: 1

    cpp-index

* `Python Module Index <py-modindex.html>`__
* `Lua Module Index <lua-modindex.html>`__