Metal shaders use two 16-bit GPU registers for one 32 float variable because A8 and later GPUs have 16-bit registers only. so if we use many variables in our metal fragment shaders then we get the issue of "exceeding registers limit and data spilling in slower GPU memory" and it causes very slow FPS. but why is this not with OpenGL shaders even though they are using many 32-bit float variables like metal shaders. any idea what trick does OpenGL ? while GPU is same in both cases Metal rendering and OpenGL rendering.
Exceeding number of available registers and data spilled to slower GPU memory
Add a Comment