I am curious of how the performance of color picking compares to ray casting. I am looking at the scenario when the mouse is clicked which means only then the scene is rendered in a backbuffer for color picking or ray-cating has to be applied.

Note: I have found this question which unfortunatly does not give any indication.

  • \$\begingroup\$ What would make a satisfactory answer to your question? Also, have you tried either option and found its performance to be unsatisfactory? \$\endgroup\$ Jul 24, 2015 at 21:20
  • \$\begingroup\$ I have not found unsatisfactory performance for color picking and have never ever implemented ray casting. But I very often find that people use ray casting so I wondered whether this is because of performance (hence this question). A satisfactory answer could be "Reading a framebuffer is so slow that ray-casting calculations is like ~10 times faster" or "generally the performance is similar". I know there is a lot depending on details. Maybe it depends on the case, maybe ray casting is always faster becaue framebuffer reading is a true bottleneck. \$\endgroup\$ Jul 24, 2015 at 21:27
  • \$\begingroup\$ Maybe! Do you have more details about your particular scenario? \$\endgroup\$ Jul 24, 2015 at 21:53
  • \$\begingroup\$ A possible answer is also: "It highly depends on the scenario, no general statement can be made". This is also satisfactory (if that is the truth). In this case I am really looking for a most general statement. Though I would also be interested in how to answer depends on the case, e.g. what typical things would make one technique faster (and why). To give a scenario specif answer: what would you need to know exactly except from that it is a 3D scene with 3D objects and I want to do picking only on mouse click (not continuously). Would it depend on the number of objects? \$\endgroup\$ Jul 24, 2015 at 22:02
  • 1
    \$\begingroup\$ Ray casting maintains the same fixed cost with varying screen resolution and field of view settings. Ray casting can query your spatial partitioning scheme with a much simpler intersection geometry (A ray, instead of a trapezoid.) to find meshes which need to processed. I say "more appropriate" because it's able to take better advantage of the known information (Where the user has clicked.) to process less candidate intersections. \$\endgroup\$
    – MickLH
    Jul 25, 2015 at 23:57

1 Answer 1


It depends on multiple factors including...

  1. How much geometry you are raycasting against (more = slower)
  2. The resolution you are rendering your color picking at (higher = slower)
  3. How you've implemented either solution (CPU raycasting? vs GPU color picking? or something else?).
  4. Resource constraints -> if your application is already CPU bound, and has plenty of GPU power to spare, doing a super efficient CPU ray cast is still going to be slower than doing an inefficient operation on the GPU.

There is a way to get an answer for your particular situation though - profile it and find out!

It's also important to note, either solution is a reasonable solution in many cases, so going one way or the other is likely not going to be a huge deal. If you aren't having performance problems, don't spend too much thought trying to choose between reasonable answers IMO!


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .