Mari 4.6v1 Release Notes

Release Date

05 November 2019

System Requirements

Note:  NOTE: Mari increases its level of performance with newer, more advanced hardware configurations. However, Mari is tested and capable of operating on many older, prior-generation systems. For this reason we are listing below-minimum requirements, which are recommended, and on which tests have been performed. Your particular needs may vary from that of other users.

Officially Supported Operating Systems

Windows 7 64-bit or higher

Linux 64-bit operating system (CentOS/RHEL 6)

Note:  Mari is officially tested on GNOME. While it generally works well on other desktop managers like KDE, most of our bug fixes will target GNOME. However some desktop managers like XFCE and MATE are not compatible with Mari and will not be supported.

Minimum Hardware Requirements

Quad-core processor

10+GB disk space available for caching and temporary files

At least 4GB RAM

Display with 1680 x 1050 pixel resolution

An NVIDIA or AMD* graphics card with the latest drivers

1GB of graphics memory

OpenGL 3.2* or higher

*Displacement preview is currently only available on the cards and drivers that support OpenGL 4.0 or newer.

Recommended System Requirements

2.5+Ghz Quad-core processor

250+GB disk space available for caching and temporary files. SSD is preferable.

16GB RAM with additional virtual memory*

Display with 1920 x 1080 pixel resolution

An NVIDIA or AMD* graphics card with the latest drivers

2+GB of graphics memory

OpenGL 4.4 or higher support

*The use of virtual memory improves stability and helps prevent data loss on large projects.

'Recommended' does not guarantee that it meets your particular needs.

Tested Hardware

The configurations listed below are those that The Foundry have tested with Mari. Due to the constantly changing nature and wide variety of computer hardware available in the market, The Foundry is unable to officially certify hardware. The list below can be used as a recommendation and does not guarantee that it meets your particular needs.

Please download and install the latest graphics driver from the NVIDIA or AMD websites, and ensure that you are using 8.982.1 drivers or higher for AMD cards.

If you encounter any issues, please contact Customer Support directly through the Support Portal at the following address: https://support.foundry.com.

Tested Workstation Hardware

HP

HP XW6600

HP Z600

HP Z620

HP Z640

Tested GPU Hardware

AMD Prosumer Graphics Cards

AMD Radeon HD - D500

NVIDIA Prosumer Graphics Cards

NVIDIA Geforce GTX 660TI

NVIDIA Titan X

NVIDIA Geforce GT 650M

NVIDIA Geforce GT 675M

NVIDIA Enterprise Graphics Cards

NVIDIA Quadro 4000

NVIDIA Quadro K4200

NVIDIA Quadro K5000

NVIDIA Quadro M6000

NVIDIA Quadro M6000 24GB

NVIDIA Quadro P5000

NVIDIA Quadro P6000

NVIDIA Quadro RTX 6000

New Features

Geo-Channels

Mari 4.6v1 extends the Material System to include Geo-Channels, allowing for material looks to be driven by mesh maps like AO and Curvature. Geo-Channels are slots on objects for storing named, mesh specific texture maps. Either imported from disk or exported from the project via Channels, the Modo Bake Presets and Bake Points. Geo-Channel Nodes and Layers display the texture map of any Geo-Channel by choosing its name, allowing you to dynamically inject your mesh maps directly to the Node Graph or Layerstack. The new Sync on Bake options in Mari's Bake Point node, lets you share the results of a graph network across your current project. Geo-Channels can be used as an intermediate caching point to allow complex node sharing without the hard to navigate spaghetti of shared connections in the Node Graph. Geo Channel has new Base Color parameter for the base color, which the Geo Channel texture values are blended on top of.

Collapsible Nodes

With the Material System, we’re encouraging you to take advantage of Mari’s incredibly powerful Node Graph for material designing. So we’ve been taking steps to improve the user experience. All Mari nodes are now collapsable, with three states: expanded, collapsed and connected only. These can be cycled by either clicking the new button on the right of every node’s title bar, or by using the ~ shortcut while nodes are selecting nodes. These new collapsed states give you fine tuned flexibility to reduce the visual clutter of complex graphs, making the Mari Node Graph easier to read and navigate. The Multi-Channel nodes that power Mari’s Material System, have an additional Stream Collapsed mode. When all stream are connected in parallel to a downstream node, the connections will appear as a single blue edge. This drastically reduces visual clutter by reducing the size of the tall Multi-Channel nodes introduced in Mari 4.5.

