<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Engines_2021W_Lecture_7</id>
	<title>Game Engines 2021W Lecture 7 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Engines_2021W_Lecture_7"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_7&amp;action=history"/>
	<updated>2026-04-08T03:21:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_7&amp;diff=22903&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Resources==  * [http://beagle.applearchives.com/the_posters/poster_1.html Beagle Bros quick reference poster] (with Apple II memory map) * [https://en.wikipedia.org/wiki/IRI...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_7&amp;diff=22903&amp;oldid=prev"/>
		<updated>2021-02-02T17:11:07Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Resources==  * [http://beagle.applearchives.com/the_posters/poster_1.html Beagle Bros quick reference poster] (with Apple II memory map) * [https://en.wikipedia.org/wiki/IRI...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://beagle.applearchives.com/the_posters/poster_1.html Beagle Bros quick reference poster] (with Apple II memory map)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IRIS_GL SGI IRIS GL] (predecessor to OpenGL)&lt;br /&gt;
* [http://www.sgistuff.net/funstuff/hollywood/jpark.html Jurassic Park and SGI]&lt;br /&gt;
* Vulkan tutorial [https://vulkan-tutorial.com/Introduction introduction] and [https://vulkan-tutorial.com/Overview overview]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Thinking_Machines_Corporation Thinking machines], maker of the CM-1, CM-2, and CM-5&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Show &amp;amp; Tell&lt;br /&gt;
  https://shalinlathigra.itch.io/paul-cop-mall-blart&lt;br /&gt;
  https://github.com/ShalinLathigra/GlobalGameJam2021&lt;br /&gt;
&lt;br /&gt;
Timing issues&lt;br /&gt;
  https://github.com/godotengine/godot/issues/38981&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPUs and graphics&lt;br /&gt;
&lt;br /&gt;
Where did it all start?&lt;br /&gt;
&lt;br /&gt;
Early systems had memory-mapped graphics&lt;br /&gt;
 - range of RAM that was mapped directly to the screen&lt;br /&gt;
 - change bits in this memory, screen would update&lt;br /&gt;
 - maybe have 2 ranges you could flip between&lt;br /&gt;
   - update one while changing the other&lt;br /&gt;
     (double buffering)&lt;br /&gt;
&lt;br /&gt;
 - this meant that the CPU was involved in all graphics operations&lt;br /&gt;
    - all the math&lt;br /&gt;
&lt;br /&gt;
Apple II&amp;#039;s had this sort of architecture, but other 8-bit CPUs were more capable&lt;br /&gt;
&lt;br /&gt;
Atari 400/800&lt;br /&gt;
 - had display lists: commands to tell what would be on the screen&lt;br /&gt;
   - had hardware sprites (player/missle graphics)&lt;br /&gt;
&lt;br /&gt;
Other early systems were simpler&lt;br /&gt;
 - old Mac&amp;#039;s just had a &amp;quot;blitter&amp;quot; (fast memory copying)&lt;br /&gt;
&lt;br /&gt;
2D accelerated graphics cards&lt;br /&gt;
 - fixed functions: draw shapes, basic textures, text&lt;br /&gt;
 - often had its own separate memory&lt;br /&gt;
&lt;br /&gt;
3D graphics changed everything&lt;br /&gt;
 - need to create a model that the graphics card &amp;quot;renders&amp;quot;&lt;br /&gt;
    - 2D projection of 3D models&lt;br /&gt;
 - started with fixed function, but then evolved to be more general purpose&lt;br /&gt;
&lt;br /&gt;
This evolution in graphics has influenced graphics APIs&lt;br /&gt;
&lt;br /&gt;
OpenGL&lt;br /&gt;
 - open version of GL, which was developed by Silicon Graphics&lt;br /&gt;
 - hello world in OpenGL is relatively short, 5-10 lines to set up then&lt;br /&gt;
   you give your drawing commands&lt;br /&gt;
&lt;br /&gt;
Newer APIs are not this way, e.g. Vulkan&lt;br /&gt;
 - it takes A LOT of code to get anything working in Vulkan&lt;br /&gt;
&lt;br /&gt;
WHY?!&lt;br /&gt;
&lt;br /&gt;
With OpenGL, the driver manages the graphics card&lt;br /&gt;
 - you give commands on what to do, the driver figures out how to do it&lt;br /&gt;
&lt;br /&gt;
But with modern APIs like Vulkan, the application manages the card&lt;br /&gt;
 - well, manages a virtualization of it, so it can be shared between apps&lt;br /&gt;
&lt;br /&gt;
Big motivation is PARALLELISM&lt;br /&gt;
 - can&amp;#039;t make sequential tasks faster simply by running on parallel hardware&lt;br /&gt;
 - instead, have to refactor to get benefit&lt;br /&gt;
 - different organizations will be efficient depending on the task&lt;br /&gt;
 - so, have to put in developer&amp;#039;s hands&lt;br /&gt;
&lt;br /&gt;
With OpenGL, you have a sequential execution model&lt;br /&gt;
 - one thread/process talking to the GPU giving commands&lt;br /&gt;
&lt;br /&gt;
With Vulkan, parallel execution model&lt;br /&gt;
 - many threads talking to GPU at once, each giving their own commands&lt;br /&gt;
&lt;br /&gt;
But this means the app has to manage GPU cores and memory directly&lt;br /&gt;
 - driver just gives a basic abstraction for managing resources&lt;br /&gt;
&lt;br /&gt;
In other words, your app has to contain a GPU OS&lt;br /&gt;
&lt;br /&gt;
This is why you want to use a game engine to develop your games!&lt;br /&gt;
 - let it deal with the GPU for you&lt;br /&gt;
&lt;br /&gt;
Godot currently supports OpenGL in 3.x, but 4.x supports Vulkan&lt;br /&gt;
 - you can run it now, it just isn&amp;#039;t stable or optimized&lt;br /&gt;
&lt;br /&gt;
Weird thing is GPUs got so powerful that people wanted to start running arbitrary code on them&lt;br /&gt;
 - GPGPU&lt;br /&gt;
 - i.e., do AI/ML or crypto mining on GPUs&lt;br /&gt;
&lt;br /&gt;
GPUs offer general functionality&lt;br /&gt;
 - but also have lots of graphics-specific bits&lt;br /&gt;
&lt;br /&gt;
I think eventually GPUs will just become parallel computation systems, and&lt;br /&gt;
graphics part will be separated out&lt;br /&gt;
 - would allow for cleaner architectures&lt;br /&gt;
 - and more load sharing with CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>