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=<read buffer> height=0]
write [label=<write buffer> height=0]
shader [label=<fragment shader> height=0]
particle_stateA [label=<
>]
particle_stateB [label=<
>]
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
}
}
}