Systems and methods for utilizing intermediate target(s) in connection
with computer graphics in a computer system are provided. In various
embodiments, intermediate memory buffers in video memory are provided and
utilized to allow serialized programs from graphics APIs to support
algorithms that exceed the instruction limits of procedural shaders for
single programs. The intermediate buffers may also allow sharing of data
between programs for other purposes as well, and are atomically
accessible. The size of the buffers, i.e., the amount of data stored in
the intermediate targets, can be variably set for a varying amount of
resolution with respect to the graphics data. In this regard, a single
program generates intermediate data, which can then be used, and re-used,
by an extension of the same program and/or any number of other programs
any number of times as may be desired, enabling considerable flexibility
and complexity of shading programs, while maintaining the speed of modem
graphics chips.