Here is what i found in Arm Mali GPU Training Series(https://www.youtube.com/watch?v=f4FoZGUZ738&list=PLKjl7IFAwc4QUTejaX2vpIwXstbgf8Ik7&index=9) According to this image and the video i post, it seems mali gpu bifrost architecture split vertex shading into two part, it calculate position first and then after that using position to do the frustum culling and bind to related tiles before it continue to finsih the rest of vertex shading calculation. My question is suppose i store some position related information and pass it from vertex to picxal, for example world position. Does it means that this index-driven vertex shading will have to do some calculation, in this case, say calculate object to world transform, more than once (both in position shading and varing shading)? I am not sure whether my understanding about this index-driven vertex shading is correct and i will be appreciate for anyone who can answer cause it means a lot for our project. Thanks.
The position needed for other uses (e.g. world position for lighting) is rarely the same position used for clip and cull (clip-space position, after perspective projection). These would normally be different computations, even in a non-split flow.
If there is truly duplicate computation, then it may get repeated, but it's pretty rare in practice.
thank you for your answer. But i just wonder why mali will chosse to do this. From what i know computing position related infomation and store it in vertex is not that rare in practice. If positioin computation is expensive, it may be a problem. For example, i know some games will have their skinning in vertex, like storing bone information in texture and read it several times to get full bones information and then apply skinning. And for some 3rd party fluid simulation, it is also common to use vertex animation by reading texture, in fact many 3A games using houdini this way in their work flow. So basicaly what i want to say is that nowa days complex computation in vertex shader to get their final object space position is not that rare, vertex animation is in fact quite popular among many mobile game companies. And i want to know that if there is any way to avoid such unnecessay overhead or we just have no other choice but try to avoid this kind of computation in vertex? Again, thank you for your help.