Hey guys! I'm trying to create a simple game about colors and I need to read some points on the screen and check the color these points are hovering. As you can see in the image below the background is b&w and the patterns will change and distort during the game (as crazy as possible). The player has two points and items only one point, this means I will have a maximum of 5 positions that I need to know the color at a time. The problem: It works exactly as I want using a RenderTexture from Camera or OnImageRender where I can use ReadPixels from the Texture2D to get the colors, but it costs too much processing for a mobile game. Failed solutions: 1 - I tried to select smaller sections of the RenderTexture so it wouldn't need to read all the pixels from RenderTexture, this helped but not enough. Even when using 1px by 1px Rects to select exact pixels. The problem is calling "ReadPixels" multiple times is too expensive, it is better to call it once. 2 - I tried to select the exact area needed (which is the player size) with only one "ReadPixels", still too expensive. 3 - I tried to use the "ReadPixels" method on a different thread using Job System or AsyncOperation. I get this exception: "UnityException: get_isReadable can only be called from the main thread". Read Pixels can only be called from the main thread. Colliders: This is currently the best solution I found and I will do this if there are no other solutions. Using colliders for one color will solve part of the problem. It takes more time to set up colliders depending on the patterns but this is not the main problem which is the organic patterns and distortions.