How the GPU revolutionized the 3D Visualization and Gaming Industry

in #science6 years ago (edited)

The not boring version; a concise guide for the ones not looking to fall asleep (I hope).

Let's experiment further and see who appreciates niche science put in a simple way. Since my kind of science keeps me in front of a computer all day long, to the point where even the closest people to me are saying that I am estranged, let me bring you something about my other work.

You must know by now that I am working in the Aviation Industry, and that sounds cool, I take it. But most of my work is not necessarily myself working in-between aircraft, but rather coding something new or standing with my eyes glued to the computer screen comparing milliseconds between programming methods.


Rendered car using a shader and textures. Source

So how are things displayed on a screen?


In the past, each game developer would create sprites and display them by telling the CPU (central processing unit) to draw them pixel by pixel. Because the sprites were relatively small, a few pixels by a few pixels each, representing a very small character walking in a two or three step succession of images, the time that the CPU was spending to draw this pixel by pixel was small. But this meant that all the sprites needed to be coded and their animation needed to be written on a per case job. Some character would even reuse the same animations with different colors, for faster production time.

We are talking about these times, the 1980's, the times of the first arcade games and the first consoles:

Acetronic-MPU-1000
Source

The problem was obvious. Having to draw each frame on its own was utter nonsense and it would keep the CPU from doing other tasks, more closely related to gameplay. The consoles started to be popular and the developers wanted to offer more. The competition between consoles was harder and the manufacturer who offered simpler developer tools was the one to win. Teams of developers usually consisted of very few unspecialized teenagers in their own garages.

So the first console makers started integrating specialized hardware, a Graphical Processing Unit or a GPU. At first it was very small and would only allow a limited acceleration of the sprites, but soon after the involvement of Nvidia, the first real GPU came out with the GeForce 256.

Example of a primitive animation using a GPU.
This helped free up the CPU to do other gameplay intensive tasks. By using a simple set of instructions which were pre-written, all the developers could free their time to concentrate on the quality of the game rather than manually animate everything.

The difference between CPU and GPU


The CPU is not made to support parallelization. Although the latest CPU's are now multicore and the technology advances with each new generation, so are the software needs that come with the new version software. These being said, the CPU can only offer us a limited number of threads like 8,16 or maybe even 28 in some next-gen models, while a GPU, which was designed to run things in parallel can boast up to

16*3584 threads = 57344 threadsSource

A little more than a CPU, right? :D
Faster and easier to write software for GPU's? Take my money!

How do you get to the GPU then?


We have this simple schema to keep you in the loop:


Block diagram of a GPU. If you can't follow it, you can relax, it took me a while to get it, just now.Source

Let me try a simpler way to explain it.


Let's say you software needs a visualization. You need to integrate a 3D graphical engine. This is a pre-written set of tools which accesses the GPU in a streamlined and efficient way. To choose a 3D engine, you can choose one of the many free,open-source or free for indie producers, especially if you don't plan on making a very successful game from the first try. Pricing options can be a little steep on some graphical engines but they are usually next-gen (state of the art technology).


A game engine's basic tools to create a simple "car" resource. Source

Then you need a 3D resource creating software like 3ds max or Maya or another solution, in which you need to create the 3D resources,distribute and set up the rendering techniques and assign the texture units on models.

Programming aditional effects or post processing


The effects are usually added via shaders, which can be pixel or vertex shaders. Shaders are small computer programs usually written in a specialized programming language, two of the most usual being Cg (C for Graphics) and (HLSL - High-Level Shader Language). They are very fast to be executed and do not even require compilation before running as everything is sent to the GPU straight away. Pixel shaders are a lot more intensive, especially at higher resolutions because every pixel needs to be colored after the image has already been rendered, while vertex shaders are much faster but they do require a lot of geometry being modeled by a 3D modeler, in order to apply all the transformation to each vertex.

Again you see the difference of tasks being split between the CPU and the GPU. Source

Conclusion


