Software/CPU-based 3D Rendering

3D_world

Newcomer
I'm of the opinion that the GPU is obsolete. The CPU is the future of the 3D game. Why - software will to increase astronomically in complexity. Complex physics equations, complex lighting equations. What's the point of such a vastly simplified equation-solving system, when the game is basically a 3D simulation? Precisely.

Current 3D rendering:

  • Slow - 1 ghz
    Simple - in-order, no significant caches
    Massively parallel - hundreds of pipelines

The future of 3D rendering:

  • Fast - 4 ghz
    Complex - out-of-order instruction dispatch, massive caches
    Not massively parallel - 12-24 cores

Just my opinion. The CPU is superior at handling complex code. The front-end has been designed by Intel for handling complex code - and improved over several decades.

Which brings me to my next opinion. 3D software is too simple. Hardly any physics or complex interactions. The person can not destroy large sections of the world for instance. Still basically linear. Why - the GPU is a simple processor by definition. It is massively parallel, with hundreds of pipelines. Therefore can perform only simplistic operations for 3D rendering.
 
You know your argument falls apart as soon as you realise that most physics are done on the cpu and your complaining about cpu physics

ps: you can play a lot of your dx 9.0 games on the cpu with swiftshader give it a go, I eagerly await your return when you tell us how awesome and fast cpu graphics are
 
You know your argument falls apart as soon as you realise that most physics are done on the cpu and your complaining about cpu physics

ps: you can play a lot of your dx 9.0 games on the cpu with swiftshader give it a go, I eagerly await your return when you tell us how awesome and fast cpu graphics are

I'm saying that all graphics should be done on the CPU. That's a pretty ingenious program.
 
Physics is completely separate from 3D rendering. There's no special advantage to doing both on the same hardware.

You're going to have to show what in any 3D rendering technique, conventional or otherwise, is better suited to modern high end CPU design than GPU design. All that matters is the following: is your workload highly parallel and highly data regular? Then GPUs are better suited for it. That doesn't make them vastly simplified equation-solving systems at all.
 
I'm of the opinion that the GPU is obsolete. The CPU is the future of the 3D game. Why - software will to increase astronomically in complexity. Complex physics equations, complex lighting equations. What's the point of such a vastly simplified equation-solving system, when the game is basically a 3D simulation? Precisely.
I am a game developer, and I cannot fully agree with you. Yes, things are getting gradually more complex, but currently what our designers and artists want the most is: "more, more, more" instead of more complex. They want more objects / view distance (= more culling, setupping and processing), more trees/grass/vegetation/leaves, more decals/textures/composition layers, more particles/emitters/effectors, more physics bodies/joints/collision points, more triangles/pixels/bones/animation keyframes, more triggers/events, etc, etc.

All our processing steps that contribute significantly to the CPU time are processing lots of separate entities. More parallel execution resources would allow us to process these steps faster, and to increase the entity counts. Most of our processing steps are very simple (vector math crunching on CPU). More clever processor would help (slightly better pipeline utilization), but what we really want is more bandwidth and more throughput (flops and iops). Better memory latency hiding is also very important for some algorithms... unfortunately everything cannot be linear stream/SoA processed :(.

The most efficient supercomputer CPU (by far) is currently the IBM PPC A2. It's an in-order chip that operates at 2.3 GHz clock speed. The CPU has 16 cores / 64 threads (4 way SMT to hide memory latency / in-order stalls). It has wide (256 bits) vector units. It has massive cache (32 MB EDRAM per chip) that can be used as transactional memory (very good for parallel execution). It tops all the supercomputing charts (both performance and performance by watt). I am not so sure that the 4 GHz (single threaded performance over all else) route is the right way to go. Huge majority of time consuming algorithms can be parallelized pretty well (or changed to equivalent algorithms that can be parallelized).
 
I'm of the opinion that the GPU is obsolete.
I find that opinion of yours...unwise.

A wide, massively parallel GPU absolutely crushes - CRUSHES - any reasonable number of traditional CPUs in performance. Trying to run any modern game using software CPU rendering is going to be pitifully slow, absolutely unplayable and just pathetic.

With transistors so cheap as they are now there's no reason NOT to have GPUs, and everybody in the industry agrees with that. That's why both Intel and AMD are building actual GPUs into their chips instead of relying on a software abstraction layer, because they know that even as weak as their integrated GPUs are, they're still far, far, far faster at generating 3D imagery than doing the same work on the main CPU cores.
 
I understand but I have a slight feeling of uneasyness when I hear 'designers and artists just want more'. This is not the way forward. It's understandable, but will stand in the way of the innovation we, imho, do desperately need, to really give designers and artists a truly meaningful 'more'.

I'm currently starting working again on an AI that I've started working on 5 years ago (and then my son happened ;) ), and I'm seeing very similar problems with current AI implementations (including chatbots etc.) to what is happening in the games industry.

