Dota2 Shader Node

  • July 23, 2013
  • 1 Like
  • Blender 2.6x
  • Render: Cycles
  • Creator: xrabohrok
  • License: CC-BY
You must be logged in to download.


Dota 2 has a internal shader system that follows common rules for most things that are drawn to screen. Most of these rules are approximations of lighting techniques (rimlight, specularity, emmission, and so on) that are defined in two maps: mask1.tga and mask2.tga. Each color channel, with Alpha, define how light will hit the model from different angles, as well as special effects such as glow or color mixing.

Without uploading the asset in question to the Dota 2 engine itself, it can be hard to tell how an item or NPC would look in game. This material node aims to alleviate some of that. Simply plug in the image textures required for input (Texture, Normal Map, mask1, mask2, illumination map), connect the output to the material output, and render in cycles. This will give a fairly good idea how your item looks in game. The node will automatically break apart each channel and process the information accordingly. The resulting image will be of finer quality than what the game will use, so this setup is also good for sizzle shots you may want to make for advertising on the workshop.

Please Note: --Rimlight is not factored, this can easily be done with positioning lanterns. --Detail masks are not currently supported, but I have an idea how to do it for future versions...

--Blender has no way (that I know of) of separating and processing alpha channels for materials, so it must be done manually. Connect your results to the illum-Mask input.

--if your model does not glow, ensure that the emit strength is zero and the illum-mask color is pure black. Doing this also seems to speed up renders.

For closer-to-game results, render the scene with one lamp (and maybe another for rimlight), and add global illumination.

Feel free to give constructive criticism or feedback, I'm not the greatest at this.

Weaver (Dota 2 Character, shown with shader node, model not included) and Dota 2 are owned by Valve Software.

**Update July 29 2013


  • SOZOMAIKA profile picture

    Thank you.

    Written July 24, 2013
  • elbrujodelatribu profile picture

    Could you share an screenshot or link about how to use this node? It seems interesting.

    Written July 24, 2013
  • xrabohrok profile picture

    I recently found out that some people over at polycount made a really convincing shader for 3DS max and Maya. I'm looking at the shader code to see what they did, so I'm going to hold off on a guide until I get this as good as it gets. Basically, load in image-textures that correspond with the _color, _mask1, and _mask2 suffixes to the corresponding input, and output to the material output. You can get the models and textures at the workshop website:

    Edited July 24, 2013
  • xrabohrok profile picture

    After thorough review, it turns out that half-lambert, the shading technique for required for the glowy effect of the Dota 2 models, is impossible in Cycles at the moment, and downright unfriendly in Blender render. This means that, until HL is added, The best representation will have to wait.

    Otherwise, guide incoming :) .

    Edited July 27, 2013
  • petrus34 profile picture

    good Job thx for this! worked for me under 2.68a

    Written July 26, 2013
  • lennemo profile picture

    I can't find the NodeTree folder when I append

    Edited August 06, 2013
  • xrabohrok profile picture

    Try now, should be fixed.

    Written September 03, 2013
  • dvachib profile picture

    Thx a lot!

    Written September 05, 2013
  • lexuss6 profile picture

    Image Texture node now (2.69 at the time) has Alpha channel output. So i guess you no longer need to extract it manually.

    Written March 09, 2014