Just like the mp3 and h264 have been made into a circuit, what is stopping graphics card manufacturers from building a game engine (the program that most often runs on a graphics card)into the graphics card? From my perspective it will: Probably make cheaper hardware run demanding 3d software. Performance per Watt will increase Cut costs on game production. Game developers will not worry that much about developing a game engine or performance optimisations Even if we reach a performance plateu in the industry, manufacturers will still be able to sell their new products which uses the next game engine and game A and B ae built only for this new engine. Sure, developing a universal game engine and then tranfering it into a circuit must be hard, but: It could start with simpler game engines that other (software) engines can build upon. Considering the demand for low price, high performance, less watt graphics cards (especially on the mobile market) isn't the expence of developing such a chip justified?
-
\$\begingroup\$ Because the engine itself is 1) the easy part, and 2) more than just graphics. \$\endgroup\$– Ignacio Vazquez-AbramsCommented Oct 18, 2014 at 19:05
-
\$\begingroup\$ I totally agree with you :) But unfortunately, I have no answer too. \$\endgroup\$– user56452Commented Oct 18, 2014 at 19:10
-
\$\begingroup\$ 1)Depends on the engine 2)I don't see the problem with the game engine not being only about graphics. We can compute non-graphical things in circuitry too, right? \$\endgroup\$– Yordan GrigorovCommented Oct 18, 2014 at 19:33
-
\$\begingroup\$ There is a related development called PhysX, which is a hardware accelerated physics engine. \$\endgroup\$– Nick AlexeevCommented Oct 18, 2014 at 20:53
-
2\$\begingroup\$ Uh, a GPU is a hardware optimized rendering engine. I don't see the distinction you seem to be making between a "hardware optimized game engine" and a GPU. That's what a GPU is. \$\endgroup\$– Connor WolfCommented Oct 19, 2014 at 3:43
2 Answers
Modern GPU's have the ability to be programmed for general purpose computation via GPGPU languages/toolkits, like OpenCL, CUDA, OpenACC, etc.
Developers can utilize these tools to write any game engine they want with extra hardware support. For example, NVidia offers their PhysX toolkit for using the GPU for accelerating physics-like computations.
However, just effectively utilizing these pre-developed tools can be relatively tricky, and writing your own is at least an order of magnitude harder.
Requiring anything specialized for a particular game (or group of games) will mean:
- The GPU must have multiple small blocks for each special function, meaning die space increases dramatically. This increases costs, and may even make producing a chip in-feasible.
- A game will only run on a limited set of hardware because it is specialized. Should a user be expected to own 10 different GPU's to play 10 different games?
- Fixing bugs will be virtually impossible.
The GPU community has already gone through something similar in the past:
OpenGL 1/2 and old versions of DirectX use to include special function calls which would draw a polygon, manipulating a camera, and do really basic lighting/shadows. Some hardware even had special acceleration for these functions. Why did they get deprecated? Because they dramatically limited what you could do, and if you wanted to do anything outside of the limited set of features, you were either out of luck, or had horrible, bad performing code.
Thus they moved towards shader-based programming which meant that the developer was responsible for writing how a polygon gets shaded, and how shadows work, and even how to handle camera projections. You no longer had to worry about "does the GPU have a Phong shader, or an Oren-Nayar shader?". You could write your own to run (or copy/paste an existing one) on the GPU's general hardware and know that it works* across multiple platforms.
TL;DR: specialized hardware is too complex and expensive to do in general, hence why it is call "specialized".
addendum:
Professional video cards DO have specialized hardware in them for running professional programs such as CAD. However, if you look at the list of these programs, there's only a handful, and they all do about the same thing. So how much do these "professional" cards cost? An order of magnitude more. True, some of this cost is due to other things professional users care about like reliability, smaller sales volumes, and because GPU manufacturers know they can get away with a higher price, but I wouldn't expect too dissimilar pricing for specialized hardware for a few games.
-
\$\begingroup\$ Good post but I have to disagree with one thing. I think it is easier to write a graphics engine, nowdays, BECAUSE you can write your own shaders. Back in the day (pre dX 10) we had to write 2, 3 or even 4 different effect scripts for the same effect in case the GPU does not support this one specific feature. Specialized hardware was a bad thing, as you said. Today, there is one self defined shader for one effect and it runs on any card. DirectX10 and 11 with their fixed feature sets are a blessing. ;) \$\endgroup\$– AlzuranaCommented Oct 19, 2014 at 1:59
-
\$\begingroup\$ Perhaps I should word this as "initially is more difficult", or "appears more difficult" because now the developer needs to know how these features are implemented. However, thanks to Google and copy/paste, this is much less an issue than it seems like it is, and it makes the hard problem of writing your custom shader MUCH easier. \$\endgroup\$ Commented Oct 19, 2014 at 3:24
The things a graphic card needs to to are pretty much standardized, hence you can build graphics hardware that is useful to a wide range of games.
What a game engine should do is very dependent on the particular game, there no agreed upon set of features, much less a standard. Hence a game engine won't be useful for a wide range of games, so why bother to implement it in expensive silicon.
-
\$\begingroup\$ What about a bare-bones engine that has most of the things a demanding game needs, leaving "the rest" to the software part? Pathfinding in games usually evolves around the same algorithms where the difference is made mostly to exploit an optimisation that is specific to the game. It is a basic but hardware demanding part of a game \$\endgroup\$ Commented Oct 18, 2014 at 19:40
-
\$\begingroup\$ Actually, pathfinding is different depending on the type of game. As Wouter pointed out, every game has different demands. A strategy game with a grid based 2d map uses different path finding techniques than a space game, where objects can move freely, but also have inertia. Graphic cards provide wide variety of functions and every game developer picks the building blocks he needs for his particular engine. An engine which supports EVERYTHING would also be slower than engines which are build for one particular task or game. It's damn easy to build engines with the basic functions, already. \$\endgroup\$– AlzuranaCommented Oct 18, 2014 at 20:20