Sample Source Code

This is the actual source code used by many of the Nuke plug-ins.

  • AddInputs.cpp Shows how to access multiple inputs and perform basic arithmetic on them.
  • LayerExtractor.cpp A simple demonstation of dynamic enumeration knobs.
  • SimpleBlur.cpp Shows how to perform some basic pixel arithmetic on the input, in this case it blurs it.
  • SimpleBlurCached.cpp Example using image cache.
  • Normalise.cpp Shows how to perform some basic pixel arithmetic on the input, in this case it normalises it.
  • NormaliseExecute.cpp Shows how to normalise images over a frame range, demonstrating how Executable Iops work.
  • Triangle.cpp Shows how to use SourceGeo to add some simple geometry into a Scene.
  • Tetrahedron.cpp Shows how to use SourceGeo to create a 3D Tetrahedron geometry, implement UV-mapping and enable basic transformations.
  • my3dReader.cpp Demonstrates the reading of a custom 3d format.
  • my3dWriter.cpp Demonstrates the writing of a custom 3d format.
  • AddCustomQt.cpp Shows how to use your own custom Qt widget for a knob.
  • AddCustomQt.moc.h Shows how to use your own custom Qt widget for a knob.
  • Makefile.qt Shows how to use your own custom Qt widget for a knob.
  • DynamicKnobs.cpp Demonstration of dynamic knobs.
  • KnobParade.cpp Creates one of every sort of NDK supported knob
  • Serialize.cpp Simply saves and loads a text string to and from the current Nuke script.
  • Add.cpp It doesn't get much more basic than this!
  • AddChannels.cpp Add additional channels to the incoming stream.
  • Assert.cpp Simple example setting an error state.
  • Blocky.cpp This is a demonstration of a Nuke plug-in that moves pixels using DD::Image::Tile. In this case blocks of pixels are averaged together to produce the result.
  • CheckerBoard2.cpp Example of an operator that generates an image, with no input.
  • ColorLookup.cpp Example of using the lookup curve knob to present editable curves to the user.
  • Constant.cpp Generate a constant colored image. The simplest generator.
  • Convolve.cpp Generate output from two inputs and a larger region than the output.
  • CornerPin2D.cpp Example of a Transform-derived op.
  • Difference.cpp Computes an output channel based on contents of two input images.
  • Dilate.cpp Example of a two-pass algorithm.
  • IDistort.cpp Uses the sample() call to produce arbitrary distortion of an image.
  • Grade.cpp A simple color operator.
  • Keymix.cpp A very recently-created node showing current Nuke plugin coding practices.
  • Mirror.cpp Example where build_handles modifies the transform used to draw input handles.
  • Noise.cpp A slightly more complex image generator.
  • Position.cpp Example of DD::Image::Row::offset() method.
  • Rectangle.cpp Example of a DD::Image::DrawIop, showing how to draw simple shapes in a single color, for output in arbitrary channels.
  • Remove.cpp Strip channels out of the incoming stream.
  • Saturation.cpp Example of a DD::Image::PixelIop demonstrating how to access and modify multiple channels of an image simultaneously.
  • Socket.cpp Example of a parallel thread (such as a thread reading a socket) updating the output of an operator dynamically.
  • TemporalMedian.cpp Example of an operator that asks for multiple frames of its input
  • AddTimeCode.cpp Example using and generating metadata
  • DeepToImage.cpp Example of compositing deep data to 2D
  • DeepCrop.cpp Example of processing deep data
  • DeepColorCorrect.cpp Example of processing deep data
  • dtexReaderDeep.cpp Example of reading deep data using a library
  • exrReaderDeep.cpp Example of reading deep data using a library
  • exrWriterDeep.cpp Example of writing deep data using a library
  • cdfReaderDeep.cpp Simple example of reading deep data
  • cdfWriterDeep.cpp Simple example of writing deep data
  • ParticleGravity.cpp Example of particle force
  • Sphere.cpp A simple example of a 3D geometry generator node.
  • LogGeo.cpp A simple example of a 3D geometry modifier node.
  • Phong.cpp A basic material shader node.
  • SimpleAxis.cpp A simple axis node.
  • UVProject.cpp A node to project uv's onto points and vertices.
  • FishEye.cpp An example of FishEye camera projection.
  • crwReader.cpp Camera raw reader, which uses dcraw to convert the image and read it from stdin.
  • DPXimage.h File needed by dpxReader/Writer
  • dpxReader.cpp The DPX spec supports a wide variety of header fields, not all of which have been implemented in Nuke. Our reader source is provided here for those users who encounter a flavor that we do not yet support and need to implement a custom reader to handle it before a Nuke release with built-in support can be made available.
  • dpxWriter.cpp The DPX spec supports a wide variety of header fields, not all of which have been implemented in Nuke. Our reader source is provided here for those users who encounter a flavor that we do not yet support and need to implement a custom reader to handle it before a Nuke release with built-in support can be made available.
  • exrGeneral.h Nuke's EXR i/o which accomodates files with large numbers of channels.
  • ExrChannelNameToNuke.h Nuke's EXR i/o which accomodates files with large numbers of channels.
  • ExrChannelNameToNuke.cpp Nuke's EXR i/o which accomodates files with large numbers of channels.
  • exrReader.cpp Nuke's EXR i/o which accomodates files with large numbers of channels.
  • exrWriter.cpp Nuke's EXR i/o which accomodates files with large numbers of channels.
  • iffReader.cpp IFF file format reader.
  • pngReader.cpp A fairly straight-forward example of interfacing with an existing file i/o library.
  • pngWriter.cpp A fairly straight-forward example of interfacing with an existing file i/o library.
  • psdReader.cpp Photoshop .psd file reader.
  • tiffReader.cpp Both tiffReader and tiffWriter are in this plugin so only one copy of libtiff is used. This also contains an example of using DD::Image::Memory to allocate large buffers that are freed when memory is needed.
  • yuvReader.cpp The yuv reader is provided as a basic example of a typical file format reader. It uses DD::Image::FileReader as its base class.
  • yuvWriter.cpp This is the counterpart to the yuvReader. It demonstrates, among other things, how Nuke creates and writes individual lines to create the final image.
  • exifReader.h Demonstrates using the jpeg and libexif libraries to read and write JPEG-format images.
  • exifWriter.h Demonstrates using the jpeg and libexif libraries to read and write JPEG-format images.
  • jpegReader.cpp Demonstrates using the jpeg and libexif libraries to read and write JPEG-format images.
  • jpegWriter.cpp Demonstrates using the jpeg and libexif libraries to read and write JPEG-format images.
  • GPUFileShader.cpp Demonstration of a GPU plugin. Reads a file containing a fragment shader.
  • ChannelSelector.cpp Demonstration of a very simple GPU plugin. Selects from a set of channels from the input to display. Works in both CPU and GPU modes.
  • Draw2D.cpp An example of drawing 2D graphics (such as an image overlay) in the Viewer.
  • Draw3D.cpp An example of drawing 3D objects in the Viewer.
  • Handle.cpp An example of getting mouse interaction from the Viewer.
  • PythonGeo.cpp Demonstrates running python from a node, exposing geometry data to python and exposing a custom knob implementation to python.
  • PythonGeo.h Demonstrates running python from a node, exposing geometry data to python and exposing a custom knob implementation to python.
  • CryptomattePlugin.cpp Demonstrates the C++ implementation compatible with version 1.2.8 of the Python-based Nuke gizmo authored at Psyop by Jonah Friedman and Andy Jones (see https://github.com/Psyop/Cryptomatte).
  • CryptomattePlugin.h Demonstrates the C++ implementation compatible with version 1.2.8 of the Python-based Nuke gizmo authored at Psyop by Jonah Friedman and Andy Jones (see https://github.com/Psyop/Cryptomatte).
  • EncryptomattePlugin.cpp Demonstrates the C++ implementation compatible with version 1.2.8 of the Python-based Nuke gizmo authored at Psyop by Jonah Friedman and Andy Jones (see https://github.com/Psyop/Cryptomatte).
  • EncryptomattePlugin.h Demonstrates the C++ implementation compatible with version 1.2.8 of the Python-based Nuke gizmo authored at Psyop by Jonah Friedman and Andy Jones (see https://github.com/Psyop/Cryptomatte).


©2021 The Foundry Visionmongers, Ltd. All Rights Reserved.
www.thefoundry.co.uk