You will be able to define shader 'parameters' like so, which will then be available in your shader as pre-defined functions:
We're still working on the code, we'll make a fuss about it when it's done, because it should be pretty cool, and should finally make shaders easily tweakable by artists

Code:
<albedo>
<shader>
<param>
<colour3>
<name>BrickBaseColour</name>
<description>Base colour for the brick.</description>
<value>0.6 0.2 0.2</value>
</colour3>
</param>
<param>
<colour3>
<name>GroutBaseColour</name>
<description>Base colour for the grouting.</description>
<value>0.5 0.5 0.5</value>
</colour3>
</param>
<param>
<real>
<name>BrickColourVariation</name>
<description></description>
<min>0</min>
<max>1.0</max>
<value>0.3</value>
</real>
</param>
<shader>
<![CDATA[
def brickColour() vec3 :
paramBrickBaseColour() +
vec3(
noise(vec2(0.5 + brickXNum() * 10.0, 0.5 + brickYNum() * 10.0)) * paramBrickColourVariation(),
0.0,
0.0
)
def groutColour() vec3 :
paramGroutBaseColour()
def eval(vec3 pos) vec3 :
if(
(brickX() < grout()) ||
(brickY() < grout()) ||
(brickX() > (paramBrickWidth() - grout())) ||
(brickY() > (paramBrickHeight() - grout()))
,
groutColour(),
brickColour()
)
]]>
</shader>
</shader>
</albedo>