Hi,
I always suggest that people check out Texturing & Modelling: A Procedural Approach :
http://www.amazon.com/Texturing-Modeling-Procedural-Approach-Kaufmann/dp/1558608486/It isn't a cheap book, but it's a great way to get a start out with understanding and creating shaders, or in TG2 parlance, working with functions. If you are serious about wanting to learn to use functions, then I recommend it. Not all of the book is useful, but there a few chapters which make up for the less interesting stuff.
There is something you need to understand about using functions - they aren't intended to be used by everyone. They're there for people who already know a bit about making shaders, or people who are prepared to learn using the huge amount of knowledge available in books and on the web etc. They have always been intended for "high end" users. It is basically a graphical way of programming shaders, similar to writing RenderMan shaders but without the typing. If we don't provide some effect, chances are you can create it using functions.
From a personal perspective, I think we do need to have documentation about how you work with functions, how and where to hook them up and all that. We need to explain how our functions work as compared to what other people might be used to, I myself find some of what we're doing counterintuitive. However I don't believe it's our job to actually teach you how to create shaders. It isn't our job to teach you how to combine things to create effects ( although some basic examples to get you started would be good ), because that's a huge topic and there is lots of material out there to do that. The Texturing & Modelling book is a great way to start IMO, it's how I learnt. You can translate what you see into the book into TG2 function networks. The same goes for books about RenderMan shaders, I'd say. There are certain underlying concepts common to creating shaders which are widely applicable, even if the ways of putting them into practice vary. There are resources out there you can use to learn about this stuff.
Someone mentioned they might now know how to find the difference between two colours, but they don't know what to do with it. Using functions is a creative process, we give you the building blocks, you decide what to do with them. While you will find books which give examples of shaders/effects, you won't find books which tell you every way to use every concept. Examples of basic effects often inspire you to do something else, or take the shader in a new direction.
What could you do with the difference between two colours? You could use it to fade out some other colour, or control displacement of something. You could use it for complex control of distributions, based on the colour channels in loaded images. There are lots of things you could do. Each node is a tool which you can use to give the final result.
I wrote the function node documentation, and tried to give the key information you need to make use of the node. I have tried to give examples of how to use some of the nodes, check out the Modulo scalar documentation for example. This is a big, big job though. I essentially wrote the function node documentation when I had some spare time. To write examples of how to use all the nodes, you're essentially talking about writing a small book. I don't know what the plans are for the documentation for the final release, but it is a lot of work. Thing is, the basics of how to use this stuff is covered lots of other places.
Do you need a bit of ability at maths to work with functions? Yes you do. That's unavoidable, computer graphics at its basic level, such as you're getting to when using functions, is all about maths. However, I'm not tremendous at maths by any means, and there is a big difference between coming up with some new noise pattern and using noise patterns and the basic building blocks of the functions to create the effect you want. You don't have to be a mathematical genius to do that, you can do a lot just with basic maths skills like addition and multiplication and understanding a bit about what sort of numbers you get from things like the sin or gain nodes. There are certain things you need to know about working with colours and such. Problem solving skills are also valuable, if everything works right first time you're doing very, very well ;-).
One thing I hope to add to some of the nodes is a graphical example of what they do, for example have the gain node show a gain curve. I'm more of a visual person than a maths person, and I often create shaders by thinking of the shapes ( otherwise known as graphs ) of the functions that the nodes use. Picture a sine wave for example. When I can see a bias curve I can see how I might use values generated from it to achieve something. For example in Sorta Surf from WaterWorks ( my TG v0.9 plugin ) I use a bias function ( like the
bias node ) to fade off part of the surf effect, because a certain bias value created a curve which looked like it would give a nice looking fade. To get what I wanted I had to invert the values from the bias function and then multiply the relevant part of the surf effect by that value.
BTW, a scalar is essentially just a single number, like 1 or -2.5. A vector is a group of, in TG2's case, three scalars ( for example, x, y and z coordinates ).
Finally, I think it's fair to say that while using functions really adds to what you can get out of TG2, we're giving people who know how to use them the capability to program their own stuff inside TG2, you don't have to know how to use them to get a lot out of TG2. I think Oshyan is someone who says "I never use functions" and I don't think Luc uses them much either, for example. If you really want to use them though, that's great, but if you haven't done anything like this before there is some learning to be done. There are lots of places to learn it without Planetside teaching you it. I don't say that to blow people off, but using functions/shader writing is a big field and important to the CG industry and there are lots of learning resources. We aren't doing anything especially different with TG2's function nodes, basically we're letting you do stuff graphically with the mouse in the node network that you used to have to know how to program in C to do with TG v0.9. The idea of doing it graphically is not exactly new either. That being said, this is pretty hardcore stuff and if you get good at creating shaders you're definitely in the minority and you shouldn't feel bad if you don't get it.
Regards,
Jo