As with GPU's, you might want to take a totally different approach programming the next generation of games. Like, taking a data-centric view, and just making a lot of individual "transformations" for all that data, so it can be streamed.
Like, first walking through the data to find objects that have scripts or other actions attached, and throwing them in a stream (to the next process) that sorts them according to the actions that have to be taken, asmoveing them around and fireing off new actions and objects, like bullets. And having the output of those streams sorted (by another process) for transformations, changes in the meshes or sub-objects, and having all of them come together to be pre-processed, like calculating textures and skinning.
And the same would go for the individual stages, like moving the objects (collision detection and physics), modifying the meshes (fluids, volumes and physics again) and building and assembling objects by calculating and matching parts of them.
Like a tree, consisting of steams, which are all handled by separate threads and swapped on demand. Or like a database, that is sorted repeatedly and throws out objects to the steam that execute the change that is next in line for that object.
Does that sound like we all discussed it might have to be done?
Like, first walking through the data to find objects that have scripts or other actions attached, and throwing them in a stream (to the next process) that sorts them according to the actions that have to be taken, asmoveing them around and fireing off new actions and objects, like bullets. And having the output of those streams sorted (by another process) for transformations, changes in the meshes or sub-objects, and having all of them come together to be pre-processed, like calculating textures and skinning.
And the same would go for the individual stages, like moving the objects (collision detection and physics), modifying the meshes (fluids, volumes and physics again) and building and assembling objects by calculating and matching parts of them.
Like a tree, consisting of steams, which are all handled by separate threads and swapped on demand. Or like a database, that is sorted repeatedly and throws out objects to the steam that execute the change that is next in line for that object.
Does that sound like we all discussed it might have to be done?