Developing a 3D visualization or a game is not that hard of a task as it was in the past. Creating amazing resources is much easier now, GPU's are more advanced and allow for less and less work for creating next-gen graphics.
Latest GPU's are now even more advanced with Intel, a non-contender in the past, joining the fight and taking away from the big players like AMD and Nvidia's markets.
Creators are now free to choose from a plethora of solutions of game engines, shaders, programming languages and forums to guide them, resulting in what we see as an explosion of next-gen games released by small studios and the fact that the gaming industry has overtaken the Hollywood Box Office.

If you are interested in more information about game engines, programming languages or creating resources for 3D Games or Visualizations, then tell me in the comments below and I can answer your questions. Do you want a more in-depth technical article involving the pipeline? Can do that too if there is interest.

Further reading:


https://en.wikipedia.org/wiki/Game_engine
https://en.wikipedia.org/wiki/Shader
https://ieeexplore.ieee.org/abstract/document/4490127
https://en.wikipedia.org/wiki/List_of_home_computers_by_video_hardware
https://dl.acm.org/citation.cfm?id=1406887 - oldie but goldie, this was what taught me most of what I needed to know to start the 3D project I am working on for 10 years.

Don't forget to drop by #SteemSTEM, the place where science is being done daily. Don't be a stranger to science and we will always listen to what you have to say! And if you want to contribute with original ideas, we'll even help you do it. Ask me and I will answer every single one of you how to improve your blogs here.


SteemSTEM is a community project with the goal to promote and support Science, Technology, Engineering and Mathematics on the Steem blockchain. If you wish to support the SteemSTEM project you can:

Contribute STEM content using the #steemstem tag | Support SteemSTEM authors | Join our curation trail | Visit our Discord community | Delegate SP to SteemSTEM

Convenient Delegation Links:

50 SP | 100SP | 500SP | 1,000SP | 5,000SP | 10,000SP | 50,000SP

I also didn't forget my friends @TheSteemEngine.
steemengineBannerAnimation(test).gif

Cheers to everyone following and reading! Engage more on Steem and your opinion will get voted and your account will get noticed. Everyone likes articulated people :D

Sort:  




This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @curie.

If you appreciate the work we are doing then consider voting both projects for witness by selecting stem.witness and curie!

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

I remember being around in the first days of the dedicated GPU... it was a completely weird thing to have a standalone card to render 3D games like Quake and things like that! These days it's a given for any serious gamer, these last Nvidia 10XX series are really some kick-arse little beasties! I'm hoping that I don't need to upgrade them for a little while!

Well the GPU is definitely the more popular thing, by means of the graphics card! Can't play the game? You need a better graphics card! That's how everyone gets to know about them. Besides memory, it's possibly the only thing that laypeople are interested in buying separately that is actually located inside the computer. .. And I didn't know Intel is becoming competitive in the area, interesting.

Can you use that to visualize viruses after someone has !sneeze -ed at you?

@alexdory You have received a 100% upvote from @intro.bot because this post did not use any bidbots and you have not used bidbots in the last 30 days!

Upvoting this comment will help keep this service running.

Congratulations! This post has been chosen as one of the daily Whistle Stops for The STEEM Engine!

You can see your post's place along the track here: The Daily Whistle Stops, Issue 287 (10/20/18)

Congratulations @alexdory! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 7000 upvotes. Your next target is to reach 8000 upvotes.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemFest3 and SteemitBoard - Meet the Steemians Contest

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @alexdory! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the total payout received
Award for the number of posts published

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard Ranking update - Resteem and Resteemed added

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @alexdory! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 8000 upvotes. Your next target is to reach 9000 upvotes.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Saint Nicholas challenge for good boys and girls

Support SteemitBoard's project! Vote for its witness and get one more award!

Ho Ho Ho! @alexdory, one of your Steem friend wished you a Merry Christmas and asked me to give you a new badge!

SteemitBoard wish you a Merry Christmas!
May you have good health, abundance and everlasting joy in your life.

To see who wanted you to receive this special gift, click here!

Click here to view your Board

Do not miss the last post from @steemitboard:

Christmas Challenge - The party continues
Christmas Challenge - Send a gift to to your friends