Not exactly, is the way the variable will be used by the renderer. Facevarying is really new for me but I'm friend of the older types
. To understand the scope of a variable here's a snippet of the RiSpec:
"11.7 Uniform and Varying Variables
A renderer implementation may choose to shade many points, or even large regions of a
surface, at once. How large a such a region may be is implementation-dependent.
Shaders contain two classes of variables: uniform variables are those whose values are constant
over whatever portion of the surface is being shaded, while varying variables are
those that may take on different values at different locations on the surface being shaded.
For example, shaders inherit a color and a transparency from the graphics state. These
values do not change from point to point on the surface and are thus uniform variables.
Color and opacity can also be specified at the vertices of geometric primitives (see Section
5, Geometric Primitives). In this case they are bilinearly interpolated across the surface,
and therefore are varying variables.
Local variables and arguments to shaders are declared to be either uniform or varying by
specifying a storage modifier:
varying point p;
uniform point q;
Variables declared in the argument list of a shader are assumed to be uniform variables by
default. These are sometimes referred to as instance variables. If a variable is provided
only when a shader is instanced, or if it is attached to the geometric primitive as a whole,
it should be declared a uniform variable. However, if a variable is to be attached to the
vertices of geometric primitive, it should be declared as a varying variable in the shader
Variables declared locally in the body of a shader, as arguments to a function, or as local
variables are assumed to be varying. Declaring a variable to be uniform inside a shader
or function definition is never necessary, but may allow the compiler to generate more
efficient code, particularly for renderer implementations that can shade large regions of a
surface at once.
If a uniform value (or a constant) is assigned to a varying variable or is used in a varying
expression, it will be promoted to varying by duplication. It is an error to assign a varying
value to a uniform variable or to use a varying value in a uniform expression."