Accessing and modifying packed arrays
Loosely speaking, the code inside a shader has to be executed for at least every pixel on your screen. This is the reason why GPUs are highly optimized for parallel computing; they can execute multiple processes at the same time. This philosophy is also evident in the standard type of variables and operators available in Cg. Understanding them is essential, not just so that you can use the shaders correctly, but also so that you can 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...