Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

Productions in this form (left) can be transformed into a scene graph (right).

Non-terminal symbol on production’s LHS corresponds to a union node. State-changing terminal symbols on production right-hand side are combined into single affine transformation node. Two iterations of these productions results in 25 instances of a cylindrical segment.

In this form, productions take the form of a scene graph: each node is expanded into a collection of child nodes, each with an aggregate transformation encoded here as x,y position, rotation angle and scale

L→{aL,af+L,afL,aff−L,affL}

Each node consists of a symbol and its accumulated state, and is stored as a single pixel in a deep 1-D texture, called the symbol-state texture. Each column above is a symbol-state texture. A single application of the productions on a symbol-state texture generates a new symbol-state texture.

Each buffer can contain only a limited amount of data. To store all the required data, we use a deep buffer. We maintain several buffers for which there is a pixel-level correspondence; the data is distributed across this set of buffers. For our algorithm, this means we must apply our programs once per buffer.

The 2-D buffer is processed in 1-D using modular arithmetic. Context sensitive productions can also be supported by examining the 1-D neighbors.

A bitonic sort creates a sorting network requiring no flow-control decisions which makes it ideal for SIMD processing. We implement multiple stages of the bitonic sort in a single fragment program to reduce context-switch overhead. On an NV30, this optimization accelerates the sorting of up to 2048 elements.