3 ms·
Do I know what I'm talking about? Yes, and no. Yes, I know about GPUs and graphics programming, and no, I don't know the specifics of the Star Citizen game engi
by zero_iq 9y ago
Do I know what I'm talking about? Yes, and no. Yes, I know about GPUs and graphics programming, and no, I don't know the specifics of the Star Citizen game engine, other than being an interested follower of their YouTube channel, and reading some articles.
I'm talking about GPU support here for accelerated graphics and physics, not CPU. Obviously, CPUs have had native double support for a long time.
Doubles have been hardware accelerated for some time for both graphics and physics, BUT: until recently you paid a heavy price for doing double calculations on the GPU (20x slower or more typically), especially on lower-end hardware and obviously increased memory requirements. Most game engines have until relatively recently used 32-bit floats for pretty much everything, although often selectively using 64-bits or multiple scaled reference frames for positioning over larger scales.
From what I understand, Star Citizen converted their game engine to use 64-bit floating point for worldspace positioning in both their graphics and physics pipelines, so they can have a single coordinate system for positioning at the scale of an entire solar system, without having to worry about precision issues. My understanding is that Star Citizen uses the GPU heavily for graphics, physics, procedural generation, and simulation using graphics shaders (vertex/fragment, etc) and compute shaders.
You're right of course that graphics and physics can be implemented independently, but they have to share coordinates and data at some level, and if you have to convert between multiple precisions, coordinates systems, and frames of reference, you are potentially making things more difficult and negatively affecting performance.
From the Star Citizen interviews I've seen, my understanding is that the conversion to 64-bit worldspace simplified their development (all their components can share worldspace data) at only a small cost to performance on modern hardware, and they obviously felt it was worth the trade-off. However, technical detail in many of the videos I've watched has been rather lacking, and some articles have clearly misinterpreted what they've done. I doubt their entire engine has been converted to use 64-bit for everything, which is probably wasteful, and would severely limit the hardware capable of running it.