I would love for the industry to be able to move forward to creating objects starting with physical properties, and then worrying about shape and animation after that, instead of what I'm getting the impression is far too much the other way around, and the more we get of that, the more that will stand out.

When something does it a little bit different, like LocoRoco, that makes such a huge difference - we're really not seeing enough of that. Basically LocoRoco was loads of soft-body physics in 2D, and I loved it.


And then on to a world that is itself far less static (can't find a proper video unfortunately, this looks like an emulator, which is actually slower ... may post one myself, as the game is super fluid on PSP)

 
I understand but I have a slight feeling of uneasyness when I hear 'designers and artists just want more'. This is not the way forward. It's understandable, but will stand in the way of the innovation we, imho, do desperately need, to really give designers and artists a truly meaningful 'more'.

[...]

When something does it a little bit different, like LocoRoco, that makes such a huge difference - we're really not seeing enough of that. Basically LocoRoco was loads of soft-body physics in 2D, and I loved it.
I disagree. "More, more, more!" allows you to innovate a lot, because that allows your engine to push vast amount of dynamic entities though the simulation, logic and rendering pipeline.

LocoRoco is a very good example of "more, more, more!". Soft body physics parallelizes very well (there are very good iterative GPU solvers for it). The game simulates thousands and thousands of soft body vertices each frame. A very simple simulation done for massive amount of entities (vertices in this case) allows a completely unique game play experience.

Same is true to all physics simulation really. If your engine can handle massive amount of parallel physics entities running simultaneously, you can have fully destructive environments. Particle physics requires even more parallel computation power (and allows even more creative game ideas). Simulating one super complex object in the other hand, isn't fun. Simulating huge amount of small things is!

Philosophy of "More, more, more!" isn't about slightly better looking graphics outlook or a more correct lighting formula. It isn't a better texture resolution. It allows you to have big forests and big cities in your game world, and lots of grass and rumble to hide from your enemies. It allows you have have hundreds of AI controlled entities filling the city streets, animals herds roaring in the countryside and massive amount of physics interaction (including fully destructible environment and interactive flowing water). I don't see "more, more, more!" as a thing limiting creativity. I see it as an opposite. You just have to slightly think out of the box, to see how to combine complex behavior from simple processing steps.
 
I find that opinion of yours...unwise.

A wide, massively parallel GPU absolutely crushes - CRUSHES - any reasonable number of traditional CPUs in performance. Trying to run any modern game using software CPU rendering is going to be pitifully slow, absolutely unplayable and just pathetic.
The main reason for that is a lack of gather support. But that's exactly the main feature of AVX2, which Intel will introduce in its Haswell CPUs in 2013. On top of that they're also adding FMA support, extending integer SIMD operations to 256-bit, they're offloading the vector executing ports with a new scalar port, they're adding a third AGU, and they're doubling the L/S and cache bandwidth. The mainstream Haswell desktop chip will be capable of more GFLOPS on the CPU side than on the iGPU. Let that sink in for a bit. Also keep in mind that AVX can be extended up to 1024-bit.
With transistors so cheap as they are now there's no reason NOT to have GPUs...
With transistors so cheap as they are now, and bandwidth becoming the limiting factor, why not have CPU cores with very wide SIMD units capable of exhausting that bandwidth for any workload, including graphics? It's only a matter of time for that to become a reality.

Note that even today's GPUs are far more programmable than what the average graphics workload requires. The only reason that has become acceptable is precisely because transistors have become much cheaper than bandwidth. So in the future GPU cores will become just as versatile as CPU cores. Not because they strictly have to, to run contemporary applications, but because they can. And obviously at that point they'll just start to unify the CPU and GPU. Eventually developers do come up with ways to use the capabilities of more programmable architectures. Note that designing GPUs with non-unified shader cores would be unthinkable nowadays. Likewise there will be a time when having a separate CPU and GPU will be a ridiculously outdated idea.
...and everybody in the industry agrees with that. That's why both Intel and AMD are building actual GPUs into their chips instead of relying on a software abstraction layer, because they know that even as weak as their integrated GPUs are, they're still far, far, far faster at generating 3D imagery than doing the same work on the main CPU cores.
The difference is really not that great.

And please don't call it a software abstraction layer. Implementing a graphics API on top of GPU hardware requires a lot of software layers. Likewise, implementing it on top of CPU hardware is just that, an implementation. You're not using the same software layers as the GPU implementation and then emulating a GPU. In fact for many graphics operations there can be a much shorter 'distance' between the application and the (CPU) hardware. Everybody in the industry agrees that shoehorning everything into using an API is a limitation that comes with overhead. Getting more direct access to the hardware, as is already common with a CPU, will open up a new era of possibilities.
 
The mainstream Haswell desktop chip will be capable of more GFLOPS on the CPU side than on the iGPU.

So why have the iGPU ?
question 2: will it have more gflops than a dedicated gpu of 2013 ?

ps: 3D_World Nick is Mr SmartShader
 
LocoRoco is a very good example of "more, more, more!". Soft body physics parallelizes very well (there are very good iterative GPU solvers for it). The game simulates thousands and thousands of soft body vertices each frame. A very simple simulation done for massive amount of entities (vertices in this case) allows a completely unique game play experience.

Well, maybe we don't *really* disagree, but don't you think that, say, a completely software based rendering pipeline (whether that uses GPU resources or no) would allow for more original designs that are vastly better at doing that one particular thing (or a few) than engines and GPU drivers that do everything all the time?

Of course I'm simplifying things, but perhaps you understand what I mean? A lot of games still look very much the same compared to what would be possible if game and art designers were a little less shackled. Or at least that's the impression I'm getting. It may also be that artists just don't get paid enough yet in this branche and/or are on average too young. ;)

