Fullscreen rectangle slows down app by 30 FPS (on average) [UPDATE]

Please note, this is on iOS 7, in the runtime, on an iPad 3 and iPod touch 5, and being built from Xcode 5. I have the following code:


-- Start comment here

-- Darkness

The first part of the code is where I draw a fullscreen mesh with 6 points (see my gradient creator from earlier). When I run it without the second part, the app runs 60 FPS no matter what. When I include the second part of the code, the app runs somewhere between 25 and 35 FPS on the start screen. I guess this is related to the strange results on this thread:
Maybe this means that Codea should use meshes for shapes with gradient fills and polygon shapes :smiley:
UPDATE: Tried using “noSmooth” and the app now runs at 50 FPS. That’s still 10 FPS, which are very valuable to old devices. @Simeon - Could you look into this a bit more? Thanks!

The rect function with smooth() enabled draws an antialiased rectangle. This needs to evaluate a relatively complicated shader for each pixel (fragment) inside the rectangle.

By making it very large, you increase the number of pixels for which the shader needs to be evaluated. This hits certain iPads (namely iPad 3 and iPad 1) where it hurts — their lacking fill rate performance.

That said, I’m surprised that noSmooth rect performance is still slower than mesh. That’s something I can look into.

@Simeon - Thanks.