Difference between revisions of "3D Fundamentals Series"
From Chilipedia
(→List of Tutorials) |
|||
(29 intermediate revisions by the same user not shown) | |||
Line 22: | Line 22: | ||
|- style="background-color:#333;color:#c1c1c1;" | |- style="background-color:#333;color:#c1c1c1;" | ||
| style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 1}} | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 1}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|2 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 2|3D Fundamentals [3D Space/Indexed Vertices]]] | ||
+ | | style="border:1px solid grey;"|November 5, 2016 | ||
+ | | style="border:1px solid grey;"|28:22 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 2}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|3 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 3|3D Fundamentals [3D Rotations]]] | ||
+ | | style="border:1px solid grey;"|November 25, 2016 | ||
+ | | style="border:1px solid grey;"|26:36 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 3}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|4 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 4|3D Fundamentals [3D Perspective Projection]]] | ||
+ | | style="border:1px solid grey;"|December 26, 2016 | ||
+ | | style="border:1px solid grey;"|28:25 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 4}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|5 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 5|3D Fundamentals [Triangle Rasterization]]] | ||
+ | | style="border:1px solid grey;"|February 10, 2017 | ||
+ | | style="border:1px solid grey;"|31:29 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 5}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|6 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 6|3D Fundamentals [Backface Culling]]] | ||
+ | | style="border:1px solid grey;"|March 5, 2017 | ||
+ | | style="border:1px solid grey;"|35:18 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 6}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|7 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 7|3D Fundamentals [Texture Mapping]]] | ||
+ | | style="border:1px solid grey;"|June 10, 2017 | ||
+ | | style="border:1px solid grey;"|44:18 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 7}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|8 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 8|3D Fundamentals [3D Pipeline]]] | ||
+ | | style="border:1px solid grey;"|September 28, 2017 | ||
+ | | style="border:1px solid grey;"|18:38 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 8}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|9 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 9|3D Fundamentals [Pixel Shader]]] | ||
+ | | style="border:1px solid grey;"|September 30, 2017 | ||
+ | | style="border:1px solid grey;"|23:08 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 9}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|10 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 10|3D Fundamentals [Perspective Correction]]] | ||
+ | | style="border:1px solid grey;"|October 20, 2017 | ||
+ | | style="border:1px solid grey;"|17:10 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 10}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|11 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 11|3D Fundamentals [Z-Buffer]]] | ||
+ | | style="border:1px solid grey;"|November 5, 2017 | ||
+ | | style="border:1px solid grey;"|16:12 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 11}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|12 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 12|3D Fundamentals [Vertex Shader]]] | ||
+ | | style="border:1px solid grey;"|November 16, 2017 | ||
+ | | style="border:1px solid grey;"|13:08 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 12}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|13 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 13|3D Fundamentals [Geometry Shader]]] | ||
+ | | style="border:1px solid grey;"|December 25, 2017 | ||
+ | | style="border:1px solid grey;"|19:08 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 13}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|14 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 14|3D Fundamentals [Flat Shading (Loading Mesh)]]] | ||
+ | | style="border:1px solid grey;"|January 21, 2018 | ||
+ | | style="border:1px solid grey;"|32:56 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 14}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|15 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 15|3D Fundamentals [Gouraud Shading (smooth vertex)]]] | ||
+ | | style="border:1px solid grey;"|May 12, 2018 | ||
+ | | style="border:1px solid grey;"|28:42 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 15}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|16 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 16|3D Fundamentals [Point Lights]]] | ||
+ | | style="border:1px solid grey;"|September 1, 2018 | ||
+ | | style="border:1px solid grey;"|16:24 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 16}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|17 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 17|3D Fundamentals [Per-Pixel Lighting]]] | ||
+ | | style="border:1px solid grey;"|September 8, 2018 | ||
+ | | style="border:1px solid grey;"|18:14 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 17}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|18 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 18|3D Fundamentals [Specular Highlights]]] | ||
+ | | style="border:1px solid grey;"|September 27, 2018 | ||
+ | | style="border:1px solid grey;"|18:24 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 18}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|19 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 19|3D Fundamentals [4-element Vectors / Matrices]]] | ||
+ | | style="border:1px solid grey;"|October 12, 2018 | ||
+ | | style="border:1px solid grey;"|20:54 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 19}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|20 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 20|3D Fundamentals [Projection Matrix]]] | ||
+ | | style="border:1px solid grey;"|October 25, 2018 | ||
+ | | style="border:1px solid grey;"|36:42 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 20}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|21 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 21|3D Fundamentals [Clipping]]] | ||
+ | | style="border:1px solid grey;"|November 10, 2018 | ||
+ | | style="border:1px solid grey;"|21:45 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 21}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|22 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[3D Fundamentals Tutorial 22|3D Fundamentals [Camera View]]] | ||
+ | | style="border:1px solid grey;"|November 25, 2018 | ||
+ | | style="border:1px solid grey;"|24:45 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:3D Fundamentals Tutorial 22}} | ||
|} | |} |
Latest revision as of 21:37, 25 November 2018
The 3D Fundamentals series teaches the math, algorithms, and physics (optics) theories and methods that underpin all modern realtime 3D graphics. The way we accomplish this is by creating a complete software 3D engine from scratch. The goal of this series is to provide a foundation of knowledge that will make it much easier to learn a hardware API like Direct3D or OpenGL or a pre-made engine like Unity or Unreal Engine.
List of Tutorials
Tutorial Number | Title | Release Date | Runtime |
0 | 3D Fundamentals [Introduction] | September 30, 2016 | 7:43 |
This video serves as an introduction to the 3D fundamentals series, stating the goals and methods of the series as well as the prerequisites needed to follow along. | |||
1 | 3D Fundamentals [Framework Tour] | October 26, 2016 | 28:45 |
This video gives a quick tour of the framework we're going to be using to explore the concepts of realtime 3D graphics. The intended audience is mainly people coming to the 3D Fundamentals series without experience in my other tutorials. | |||
2 | 3D Fundamentals [3D Space/Indexed Vertices] | November 5, 2016 | 28:22 |
In this video we lay the groundwork needed to represent and transform positions and 3D space, we define the relationship between our 3D space and the screen coordinates, and we setup a data structure to hold our test cube geometry. | |||
3 | 3D Fundamentals [3D Rotations] | November 25, 2016 | 26:36 |
In this video we start from the canonical 2D rotation transformation matrix and extend it to 3D to derive rotation around the Z, Y, and X-axes. We also jerk off said axes, using the left-hand rule of course (right hand is busy with the mouse). | |||
4 | 3D Fundamentals [3D Perspective Projection] | December 26, 2016 | 28:25 |
In this video we find out why things look smaller the farther away they are. What does that have to do with projection? I'll tell you... all this science is making me so horny, mah dick is gonna project right out of these pants gurl. | |||
5 | 3D Fundamentals [Triangle Rasterization] | February 10, 2017 | 31:29 |
In this video we find out what's the deal with triangles, and how we deal with the pointy little fuckers and make them our bitch. | |||
6 | 3D Fundamentals [Backface Culling] | March 5, 2017 | 35:18 |
Get rid of those dirty back-facers, we don't serve their kind here. Also, learn the new sex move that is taking New England by storm: the Bridgeport Shocker. | |||
7 | 3D Fundamentals [Texture Mapping] | June 10, 2017 | 44:18 |
Textures. Put purdy pictures onto your triangles. Lot of interpolation and stuff. | |||
8 | 3D Fundamentals [3D Pipeline] | September 28, 2017 | 18:38 |
Here we set up the pipeline that is going to form the scaffolding for our model of the 3D graphics processing. In the coming videos, we are going to be replacing units of fixed functionality in this pipeline one by one with programmable shader stages. | |||
9 | 3D Fundamentals [Pixel Shader] | September 30, 2017 | 23:08 |
In this tutorial we incorporate our first shader stage into the 3D pipeline: the pixel shader stage. We also explore some basic example pixel shaders (more heavy-duty stuff to come later). | |||
10 | 3D Fundamentals [Perspective Correction] | October 20, 2017 | 17:10 |
In this tutorial we get the butt wiggling texture to respect our authoritae! In other words, we upgrade our affine texture mapping to perspective-correct texture mapping, putting the kibosh on the fucked-up texture distortion. | |||
11 | 3D Fundamentals [Z-Buffer] | November 5, 2017 | 16:12 |
Things that are behind get covered up by things that are in front. | |||
12 | 3D Fundamentals [Vertex Shader] | November 16, 2017 | 13:08 |
The vertex shader is the one of the two original shaders introduced in Direct3D 8, and it is the only shader besides the pixel shader that must be provided before triangles can be rendered. It's kind of a big deal. | |||
13 | 3D Fundamentals [Geometry Shader] | December 25, 2017 | 19:08 |
The geometry shader is a funky little shader stage added in Direct3D 10. It is weird and powerful and versatile, so we are including it in our basic software rasterization pipeline. It is the last type of shader stage that will be covered in this series. | |||
14 | 3D Fundamentals [Flat Shading (Loading Mesh)] | January 21, 2018 | 32:56 |
Shading, dynamic lighting, whatever you wanna call it. This is the real meat of realtime 3D graphics. This video outlines the basic theory of dynamic lighting and teaches the simplest application (flat shading), setting the stage for the next few videos on this topic. We also look at loading meshes from files, because I don't know about you, but I am tired as fuck of goddamn cubes. | |||
15 | 3D Fundamentals [Gouraud Shading (smooth vertex)] | May 12, 2018 | 28:42 |
Flat shading is cool and all, but chili likes it smooth. So we're gonna learn how to shade our shit so smooth, it be like a motherfuckin baby's bottom. Which is to say, very smooth indeed. And trust me, I know. I've touched a lot of baby bottoms in my day. Does that concern you? Well it motherfucking should. Anyways, we also generate some procedural geometry (sphere) and load a mesh from .obj with vertex normals. | |||
16 | 3D Fundamentals [Point Lights] | September 1, 2018 | 16:24 |
Directional lights are okay, but with a point light it's lit fam. | |||
17 | 3D Fundamentals [Per-Pixel Lighting] | September 8, 2018 | 18:14 |
Per-pixel lighting (also known as Phong or Blinn-Phong shading). | |||
18 | 3D Fundamentals [Specular Highlights] | September 27, 2018 | 18:24 |
Specular highlights are shiny and sexy. We love em. | |||
19 | 3D Fundamentals [4-element Vectors / Matrices] | October 12, 2018 | 20:54 |
Upgrade your vectors and matrices. More elements, more fun! | |||
20 | 3D Fundamentals [Projection Matrix] | October 25, 2018 | 36:42 |
Projection matrix! Because why solve a problem with a simple solution when you can use a complicated one! All joking aside, matrix encoding of projective (perspective) transform is widely used so you gotta get familiar with this shit. | |||
21 | 3D Fundamentals [Clipping] | November 10, 2018 | 21:45 |
Two ways of clipping triangles so that you don't spill your pixels. | |||
22 | 3D Fundamentals [Camera View] | November 25, 2018 | 24:45 |
We've made it to the end (probably?)! In this video, we learn how to incorporate a camera transformation into our pipeline, and how to use mouse and keyboard to implement simple camera movement throughout our scene. Check out the bonus video too! |