Runtime Engine Architecture (section 1.6)?
Target Hardware, Device Drivers, OS, 3rd Party SDKs
The bottom four layers are dependent on the platforms your game will be running on. Unity supports multiple platforms – meaning that under the hood, they use the drivers/SDKs so you can deploy your game on any of the platforms.
Platform Independence Layer, Core Systems, Resources
There isn’t much documentation regarding these layers from Unity. I did read that Unity uses PhysX by NVIDIA for collision and physics. It uses OpenGL for graphics… Everything is nicely wrapped up in the Unity API.
In Unity, the rendering engine is broken out into:
Camera: Cameras are components that display what a player will see. It’s an imaging rectangle floating in your game scene.
Particle Systems: Particle Systems simulate motion using a lot of small 2D images, ie. clouds, fire, liquid.
Meshes: 3D Meshes are the main graphics primitive in Unity. Unity doesn’t have a built-in modeling tool, but it supports .FBX, .dae, .3DS, .dxf and .obj files. You can also import files directly from tools like Maya, 3D Studio Max, Blender, …
For more details:
Textures: Textures are images (or movie files) that sit over your mesh. Think of it as a vinyl wrapper over your car.
Shaders: Shaders are scripts that have the math behind calculating the where and the color of each pixel rendered to your camera. Unity provides built-in shaders and also lets you create custom shaders.
Here’s a great example of how you can use shaders to manipulate the color and vertices of your texture:
Lighting: In order to calculate the shading on a 3D object, Unity needs to know the intensity, direction, and color of the light that hits it.
I will be adding links to my posts detailing each topic here:
- Profiling and Debugging
- Collision and Physics
- IO Devices
- Game Play (AI, Scripting…)