Multi-Channel Stream Collapsed Nodes

The Multi-Channel nodes that power Mari’s Material System, have an additional Stream Collapsed mode. When all stream are connected in parallel to a downstream node, the connections will appear as a single blue edge. This drastically reduces visual clutter by reducing the size of the tall Multi-Channel nodes introduced in Mari 4.5.

Improved Node Auto-Placement

Mari’s node auto-layout logic has been replaced with a new method where upstream nodes are arranged in visual columns with merge nodes forming a visual backbone. This new method should increase the readability of large merge node chains and complex networks.

Customize Material Thumbnails

It is now possible for you to customize your material preset icon generation to conform to your desired standard of material art asset display. Geometry, Camera, Environment Light and Geo-Channels can now all be set in the new Mari Preferences > Thumbnail tab.

Custom Ingest Material Templates

With the introduction of Material Ingest Template Materials, you can now increase the complexity of your ingested Materials with customized promoted controls and user driven sub graph networks. Allowing for a more bespoke automated Material creation workflow.

Material Ingest Search Results

Material Ingest Tool users can now validate your search parameters without running the full material creation process. A table of PBR texture set search results can be displayed based on the parameters set in the tool.

New Vendor Shaders

As Mari’s Material System is driven by the inputs of your project’s shader, it has become more beneficial to have Mari approximations of the render engine shaders your textures are destined for, in order to design materials for your render engine of choice. Mari 4.6 brings two more render vendor contributed approximation shaders to Mari.

V-Ray Shader

The legacy V-Ray shader has been replaced by a new shader from the Chaos Group team behind V-Ray 2019. Artists that use the V-Ray render engine can now paint textures in Mari with a higher degree of confidence that your art will look correct in your final render.

3Delight Shader

A new 3Delight shader has been contributed to Mari by the 3Delight team. With the introduction of the 3Delight Surface shader, you can now paint textures in Mari that will give an approximation of the 3Delight render engine result. Making it easier to iterate lookdev between Mari and Katana.

New Procedural Nodes

A selection of new procedural patterns and filters have been added to enable you to create more complex non-destructive node networks inside materials and your projects.

Camera Projection

Camera Projection which projects an image onto a surface from the perspective of a Projector.

Projection

Projection which projects an image onto the mesh using planar, cylindrical or spherical projection.

Curvature

Curvature has been added which approximates surface curvature.

Marble

Marble has been added which creates marble-like veins.

fBm

fBm which outputs Fractal Brownian Motion.

Voronoi

Voronoi has been added which generates Voronoi cells.

Bricks

Bricks has been added which projects configurable brick or tile patterns onto a surface.

Weave

Weave has been added which projects configurable interlaced strand patterns onto a surface.

Checkerboard

Checkerboard has been added which generates a simple checkerboard pattern on a surface in UV space.

Scratches

Scratches generates non-uniform lines in UV space.

Atlas Random

Atlas Random has been added which randomly applies a tile from an atlased image for each patch.

Ceil

Ceil rounds the input up to the nearest whole number.

Distance

Distance outputs the distance between two input vectors.

Floor

Floor rounds the input down to the nearest whole number.

Fract

Fract outputs the decimal place remainder of the input.

Length

Length outputs the length of the input vector.

Mix

Mix linearly blends between two inputs.

Modulo

Modulo outputs the input A modulo the input B, this is the remainder after dividing A by B.

Normalize

Normalize outputs the input vector normalized to display in unit length.

Power

Power outputs the input A raised to the power of input B.

Square Root

Square Root outputs the square root of the input.

Vector Dot

Vector Dot outputs the dot product between two input vectors.

Vector Split

Vector Split has been added which splits out a vector into it's individual components.

Vector Combine

Vector Combine has been added which combines components of four inputs into a single output vector.

Normal Strength

Normal Strength controls the strength of a tangent space normal map. The higher the strength, the further the input normal points from a flat surface.

Feature Enhancements

