Terminology
===========

NDK
---

The NDK is the NUKE Developer Kit, in essence, NUKE's C++ low level SDK. NUKE additionally supports the OFX API, which is outside of the scope of this document.

Op
--

An Operator, or Op in NUKE terminology, is the engine which does the image processing work inside of NUKE. Ops are decoupled from Nodes (see below). Ops are generally built as shared libraries and are loaded dynamically by NUKE as required. Some Ops are built directly into NUKE itself to allow access to functionality beyond that offered by the NDK. See :ref:`intro-fundamentalconcepts-nodesvsops` for further information.

Node
----

A Node is the object which represents the image processing operations inside of NUKE. A node can build one or more Ops underneath the hood to do the image/3D processing work. See :ref:`intro-fundamentalconcepts-nodesvsops` for further information.

Direct Acyclic Graph (DAG)/Node Graph
------------------------------------

The Node Graph or DAG is the U element in which nodes (and thus their underlying Ops) are strung together.

Knobs
-----

Knobs in NUKE manage the UI elements seen in the param panel and viewer opengl handles, along with the data storage responsible for reading and writing to the NUKE script file. See the Knobs section :ref:`knobs-intro` for more information.

Plug-in
-------

Inside NUKE, a plug-in is generally used as another term for an Op, often referring to third party bundles of Ops.

Channel
-------

A channel in NUKE is a fundamental concept of the 2D system. It essentially wraps planes of images, to allow multiple such planes to be passed between Ops (at the time of writing, up to 1023). See the :ref:`2d-architecture`, :ref:`2d-channels` section for more information.

Region of Interest
------------------

The Region of Interest, or ROI, of an Op is a 2D concept related to the area of pixels on the Op's input which it is 'interested' in. In other words, which pixels it needs from its input in order to generate its output. See the :ref:`2d-architecture`, :ref:`2d-formats-bboxes` section for more information.

Region of Definition
--------------------

The Region of Definition, or ROD, of an Op is a 2D concept defining what area of pixels an Op generates for a specific configuration. See the :ref:`2d-architecture`, :ref:`2d-formats-bboxes` section for more information.

Format
------

The format of a 2D image stream is the end goal size for that image. It does not define what area of pixels may be processed, simply what the target size for the processing is likely to be when written out or viewed. It is often used to allow the user to clip the area of pixels processed to a sensible size, for example, in circumstances where an image generating Op can create a plane of pixels of an arbitrary size (such as a Noise operator). See the :ref:`2d-architecture`, :ref:`2d-formats-bboxes` section for more information.

Bounding Box (bbox)
-------------------

The bounding box, or bbox, of an Op is essentially the size of the image plane it'll generate for the current configuration - essentially the same as it's Region of Definition. See the :ref:`2d-architecture`, :ref:`2d-formats-bboxes` section for more information.

Pixel
-----

A Pixel, in NUKE terms, is a class for managing a single pixel across multiple channels and storing it in memory.

Interest
--------

An Interest, in NUKE terms, is a class for locking a plane of pixels into memory.

Tile
----

A Tile, in NUKE terms, is a class for locking a plane of pixels into memory, similar to an Interest, but also allowing the image data to be forcibly processed at that point in time.


