r500/diagrams/simplified_particle_data_flow.dot
2025-11-13 10:56:28 -06:00

66 lines
1.5 KiB
Plaintext

digraph
{
//graph [ranksep=1 nodesep=1]
graph [nodesep=0.5, margin=0]
fontname="Computer Modern,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif"]
edge [fontname="Helvetica,Arial,sans-serif"]
layout=dot
labelloc = "t"
node [shape=plaintext]
read [label=<<b>read buffer</b>> height=0]
write [label=<<b>write buffer</b>> height=0]
shader [label=<<b>fragment shader</b>> height=0]
particle_stateA [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD COLSPAN="2" ROWSPAN="2">state </TD>
<TD BGCOLOR="chartreuse2" PORT="src">a</TD>
</TR>
<TR>
<TD BGCOLOR="azure3">b</TD>
</TR>
</TABLE>>]
particle_stateB [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD BGCOLOR="azure3">a</TD>
<TD COLSPAN="2" ROWSPAN="2">state</TD>
</TR>
<TR>
<TD BGCOLOR="chartreuse2" PORT="dst">b</TD>
</TR>
</TABLE>>]
node [shape=ellipse]
simulation [label="arbitrary\ncomputation"]
edge [style=invis]
rank=same {read -> shader -> write}
read -> particle_stateA
shader -> simulation
write -> particle_stateB
subgraph program {
edge [weight=1000 style=dashed]
// uncomment to hide the grid
//edge [style=invis]
//
// vertex_buffer_copy * 4
edge [weight=1000 style=solid]
rank=same {
particle_stateA:src -> simulation:w
simulation:e -> particle_stateB:dst
}
}
}