ID 378847 - A new Preferences > Misc > Default Settings panel has been added. The Channel Preset Category for the New Project dialogue can now be set to either a specific shader model or to maintain the Last Used channel preset. The Preferences > Misc > Scene > Default Light Fixed To parameter is now under Default Settings > Lights Fixed.

ID 402797 - New channel presets for the updated VRayMtl shader have been added.

ID 395177 - A new menu Export Flattened > Export Flattened to Geo Channel exports the flattened data of selected channel to a Geo Channel

ID 406251 - Selecting The + button in the controlet of LocatorList in projector mode now adds and selects a new projector.

ID 396478 - The timer threshold for tool toggling with keyboard shortcuts is now exposed under Preferences > Misc > Toggle Tools > Key Held Threshold Time.

ID 399090 - A new baking action Update upstream has been added, which automatically bakes upstream bake point nodes, including those nested in groups.

ID 400904 - Backdrop node titles are now displayed above the top left hand corner of the node with at a fixed resolution for better readability.

ID 392273 - Mari now uses the same base UI style across all platforms, with Windows now matching Linux.

ID 395165 - Auto Layout has been extended to include backdrop nodes.

ID 398229 - The following Modo bake presets have been added to the Modo Render palette, Bake tab, Bake Preset list: Downslope, Up, Reflection.

ID 393722 - Copying and pasting nodes with promoted attributes did not maintain promoted and linked knobs in the pasted Group or Material. If nodes with linked knobs are pasted in the same Group or Material their knobs will append to the source linked knob.

ID 391501 - Mari now accepts non-square image files for import by resizing them to the nearest power-of-two square sizes bigger than the original.

ID 393048 - A new Example Material Design Project has been added to Mari.

ID 392287 - A new MaterialStudio HDRI map has been added to the default Mari environment images.

ID 393616 - Bake points are now able to detect changes to painted or baked data on an individual patch basis. Now, only the out of date patches will be updated. Changes to procedural nodes will still trigger a re-bake across all the objects udims.

ID 399171 - The input and output nodes of multi-channel nodes now have their description set to the name of their corresponding shader model stream.

ID 401269 - Small visual tweaks to nodes in the node graph have been made. They now have a solid colour outline and title bar.

ID 404310 - Project startup is now more informative when issues with an OCIO config are encountered. Options to remap or reset to another OCIO config are now available when the original config is missing or no longer valid.

ID 406243 - Mari's Bump and Displacement shader properties have been moved to their own Mari Surface tab in the shader properties to avoid confusion with shader-specific properties and Mari's internal properties.

ID 406244 - Stub attributes which are attributes not used by a Shader in Mari are now hidden by default. Default input values in the GLSL code are now also checked to determine which attributes are used.

ID 406245 - Stub inputs, which are present for completeness but which are not used by the shader in Mari, now have an indicator to show they are stubs in the Shaders palette.

ID 406622 - When viewing Multi-Channel Merge nodes in the Node Properties, you can now edit the node properties even if they have no valid channel connected upstream.

ID 407318 - The Mari learn pages have a new addition! Mari Node Graph nodes have now been documented, and you can find them under the Reference Guide on the Mari learn site. Each node topic lets you know what the node does, the input and output functions, and the node property functions.

Bug Fixes

ID 360080 - Mesh issue warnings were not triggered on project creation.

ID 400925 - The color displayed by the Backdrop node in the node graph did not match the color picked.

ID 401135 - Moving an individual edge from a connected Multi-Channel node to a different node create an unnecessary extra history step.

ID 401616 - When using a projector to import an image into the paint buffer the results would appear too dark.

ID 384544 - The Arnold Standard Surface shader did not respect the Flat, Basic and Full lighting modes.

ID 388475 - Logarithmic sliders with a range of 1 did not move correctly when dragged.

ID 402006 - Custom locators did not store transformation values between project sessions.

ID 406293 - Bake Point nodes nested inside groups were not invalidated when nodes upstream of their group changed.

ID 403148 - Colors picked from the image tab in the colors palette would appear overly bright.

ID 404114 - Applying a Filter to the Current Painting would result in a darker result than expected.

ID 405283 - The VRayMtl shader would display a checker board in Flat lighting mode

ID 405822 - Transparent areas of paint in the paint buffer would show a bright fringe when previewing Blur, Gaussian, Sharpen and Emboss filters on Current Painting.

