The blog of Imagination Technologies, maker of PowerVR GPUs and MIPS CPUs, covering graphics, Vulkan, ray tracing and processor news.
HN links it for explanations of PowerVR tile-based rendering, Vulkan benchmarks and ray tracing, and for MIPS processor news.
Good question about the precision; we only hear little snippets about hitting virtual windows in space within 100km or so. New Horizons is running a MIPS-1 R3000 processor[0], that has double-precision floating point available but presumably fixed-point arithmetic could be more suitable here. But I don't know that there would be so much accumulated error, there were a few course corrections between Earth and Pluto. Maybe the precision is not so much of an issue?
As for the fly-by, well. Speed is a problem. At the point of closest approach to Pluto it was going at 13.78 km/s, and it's about the mass of a grand piano[1] so that's about 45TJ of kinetic energy. Or some large number anyway. Let's just carry on with Newtonian stuff and assume the numbers get worse if you do it properly. At current speed its orbital radius[2] would be about ... 4600 metres. Three miles!
That's somewhere deep within the icy core, I'm guessing.
In order to orbit at the distance of the photos we're getting now, it would need to slow right down to 264m/s, shedding basically all of that kinetic energy. Back of the envelope numbers suggest that would require about the equivalent of a 90 megaton explosion! Of course, if we strapped the Tsar Bomba[3] onto New Horizons, there would be more mass, so we'd need more stopping power ... and so on.
Other reasons for doing a flyby, I suspect, is that we get to see more stuff this way. There are a few moons, and an uncharted Kuiper Belt. Seems a…
The GPU in question here, the PowerVR G6430, does not support OpenGL 4.5. It tops out at OpenGL 3.2 since it's a mobile part so everyone is using GLES.
The blog post only somewhat touches on it but I believe a key part of why this is so much faster is that it sounds like Vulkan is actually exposing tiled-based rendering. Note that PowerVR is a tile-based deferred renderer under the hood[1]. So if the app is doing the work of chunking draws into tiles instead of the driver trying to extract that from the OpenGL stream that's going to be significantly more efficient.
1: http://blog.imgtec.com/powervr/a-look-at-the-powervr-graphics-architecture-tile-based-rendering
The article linked in the first paragraph provides some good context: http://blog.imgtec.com/powervr/a-look-at-the-powervr-graphics-architecture-tile-based-rendering
Graphics developers need to know this stuff because certain operations can be very, very expensive on tile-based deferred renderers. Things like reading from the framebuffer, for example. On an immediate mode renderer, the GPU just has to queue up a DMA. On a tile-based deferred renderer, the previous commands have to be flushed first. And these differences are part of the motivation for new APIs like Metal and Vulkan.
Interesting benchmark results: http://blog.imgtec.com/wp-content/uploads/2015/09/64-bit-CPU-performance-AMD-Intel-ARM-MIPS.png
• Both MIPS and ARM have surpassed AMD in the low-power SoC area (the only where AMD is even remotely competitive right now), and are comparable to their desktop/server products
• A (2? 3?) years old Intel architecture still beats all three by a wide margin. And the recent Skylakes are again some 10% more efficient.
That's a good point, but I wonder if coming up from below with a cleaner architecture might be able to accomplish something similar. Is MIPS64 cleaner than X86, and could this let them create lower power higher performance chips or manufacture equivalent performance chips at a lower cost?
http://blog.imgtec.com/mips-processors/loongson-mips64-processors-performance-barrier
Fun fact: the new Horizons's (redundant) processors are 12MHz MIPS R3000s.
http://blog.imgtec.com/mips-processors/mips-goes-to-pluto
I am really curious what it uses for storage. I am guessing something much more modern, with extensive redundancy.