1 research outputs found

    Efficient Triangle and Quadrilateral Clipping within Shaders

    No full text
    Abstract. Clipping a triangle or a convex quadrilateral to a plane is a common operation in computer graphics. This clipping is implemented by fixed-function units within the graphics pipeline under most rasterization APIs. It is increasingly interesting to perform clipping in programmable stages as well. For example, to clip bounding volumes generated in the Geometry unit to the near plane, or to clip an area light source to the tangent plane of a surface in a Pixel unit. While clipping a convex polygon is algorithmically trivial, doing so efficiently on vector architectures like GPUs can be tricky. This article presents an efficient implementation of Sutherland-Hodgman clipping for vector processors. It has high branch coherence, uses only register storage (i.e., it does not require a move-relative memory operation), leverages both data and instruction parallelism, and has a peak register count of only two 4-vectors (7 scalars). I found it to be about five times faster than direct Sutherland-Hodgman and yield a 45 % increase in net throughput when applied in the algorithm from a previous publication on two different GPU architectures. The principles of optimization presented for this class of parallel algorithm extend to other algorithms and architectures. The result of clipping a primitive by a plane is the intersection of the primitive and the positive half-space bounded by the plane. If the input primitive is a convex polygon with k vertices, then result is expressible as a convex polygon with k + 1 vertices, assuming we allow a zero-area polygon to represent the empty intersection and allow the result to contain degenerate vertices. Clipping arises frequently in computer graphics. For example, one often clips 3D polygons to the near plane so that their 2D projection is continuous and easy to rasterize or bound. An increasing number of algorithm
    corecore