ID 405894 - Paint strokes displayed dark fringes for hard-edged brushes in the Paint Buffer.

Known Issues

Graphics Cards

ID 207913 - Mari may crash, or operate with lower than expected performance, when using recent graphics drivers with some AMD cards.

There have been reports that Plays.tv and Raptr, which come bundled with the AMD FirePro drivers, can cause instability in Mari. If you are experiencing instability, please try uninstalling these applications.

ID 16225 / 18457 - Using NVIDIA graphics cards from the Fermi series with drivers older than version 270 results in various rendering issues when the Virtual Texture Type is set to Half or Float.

To resolve this, please download and install the latest graphics driver for your card from the NVIDIA website

ID 9404 / 12567 - Enabling Sync to VBlank in NVIDIA settings can drastically reduce Mari’s performance. If you experience very slow interaction, even with low-polygon models, on one of the Tested Workstation Hardware, navigate to:

• Linux: NVIDIA X Server Settings > X Screen 0 > OpenGL Settings and turn off Sync to VBlank.

• Windows: NVIDIA Control Panel > 3D Settings > Manage 3DSettings > Vertical Sync > Force off

Then, restart Mari.

Importing And Exporting

ID 123514 / 50886 - Imported shaders don't have channels assigned.

ID 113036 / 49131 - High polygon .obj files, exported using the OBJ Exporter plug-in, cannot be read back in to Mari.

ID 57756 / 29386 - When using the Export for Maya script, Maya’s viewport may incorrectly show some patches as transparent. This can be resolved by selecting High Quality Rendering or Viewport 2.0 from the Renderer menu within Maya.

ID 10157 / 16324 - Windows only: You cannot currently import an image into a channel using a relative file path. To work around this, use an absolute path when importing images.

ID 9854 / 14985 - There may be a slight pause after importing textures when creating new projects, while Mari saves the project.

Layers

ID 383360 - Using Displacement on Shaders may significantly decrease Canvas frame rate whilst navigating. This can be offset by disabling displacement on individual Shaders, or by globally disallowing the Tesselation Allowed setting found under Preferences > GPU > Shaders.

ID 64924 / 34690 - Flattening or caching layers or channels on complex projects may cause Windows to reset the graphics driver due to the long processing time. To work around this issue, you can try to flatten or cache fewer layers at a time, or reduce the value of the Max Render Size For Baking setting. This setting can be found under Preferences > GPU > Baking and Projection.

Reducing this size breaks the flattening or caching operation up into smaller pieces, which individually take less time to calculate, and thereby avoids a Windows graphics driver reset.

ID 53959 / 26460 - Layers - Painting a mask in a Mask Layer Group sometimes results in unexpected paint results. To prevent this from happening, either:

• Use a white “color” layer at the bottom of your mask stack. Any layer used over this initial “color” layer should then be fine, or

• If you want to create a mask in a Mask Layer Group, simply add another layer on your Mask Layer Group instead, and paint white into it to create a mask.

Mari Tools

ID 10046 / 13640 - The Blur tool can be slow to use on the initial stroke. Wait for Mari to process the blur before applying a second stroke.

ID 9567 / 13394 - Using the Select Items tool with the Facing set to Front to select and hide a portion of faces causes some of the faces within the selection to remain visible when zoomed in. To catch all selected faces, either:

• select Facing > Through instead of Front, or

• zoom in closer to the object.

Node Graph

ID 168753 - AIStandard nodes created in Mari3.0v1 are not compatible with Mari 3.0v2, or later. As a workaround, remove the old AIStandard nodes and recreate them in Mari 3.0v2, or later.

ID 126902 / 51462 - Creating a shader and attempting to view it in the Node Graph palette gives the impression that the DiffuseColor input edge is missing from the shader node. The input is present, but is incorrectly hidden. This is related to bug 51263 below

ID 126816 / 51452 - When importing a gizmo, the nodes in the gizmo did not retain their organization if they were created using the item name in the menu.

ID 125961 / 51263 - It is not currently possible to attach the Viewer node to standard Mari shaders, because they are hidden. As a workaround, you can click the View the current channel button above the Node Graph.

ID 125813 / 51247 - Channel transfer doesn't transfer Graph Layers as expected.

