Pipet vs Compute Pipet

On another note:

  • Map operation can be done directly in Compute Shader before sampling. (Since it’s your most consuming operation).
  • Change warp size, [numthreads(1, 1, 1)](numthreads(1, 1, 1)) is only for little processing, change to [numthreads(64, 1, 1)](numthreads(64, 1, 1)) and update your dispatcher accordingly.
  • If you don’t sample Alpha, set your buffer as float3, which will reduce your bandwidth (not sure that will give you a decent gain but who knows).
  • Color nodes are slow as hell, just avoid them, better to work with value nodes.
  • If you just want to sample on LinearSpread/Cross, offset that in Compute shader too, and get rid of them in CPU side (including dynamic buffer).
  • Use Zip/Unzip instead of vector join/split, they are much faster, please note to devvvvs can we have vector join/split nodes using same code as zip/unzip? :)
  • Make your own ReadBack that doesn’t deal with layout and output color directly.
  • Don’t read timings on GPU->CPU nodes and take them for granted (that’s for dx9 and dx11). Technically don’t take any node timing for granted unless you know exactly what the node is doing (and what it involves under the hood).
  • Avoid using GPU->CPU nodes unless you know what it implies.

And on last one, you are not sending colors later back to your GPU right? ;)

1 Like