Released by Jens Kafitz, 2018 - Extension Pack 

 RELEASE: December 5th, 2018

 REQUIREMENTS:  MARI 4.1v2 or higher  *(Indie/Non-Commercial are not supported)


= Feature available via Nodegraph only  



  • Extension Pack has been rewritten to support QT5 and PySide 2


You can now swap any nodetype for another nodetype using the new Swap Node Type Tool.

For example to replace a 'Tiled' Node with a 'Triplanar' Node inside your graph.

All possible Inputs and Outputs as well as Settings (Images used, tiling settings etc.) are maintained during this swap.


The Extension Pack Subdivision Tools now support Mari 4's Open Subdiv 3.0 architecture


The Desaturate Adjustment will desaturate your input colors using one from a choice of 7 algorithms 

(Lightness, Luminance Bt.709, Luminance CCIR 601, Halve, Average, Min, Max)

Converts a Normal Map between OpenGL and DirectX Format and vice versa by inverting the Green Channel.

Please note Mari's Shaders expect a DirectX Normal Map by default


  • Extension Pack Bug Report

A 'Send Bug Report' Option has been added to the Help Menu



  • Nodes now make use of the new Tab System introduced in Mari 4's Node Properties to group Attributes together (Transform Tab etc.)

  • The Viewport View Transform will be turned off automatically when viewing  nodes that are used in a scalar port 

(e.g Size, Frequency, Threshold etc.) of another (Extension Pack) node, allowing you to see the node in the viewport the

same way it is used in calculation

For example viewing a cloud node attached to the mask of another node will display the cloud node as scalar.

  • Previously grouping Nodes in the Nodegraph would create 'Input' Nodes for all unmapped Ports of Nodes inside the Graph Group.

This behavior has been turned off for all Extension Pack Nodes. 

In order to expose a Port to the outside of a graph group you now need to selectively create an 'Input' Node yourself.


The slider limit of 2 for intensity has been replaced with a freely editable float value field

The Node Color Temperature has been renamed to Blackbody


The Unreal Advanced shader model has been reworked to more closely match the shader available in Unreal Engine


If a Layer in the Layerstack has Nodegraph connections feeding into it that use Radio Nodes, creating a shared layer from

it will now always treat the Radio Node as a shared Resource between both Layers.

This means that the new shared Layer will share the will share the same nodes that fed into the original Radio Node.


If a Radio Transmitter Node is somewhere connected to a Channel (either in a Nodegraph only or hybrid Layer/Nodegraph workflow),

creating a channel duplicate will now always treat the Radio Transmitter as a shared resource between the two channels.

This means that both channels will be connected to the same Radio Transmitter and nodes upstream from it will not be duplicated.

Repeat Last Export now has the shortcut CTRL+ALT+E assigned, to avoid conflicts with Mari 4's shortcuts.


Pause Viewport Update has been moved to the new Extension Pack Toolbar.

It is also available under the 'Shading' Menu.


  • Edge Wear Presets

Edge Wear Presets have been updated for Mari 4.

Click here for highres image



Histogram Scan was inverting its result by default.


Clone & Merge polluted projects with leftover, unused nodes , if the layers duplicated were authored in a hybrid

Layerstack / Nodegraph workflow.


  • Misc

Graph Groups weren't detected correctly when the Nodegraph was docked in a custom palette,so some Extension Pack

Tools (Toggle Radio Nodes, rename Nodes etc.) would not find a selection.

Duplicated nodes were sitting on top of the original nodes. Duplicated nodes now are offset from their original position.

Jump to Node didn't return the focus to the Nodegraph after use


    • Making a font change when the cursor was at position zero in the text editor required 2 tries to stick

    • Some icons were not loading correctly on Linux


Subdivide was printing debug messages to the python console on startup



    • The mari.ExtensionPack() class now has multiple subclasses to remove clutter

You can use the Class/Method Finder UI under the Scripts / Python Menu to explore or refer to the 

Extension Pack Python Documentation


    • All Extension Pack OpenGL Functions now are prefixed with 'EP_'. 

If an existing prefix with an underscore existed it got replaced. Refer to the OpenGL Function Lib for details

    • pxslBias() and pxslGain() Functions have been removed. Use Function EP_BiasandGain() instead