ID 124611 / 51082 - The Ambient Occlusion node's properties don't include a generate AO option.

ID 111329 / 48790 - Autoplace does not respect Backdrop nodes.

Nuke<>Mari Bridge

ID 48970 / 23010 - If Mari crashes when receiving incoming components from Nuke when the Virtual Texture Type is set to Float, lower the Virtual Texture Size to a value below 8192x8192.

ID 17678 / 19780 - A projector created in Ortho view in Mari does not re-project correctly in Nuke.

Ptex

ID 13600 / 17626 - It can take a long time to import very large or very high polygon count ptex models. The work-around is to assign a small uniform face size (1x1 or 2x2) on import, and then upres the relevant bits of the model as necessary after loading.

ID 13531 / 17618 - Ptex does not bake properly if the resolution of the face is too small. The workaround is to increase the resolution of the selected faces you are having problems with.

Shaders

ID 64961 / 34729 - Mari displays a rendering error on the canvas when it is unable to create a shader. More information has been included to help you determine the cause of the error. Some solutions might be to hide groups and layers, or to cache parts of your layer stack until a shader can be created

ID 64911 / 34679 - On extremely large projects, issues can arise with shader limits, and reaching the maximum allowed texture slots available. To avoid reaching these shader limits on large projects, try the following workarounds:

• hide groups and layers, or

• cache groups and layers.

Miscellaneous

ID 360737 - Linux only: When using the Select Color dialog, the colors picked with the eye dropper Pick Screen Pixels option may be incorrect due to an OS driven behaviour of darkening the rest of the Mari application.

To stop this behaviour the following preference can be disabled:

- CentOS 7: Applications > Utilities > Tweak Tool > Windows > Attached Modal Dialogues

This will also disable other desktop manager specific effects.

ID 308268 - Windows only: When working on multiple monitors, palettes sometimes cannot be docked.

ID 200836 - Scrolling in the Brush Editor or Tool Properties palette makes the scratch pad go blank.

ID 194832 - Bake times were significantly increased when baking into channels containing non-linear data.

ID 167883 / 51934 - When a project that contains a Tiled procedural is upgraded from 2.6 to 3.0, the frame rate drops drastically. To avoid this, replace the image in the Tiled procedural once the project has been upgraded.

ID 129292 / 51771 - Removing, changing, or hiding subdivided objects takes a long time.

ID 126389 / 51370 - Heavier projects are initially slower to render when colorspace is enabled.

ID 126164 / 51322 - Modo Render: The preview occasionally fails to update fully.

ID 125437 / 51199 - The AiStandard, RedshiftArchitectural, and VRayMtl shaders are not connected to the Current Channel automatically.

ID 125319 / 51185 - PythonAPI: Mari's Paint node does not appear in typeList(). To add a Paint node Pythonically, call:

ng = mari.geo.current().nodeGraph()

ng.createPaintNode(width, height, bitDepth)

ID 124614 / 51084 - Animated objects can take a long time to subdivide.

ID 124233 / 51049 - Texture transfer does not take object transformation into account

ID 123532 / 50898 - Existing subdivision calculations are lost when recalculating, even if recalculation fails.

ID 121276 / 50548 - Modo Render: Only camera moves are respected by live update.

ID 121139 / 50520 - Although faces with degenerate UVs can be loaded into Mari, they can cause issues in some cases. They do not occupy any space in UV, so it's impossible to properly paint on such faces. There is also the risk that some shaders may show undesirable lighting effects on faces with degenerate UVs.

ID 100303 / 46600 - Ambient Occlusion must be updated after any OpenSubdiv calculation.

ID 99115 / 46223 - The Sponge Desaturate mode does not work through the full dynamic range as it uses HSL for desaturation. HSL cannot be used with HDR because HSL works well only in LDR values.

ID 86007 / 41573 - Windows 8 only: The Windows key (Meta key) does not disengage when used in conjunction with a Wacom pen.

ID 62668 / 33293 - Linux: Launching Mari with the language set to one without certain character symbols resulted in Mari failing with an error that the specified transform could not be loaded. To work around this, set the locale (language) to English.

