gSPClipRatio

gSPClipRatio [Macro]

Function

gSPClipRatio

Specifies the size ratio between the clipping box and the scissoring box

Syntax

#include <ultra64.h>        /* gbi.h */
gSPClipRatio(Gfx *gdl, r)
gsSPClipRatio(         r)

Arguments

gdl
the display list pointer.
r
the relative size (Clipping box : scissoring box).
FRUSTRATIO_1(1:1)
FRUSTRATIO_2(2:1)
:
FRUSTRATIO_6(6:1)

Description

This macro specifies the size ratio between the clipping box and the scissoring box in order to boost performance. This explanation assumes that the scissoring box is the same size as the viewport region (see gDPSetScissor and gSPViewport).

Scissoring is performed by rasterizing the entire triangle and then deleting pixels which lay outside the screen. (This consumes processing time in the RDP.)

Clipping is performed by converting a large triangle that protrudes out of the clipping box, into a number of small triangles, all of which fit inside the clipping box. (This consumes RSP processing time in the RSP.) For details, please see Section 12.3.1, Figure 12-4 "Scissoring/Clipping/Screen Rectangles" in the N64 Online Programming Manual.

When the clipping box is near in size to the scissoring box there are more occasions for clipping, which places a greater burden on the RSP. In addition, RDP processing speed declines because there is also more rendering, due to the increase in the number of polygons that results from the clipping process, where a large triangle is divided up into many small ones, as explained above. (The rendering of two small triangles generally requires more RDP processing time than one large triangle.)

Conversely, when the clipping box is much larger than the scissoring box, there are few occasions for clipping so the burden on the RSP declines. However, RDP processing speed will also decline because there are more occasions for scissoring (which is performed by the RDP).

The performance of the RSP was improved significantly with the release of F3DEX2. Thus, you should place greater regard on the above-mentioned influences on the RDP when determining the optimal size ratio.

Since the most effective ratio will differ depending on the model, try various values and choose the one that works best. For details, please see Section 11.6 "Clipping and Culling" in the N64 Programming Manual.

Note

The initial value in F3DEX2 is FRUSTRATIO_2.

Example

// Makes the clipping box five times larger than the scissoring box
gSPClipRatio(glist++, FRUSTRATIO_5);

See Also

gDPSetScissor, gSPViewport

Revision History

02/01/99 Entirely revised.