Using packed arrays
Loosely speaking, the code inside a shader has to be executed for at least every pixel in your screen. This is the reason why GPUs are highly optimized for parallel computing. This philosophy is also evident in the standard type of variables and operators available in Cg. Understanding them is essential not just to use shaders correctly, but also to write highly optimized ones.
How to do it...
There are two types of variables in Cg: single values and packed arrays. The latter can be identified because their type ends with a number such as float3
or int4
. As their names suggest, these types of variables are similar to structs, which means that they each contain several single values. Cg calls them
packed arrays, though they are not exactly arrays in the traditional sense.
The elements of a packed array can be accessed as a normal struct. They are typically called x
, y
, z
, and w
. However, Cg also provides you with another alias for them, that is, r
, g
, b
, and a
. Despite...