This is actually a similar case to Nanite in a sense that gpu can work in a more parallel way, when the data is provided in a texture. Niagara in Unreal holds a lot of data in textures. 1 sprite ->1 pixel on the atlas. An operation can be applied on all sprites at once (SIMD). A texture is just a 2d array. Or multiple 1d…
If you can find it there's a GDC talk from a few years ago about the crowd from planet coaster where they use similar techniques. Gnoop, in this context a texture is simply a structure for holding data that the GPU can access in a very efficient way, there's not really any difference between a 4channel 512pixel square…
We could say that if your input and target array data layout matches - if the data set is a texture and the input output uvs matches, you can go SIMD. If this requirement meets, executing the given operation once is equal to if you did it on each element. Basically a texture sample here is a "for each". You can't apply…