3dsMax 2019 – OSL map

3dsMax 2019 has been released.

The most noticable feature is the OSL(Open Shading Language) map. You should watch Mads video to see what it can do. Obviously this is a god send for technical minded users. It is like MCG for maps. You can make anything. Your imagination is the limit.

But, what does it brings to the artist who doesn’t/can’t/doesn’t want to code?

3dsMzx 2019 is shipped with 101 OSL maps from bitmap loading to procedural noise, color correction and utilities. Thisbrings some interesting features and workflows. Let’s see what we can do with them.

Random By Index

You can randomize any vaule type that OSL supports by index number. For example, You can randomize gain value(float) or UVW offset(vector) or diffuse color. Anything!

Object property access

Even better, OSL map allows to access various object data such as Material ID, Object ID, Wire(frame) Color, Node Handle(a unique id per object), Node(Object) name and User properties(!). If you combine these maps with Rendom By Index map, you can randomize almost every map/material paramateres per object. Here is an exmaple. All object have the same material with single bitmap texture.


Finally the switcher map has been arrived. This map allow you choose a map among the multiple children map. You have 1-of-10 and 1-of-5. But, you can cascade them to support more than 10.

Independent UVW control

It is like Coordinate rollout is a seperate map, and you can plugin the UVW into multiple maps. Yes, now you can instance UVW across multiple maps. Also you can also randomize UV by using the above maps. Do you want to distort UV? then apply a noise map to UVW map.

Randomized Bitmap

“Randomly place (and alpha blend) a set of bitmaps on top of something else”.
Just try it. So much fun!

Shuffling channel

You can easily shuffle channels around. Find Compoments(Color) map and connect from where you want get to where you want to put.

 .tx /.dpx format loading

OSL uses OIIO for image IO. Therefore, the image formats which supported by OIIO will be supported in OSL map. But, you can read .tx and .dpx directly.

Filename as a map

When you have a single file which is needed be used in multiple map. You can use Filename map and feed to the path to multiple Bitmap Lookup maps(OSL version of bitmap map).

Gamma checkbox in the map

You don’t need to use file dialog anymore for gamma settings. Gamma setting is in the paramaters rollout! It also has AutoGanna option which will set gamma value depends on the file format.


OSL gives you access to various scene data such as position/normal/uv. You can get this data in various space. You can use local object position or world normal vector as map. Do you want to render out UV as texture? Just plug UVW to diffuse color.

Math, Math, Math

You can do all kinds of math you want to do. Many math functions are exposed as maps. You don’t have to “code” for simple math operations. Do you want to have a black and white mask for your mountain? Let world position value and remap to 0-1. Simple.

Granular color correction

Of course, you can use any math maps to do whatever you want. But, 3dsMax 2019 also has 2 OSL maps you can use for color correction, Lift/Gamma/Gain and Tweak. This should cover all features of legacy Color Correction map.

Procedural map that renders exactly same across renderer

Many renderers support 3dsMax noise map. But, the result of the noise map could be different for the renderer which doesn’t use 3dsMax map api because they have own implementation of noise map. In this case, your rendered noise mapptern would not match with other portion of 3dsMax such as Displace modifier. If you use OSL procedurals, the render result would be exactly same regardless of renderers. This is HUGE. OSL allow to have a foundation of unified map workflow across renderers. Check out these renders. The left one is rendered with VRay. The right one is rendered with Arnold.

3dsMax 2019 come with new noise map with the follwing 6 types of new noise. perlin/uperlin/simplex/cell/hash/gabor

New pattern maps

It also has a few interesting new pattern maps.
Checker(3D), Candy, Mandelbrot, Revets, Digits

Unified and portable map tree

The biggest chanllenge of moving shader around between renderer is the complicated map tree. One incompatible map in the middle of shader tree will break the shader tree from that point. Even thiough there are enough matching maps. It is almost impossible to reuse shader tree and produce exactly the same result. With OSL, you can. As long as you stay in OSL, the result map tree will always be same just like procedurals.

Possibility of rendering on Linux

You already can convert mesh data to a renderer scene file format like vrscene or ass, rib file for rendering. But, the nature of 3dsMax renderer integretion always requires 3dsMax to evaulate map tree unless you only uses the renderer native maps. This is the main obstacle to render max scene on linux.  Now with OSL, the renderer scene file format could include all map tree in the file and render. It opens a posibility of rendering 3dsMax scene on Linux.

This is a new era for rendering in 3dsMax. Enjoy!