var nodeList = new Array();nodeList[0] = "main"; nodeList[1] = "add"; nodeList[2] = "subtract"; nodeList[3] = "multiply"; nodeList[4] = "divide"; nodeList[5] = "reciprocal"; nodeList[6] = "power"; nodeList[7] = "sqrt"; nodeList[8] = "log"; nodeList[9] = "min"; nodeList[10] = "max"; nodeList[11] = "abs"; nodeList[12] = "sign"; nodeList[13] = "ceil"; nodeList[14] = "round"; nodeList[15] = "floor"; nodeList[16] = "trunc"; nodeList[17] = "step (a <= b)"; nodeList[18] = "smoothstep"; nodeList[19] = "if"; nodeList[20] = "frac"; nodeList[21] = "fmod"; nodeList[22] = "clamp"; nodeList[23] = "clamp (simple)"; nodeList[24] = "clamp 0-1"; nodeList[25] = "lerp"; nodeList[26] = "lerp (simple)"; nodeList[27] = "inverselerp"; nodeList[28] = "posterize"; nodeList[29] = "blend"; nodeList[30] = "remap"; nodeList[31] = "remap (simple)"; nodeList[32] = "noise"; nodeList[33] = "one minus"; nodeList[34] = "negate"; nodeList[35] = "exp"; nodeList[36] = "hue"; nodeList[37] = "hsv to rgb"; nodeList[38] = "rgb to hsv"; nodeList[39] = "value"; nodeList[40] = "vector 2"; nodeList[41] = "vector 3"; nodeList[42] = "vector 4"; nodeList[43] = "texture 2d"; nodeList[44] = "texture asset"; nodeList[45] = "value (property)"; nodeList[46] = "vector 4 (property)"; nodeList[47] = "color"; nodeList[48] = "cubemap"; nodeList[49] = "slider"; nodeList[50] = "switch"; nodeList[51] = "toggle"; nodeList[52] = "dot product"; nodeList[53] = "cross product"; nodeList[54] = "reflect"; nodeList[55] = "normalize"; nodeList[56] = "append"; nodeList[57] = "component mask"; nodeList[58] = "desaturate"; nodeList[59] = "channel blend"; nodeList[60] = "normal blend"; nodeList[61] = "distance"; nodeList[62] = "length"; nodeList[63] = "transform"; nodeList[64] = "vector projection"; nodeList[65] = "vector rejection"; nodeList[66] = "ddx"; nodeList[67] = "ddy"; nodeList[68] = "ddxy"; nodeList[69] = "panner"; nodeList[70] = "rotator"; nodeList[71] = "parallax"; nodeList[72] = "uv tile"; nodeList[73] = "uv coordinates"; nodeList[74] = "object position"; nodeList[75] = "object scale"; nodeList[76] = "screen position"; nodeList[77] = "world position"; nodeList[78] = "vertex color"; nodeList[79] = "fresnel"; nodeList[80] = "normal direction"; nodeList[81] = "bitangent direction"; nodeList[82] = "tangent direction"; nodeList[83] = "view direction"; nodeList[84] = "view reflection"; nodeList[85] = "face sign"; nodeList[86] = "light color"; nodeList[87] = "light attenuation"; nodeList[88] = "ambient light"; nodeList[89] = "light direction"; nodeList[90] = "half direction"; nodeList[91] = "light position"; nodeList[92] = "time"; nodeList[93] = "view position"; nodeList[94] = "projection parameters"; nodeList[95] = "screen parameters"; nodeList[96] = "pixel size"; nodeList[97] = "fog color"; nodeList[98] = "scene color"; nodeList[99] = "scene depth"; nodeList[100] = "depth blend"; nodeList[101] = "depth"; nodeList[102] = "pi"; nodeList[103] = "tau"; nodeList[104] = "phi (golden ratio)"; nodeList[105] = "root 2"; nodeList[106] = "e (euler's constant)"; nodeList[107] = "sin"; nodeList[108] = "cos"; nodeList[109] = "tan"; nodeList[110] = "arcsin"; nodeList[111] = "arccos"; nodeList[112] = "arctan"; nodeList[113] = "arctan2"; nodeList[114] = "matrix 4x4"; nodeList[115] = "matrix 4x4 property"; nodeList[116] = "multiply matrix"; nodeList[117] = "transpose"; nodeList[118] = "code"; nodeList[119] = "relay"; nodeList[120] = "set"; nodeList[121] = "get"; function scrollTo(hash) { location.hash = "#" + hash; } function OnUpdateSearchField(){ var searchString = document.getElementsByName("searchfield")[0].value.toLowerCase().trim(); searchString = searchString.replace(/\s+/g, ''); var alwaysShow = true; if(searchString.length > 0) alwaysShow = false; var matchedAny = false; for(var i=0;i Shader Forge
“It turns the dark and strange arts of shader programming into something understandable and non-evil”
Nicklas 'Nifflas' Nygren, developer of the Knytt series

Making a basic shader
This tutorial will go through how to create a basic shader with a tinted diffuse and a normal map


Gradients (Part 1, The Basics)
Creating the three basic types of gradients


Gradients (Part 2, Manipulation, Waves & Angular Healthbar)
Manipulating gradients, creating waveforms and finally, creating an angular healthbar


Gradients (Part 3, Color Ramps & Dissolve)
Creating color ramps and using it in a dissolve shader


Vertex color blending & UV tiling
This tutorial will show how you can use vertex colors to blend textures, and how to tile them


Custom Blinn-Phong
This tutorial will shed light on how to use the custom lighting functionality,
in this case how to recreate the Blinn-Phong lighting model