r500/diagrams/z_operations.dot
2025-11-11 18:34:41 -06:00

60 lines
1.2 KiB
Plaintext

digraph G {
vertex_shader [label="(from the vertex shader)"]
subgraph cluster_clipping {
label = "clipping"
DX_CLIP_SPACE_DEF [label="DX_CLIP_SPACE_DEF
possibly clip the polygon"]
}
subgraph cluster_perspective {
label = "perspective division"
VTX_Z_FMT [nojustify=true label="VTX_Z_FMT
(if enabled) divide Z by W"]
}
subgraph cluster_viewport_transformation {
label = "viewport transformation"
VPORT_Z_SCALE
VPORT_Z_OFFSET
}
subgraph cluster_geometry_assembly {
}
subgraph cluster_setup_unit {
label = "setup unit"
SU_DEPTH_SCALE
SU_DEPTH_OFFSET
}
subgraph cluster_zfunc {
label = "ZFUNC"
{ rank=same
depth_test [shape=box label="depth test"]
depth_pass [shape=box label="depth pass"]
}
depth_test -> depth_pass
}
Z_BUFFER [shape=invhouse label="(write the new Z
value to the Z-buffer)"]
fragment_shader [label="(to the fragment shader)"]
vertex_shader -> DX_CLIP_SPACE_DEF
DX_CLIP_SPACE_DEF -> VTX_Z_FMT
VTX_Z_FMT -> VPORT_Z_SCALE
VPORT_Z_SCALE -> VPORT_Z_OFFSET
VPORT_Z_OFFSET -> SU_DEPTH_SCALE
SU_DEPTH_SCALE -> SU_DEPTH_OFFSET
SU_DEPTH_OFFSET -> depth_test
depth_test -> Z_BUFFER
VPORT_Z_OFFSET -> depth_pass
depth_pass -> fragment_shader
}