19 Rendering: Initialization and Frame Setup
This tour explores rendering initialization and frame setup in r_main.c
, covering R_Init
, R_SetupFrame
, R_RenderPlayerView
, R_SetViewSize
, R_ExecuteSetViewSize
, and R_AddPointToBox
.
19.0.1 R_Init (r_main.c:773–794)
Initializes the renderer: - Sets up data tables (R_InitData
, R_InitPointToAngle
, R_InitTables
) - Applies default view size (R_SetViewSize
) - Initializes planes, lights, sky map, translation tables - Resets framecount
19.0.2 R_SetupFrame (r_main.c:829–863)
Prepares per-frame view state: - Assigns viewplayer
- Computes viewx
, viewy
, viewangle
(with offset) - Sets extralight
, viewz
, viewsin
, viewcos
- Manages fixedcolormap
and walllights
- Increments framecount
and validcount
19.0.3 R_RenderPlayerView (r_main.c:871–898)
Drives the frame render: - Calls R_SetupFrame
- Clears segmentation buffers: - R_ClearClipSegs
- R_ClearDrawSegs
- R_ClearPlanes
- R_ClearSprites
- Updates network events - Traverses BSP: R_RenderBSPNode
- Draws planes: R_DrawPlanes
- Renders masked objects: R_DrawMasked
- Interleaves with NetUpdate
checks
19.0.4 R_SetViewSize (r_main.c:658–665)
Defers view resizing: - Sets setsizeneeded
flag - Stores desired block scale and detail shift for the next refresh
19.0.5 R_ExecuteSetViewSize (r_main.c:671–680)
Applies view parameters: - Computes scaledviewwidth
, viewheight
- Derives detailshift
, viewwidth
, centerx
, centery
- Calculates projection: projection = centerxfrac
19.0.6 Rendering Function Selection (r_main.c:702–708)
- Sets column and span functions:
colfunc
,basecolfunc
,fuzzcolfunc
,transcolfunc
,spanfunc
- Based on
detailshift
(high vs. low detail)
19.0.7 Buffer and Sprite Setup (r_main.c:717–724)
- Initializes drawing buffer:
R_InitBuffer
- Configures texture mappings:
R_InitTextureMapping
- Sets
pspritescale
for player sprites
19.0.8 R_AddPointToBox (r_main.c:143–152)
Expands a bounding box to include a point (x, y)
: - Clamps box edges if the point is outside the current bounds
This completes the walk through of rendering initialization and frame setup in r_main.c
.