Here are some examples.
- R=G=B=x (your MWE)
- R=G=B=x
- R=G=B=x²
- R=G=B=√x
- R=G=B=log(1+x)
- R=G=B=log(1+9x)
- R=G=B= ... well ...

\documentclass{article}
\usepackage[a3paper]{geometry}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[left color=black,right color=white](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{LBRW}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
dup dup % u u u
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=LBRW](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{dup mul LBRW}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
dup mul % u²
dup dup % u² u² u²
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=dup mul LBRW](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{sqrt LBRW}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
sqrt % √u
dup dup % √u √u √u
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=sqrt LBRW](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{1 add log LBRW}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
1 add log % ㏒(1+u)
dup dup % ㏒(1+u) ㏒(1+u) ㏒(1+u)
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=1 add log LBRW](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{9 mul 1 add log LBRW}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
9 mul 1 add log % ㏒(1+9u)
dup dup % ㏒(1+9u) ㏒(1+9u) ㏒(1+9u)
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=9 mul 1 add log LBRW](-10,-1)rectangle(10,1);
\end{tikzpicture}
\pgfdeclarefunctionalshading{logistic}{\pgfpoint{0bp}{0bp}}{\pgfpoint{100bp}{100bp}}{}{
50 div .5 sub exch % v U
50 div .5 sub 4 mul exch % 4u v
dup 1 exch sub % 4u v 1-v
2 index % 4u v (1-v) 4u
mul mul % u 4uv(1-v)
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
exch pop dup dup
}
\begin{tikzpicture}
\fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
\shade[shading=logistic](-10,-1)rectangle(10,1);
\end{tikzpicture}
\end{document}
Remarks
dup
duplicates the topmost element.
- The
dup dup
at every very end is actually unnecessary.
- If you leave only a single number in the stack, PDF-renderer will treat it as the grayscale.
- If there are three, they are R, G, B respectively.
- If there are 0 or 2 or 4, 5, 6, ... I do not know.
pop
discards the topmost element.
- The
pop
at every very beginning throws away the y-coordinate, which is useless except the last case.
- Replacing
pop
by swap
, you can leave the y-coordinate at the bottom alone. But then dup dup
becomes necessary.
- For more information, see TikZ manual IX.110.2.3 General (Functional) Shadings.
- For ever more information, see PDF manual 8.7.4.5.2 Type 1 (Function-Based) Shadings.
- See also Annex B (normative) Operators in Type 4 Functions.
\pgfdeclarefunctionalshading
. Check the manual or tex.stackexchange.com/questions/54193/… for examples.