In reality though I expect computers (and drivers) will gradually just evolve in that direction anyway.
 
Honestly I think you'd see more games that looked the same with CPU based rendering.

You'd reduce the pool of programmers capable of writing a good renderer even further (and it's not a deep pool now), most people would just defer to middle ware. Those that didn't would probably write once and use many times.

I think you have to ask what it is you want to do with your CPU renderer that you can't do on a GPU?
 
Honestly I think you'd see more games that looked the same with CPU based rendering.

You'd reduce the pool of programmers capable of writing a good renderer even further (and it's not a deep pool now), most people would just defer to middle ware. Those that didn't would probably write once and use many times.

I think you have to ask what it is you want to do with your CPU renderer that you can't do on a GPU?

I was more relating to that current pipelines don't give access to certain things at certain times, limiting what is possible, and that getting 'the most' out of your graphics always seems to consist of the same amount of the same things, because that's 'what GPUs do' or sometimes that's 'what drivers do'.

Of course the simple fact is no matter what you do, you still need a lot of power to do it, and it doesn't really matter whether you get that from CPU or GPU, but it does matter what you can do with them. Right now, I understand that in many cases for PC the latency and bandwidth between CPU and GPU and memory banks prevents games to combine the resources from both in meaningful ways to play to the strengths of each (never mind hardware fragmentation).
 
You'd reduce the pool of programmers capable of writing a good renderer even further
The next generation of renderers was invented by somebody consciously disregarding what was going on in the GPUs' department.
 
The main reason for that is a lack of gather support.
Oh, I think it's a lot more than that, mainly that GPUs aren't just very wide, but also that they pipeline everything extremely effectively. There's no way in hell you're going to be able to hide memory latency effectively enough on a CPU to get near performance of a GPU, gather support or not, and even if latency wasn't a problem - well, you're still only doing one stage of work at a time on a CPU, while a GPU works on many stages at once. Texture address generation, geometry setup, clipping, texture filtering, shading and so on... All parallel. Serial, on the CPU. With latency hits at multiple, if not every stage.

I don't see how you could possibly get remotely similar performance at the same quality level.

The mainstream Haswell desktop chip will be capable of more GFLOPS on the CPU side than on the iGPU.
Desktop iGPU is not the most powerful version of haswell iGPU, so I don't really see you having a point. Anyhow, the GPU is pipelined - the CPU must work in serial fashion. Realworld performance will not be similar.

And please don't call it a software abstraction layer.
I'm not into arguing semantics. :D
 
So why have the iGPU ?

lol

Because there's more to life than flops?

Because despite what certain individuals tell you, avx2 will not make CPUs adequately equipped to handle complex 3D rendering.
 
The next generation of renderers was invented by somebody consciously disregarding what was going on in the GPUs' department.

I don't even know what this means (and I hope it doesn't involve Tim Sweeney).
 
Because despite what certain individuals tell you, avx2 will not make CPUs adequately equipped to handle complex 3D rendering.

And that was the point I was making. If a gpu that is considered crap compared to discreet gpu's can best a haswell it doesnt say much for the cpu's ability to render graphics

The next generation of renderers was invented by somebody consciously disregarding what was going on in the GPUs' department.
What renderers, unreal engine 4? id-tech 5? cryengine 3 ?
 
Back
Top