ID 60643 / 31946 - Sometimes paint is not baked because of memory management issues on the graphics card. This can be due to issues such as a high resolution paint buffer, a high bit-depth paint buffer, large virtual texture size, or even a large scale value on the paint buffer transform. These issues can usually be identified by glError: 0x505 out of memory messages in the log. Try reducing any or all of these values to prevent it happening. Graphics drivers are continually improving, so it’s also worth checking whether upgrading your drivers resolves the problem.

ID 45590 / 20510 - If you find that the startup time for Mari is longer than usual, please check that the LIC files in your RLM licensing data folder do not refer to obsolete server ports. If they do, place them in another directory and restart Mari.

ID 37066 / 20021 - Textures in the canvas intermittently switch between lower and higher resolutions. This issue is more likely to occur if your virtual texture resolution is low, and you're working on a complex model with displacement. Possible workarounds include increasing your virtual texture size, reducing the number of channels Mari has to access at once (for example, by reducing the number of channels required for the current shader), to reduce the patch resolution of patches in the channels used in the shader, or to use a smaller canvas window or monitor.

ID 9758 / 14201 - Linux only: Mari becomes unresponsive after the system is woken from sleep.

ID 9631 / 13700 - Adjusting the Camera > Perspective settings for a Projector is not reflected on the canvas until the Projector is made Current.

ID 9363 / 12102 - Current brush settings do not get saved as part of the project. Instead, Mari reverts to the default settings when you close and relaunch it.

ID 9342 / 11874 - Mari doesn’t recognize 3-digit padded .obj sequences as animation

ID 8030 / 13571 - Launching a new version of Mari for the first time, when a config file exists from a previous version, sometimes results in an object not appearing in the Ortho view.

To solve this, close Mari, delete the following config file and relaunch Mari:

• Linux: ~/.config/TheFoundry/Mari.conf

• Windows: C:/Users//.mari/TheFoundry/Mari.ini

ID 7945 / 13294 - Windows: Mari sometimes crashes when trying to load data on large projects due to the program exhausting all window manager objects.

To reconfigure the user object limit:

Open regedit and navigate to HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\Windows, and

Edit USERProcessHandleQuota to a larger number.

If this number gets too large, you may also have to modify GDIProcessHandleQuota.

Developer Notes

These are the changes relevant to developers.

New Features

There are no New Features in this release.

Feature Enhancements

ID 397058 - Node parameter type locatorlist exposes a new type projector, which allows to select a projector in the list and passes the view projection matrix to the shader.

ID 322041 - The installation bundle now includes python headers.

ID 349215 - Mari exposes a LocatorList class to manipulate locator lists, load and save them.

ID 396506 - Proprietary GLSL code in Mari's nodes and shaders are now encrypted.

ID 397058 - Node parameter type locatorlist exposes a new type projector, which allows to select a projector in the list and passes the view projection matrix to the shader.

ID 390168 - mari.ShaderModelManager has been extended with a new function, shaderModel(Name) which returns an instance of the mari.ShaderModel with the given name.

ID 390169 - mari.ShaderModel has been extended with a new function, inputs(), which retuns a dictionary mapping the streams of this shader model's short names to their respective mari.ShaderModelInput.

ID 391986 - The duplicate() function now returns the newly duplicated project. A signal is also emitted when a project is duplicated in the UI.

ID 397055 - The new functions, nodePathKey() and shaderModel(), have been added to get the path of the shader for a corresponding shader model and shader model of a material respectively.

ID 400468 - Mari now exposes a LocatorList class to represent and manipulate an in-scene locator list.

ID 407700 - The Custom Shader API documentation describing Mari's GLSL functions has been extended.

ID 403918 - Session scripts have now been added to the Python API documentation.

Bug Fixes

ID 384553 - isBakePointNode() would return true for Channel nodes. A new class, ChannelNode, has been added for Channel nodes. Channel.channelNode() will now return an instance of this new class.

ID 369073 - The python API documentation for the function mari.node.outputNodes() had a formatting error.

ID 402709 - The Metadata metadataItemList() function returned an empty list.

Deprecated Functions

Function

Introduced

Deprecated

Replacement

genType blend_to_default(genType default, vec4 input);

4.5v1

4.6v1

Instead, please use:

genType mriBlendToDefault(genType default, vec4 input);

genType saturate (genType value);

4.5v1

4.6v1

Instead, please use:

genType mriSaturate(genType value);