Difference between revisions of "Hardware 3D (C++ DirectX Graphics) Tutorial 0"

From Chilipedia
Jump to: navigation, search
(Created page with "This video talks about the course syllabus for the Hardware 3D tutorial series (the shit we gonna learn) and the prerequisites for following this series (what you need to know...")
 
(Source Code)
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
This video talks about the course syllabus for the Hardware 3D tutorial series (the shit we gonna learn) and the prerequisites for following this series (what you need to know, and what you need to have). Use it to get an idea of what this series is about, and whether you have what it takes to follow along. If you don't know this shit, it's okay to just come along for the ride if you interested; you'll learn something at least. But if you decide you wanna dig deep and master the material, check out the links below for my C++ series and the 3D Fundamentals series.
+
This video talks about the course syllabus for the Hardware 3D tutorial series (the shit we gonna learn) and the prerequisites for following this series (what you need to know, and what you need to have). Use it to get an idea of what this series is about, and whether you have what it takes to follow along. If you don't know this shit, it's okay to just come along for the ride if you interested; you'll learn something at least. But if you decide you wanna dig deep and master the material, check out the links on this page for my C++ series and the 3D Fundamentals series.
  
 
== Topics Covered ==
 
== Topics Covered ==
* Basic exception <code>try</code>ing <code>throw</code>ing and <code>catch</code>ing
+
* Direct3D 11 vs. D3D12 / Vulkan
* Exceptions 'bubbling up'
+
* Course Syllabus (Topics Covered)
* Rethrowing with <code>throw</code>
+
* Prerequisites / Requirements
* <code>std::exception</code> and its derivatives
+
* Planet Chili Community
* Polymorphism in exception handling
+
* <code>catch(...)</code>
+
* Throw by value, catch by <code>const</code> reference
+
* Exceptions and destructors
+
* <code>noexcept</code> and move constuctors vs. standard containers
+
  
== Video Timestamp Index ==
+
== Basic Plan for Hardware 3D ==
* [https://youtu.be/DMdyz0lrFBI Tutorial 22 Part 1]
+
The Hardware 3D series will start of will WinAPI stuff. We'll learn how to create a window and process messages mainly relating to keyboard and mouse input. Then we will work on initialization of the pipeline components required to actually draw primitives. Once we have a basic pipeline down, we will begin a deep dive, learning HLSL together with important rendering techniques.
* [https://youtu.be/_6G5yDgoWiA Tutorial 22 Part 2]
+
  
== Extra Discussion ==
+
After getting familiar with HLSL, the binding of various resources to shader stages, and mastering important pixel shader and vertex shader techniques, we will broaden our horizons with tesselation/geometry shaders and try out had at fullscreen post-processing techniques as well. After this, we might explore more advanced techniques such as dynamic shadows and deferred lighting.
I had an interesting exchange with a viewer, and made a bit of a writeup here: [http://forum.planetchili.net/viewtopic.php?f=3&t=4305 essay time].
+
  
== Source Code ==
+
== Prerequisite Series ==
* [https://github.com/planetchili/Sprite Sprite Github Repository (for <code>Surface</code> code)]
+
This series builds on the previous series in the Planet Chili Programming Education Program. So videos here aren't going to waste much time covering things that have been covered previously. If you don't have background knowledge covered in those series, you can still watch this series out of interest or to audit it and see if you wanna put in the time necessary. But if you want to master the material in Hardware 3D, you'll likely have to do some catching up.
  
== Basic Plan for Intermediate ==
+
Here are the previous series, and a short summary of what topics are covered in each:
We're gonna start low level, and work our way up quickly to the good shit. This first arc of Intermediate is gonna be 100% console app land. First comes a little lecture on memory, variables, and the binary number system. Then we cover pointers, c-strings and console I/O, basic file I/O, and heap allocation. This is where we ascend to a higher plane of thought. We will migrate from c-strings and basic I/O to awesome <code>std::string</code> and std streams. While we're on the topic of containers, let's get a taste of <code>std::vector</code>. Then, we'll wrap up the console app section with a fun little word game, putting together everything learned so far in Intermediate.
+
  
After the console section, the plan is to learn how to load an image from a bitmap file, and then to cover basic sprite drawing operations, so we can abandon the nasty <code>PutPixel</code> calls once and for all. After this we'll cover more standard library containers, iterators, and algorithms. We're gonna learn OOP concepts like inheritance and polymorphism. We're gonna learn sweet C++11 stuff like lambda functions and move semantics. And we're gonna make more games.
+
* [[Beginner C++ Game Programming Series]] Basics of programming and C++, OOP Basics, Vector Math Basics, Basics of Raster Graphics
 +
* [[Intermediate C++ Game Programming Series]] Datatypes, Pointers, Memory Management and Allocation, RAII, Inheritance and Polymorphism, STD Library Containers and Algorithms, Template Programming (Generics), Functional and Lambdas
 +
* [[Advanced C++ Programming Series]] Intermediate Vector Math, Rotation, Vertex Transformation Pipelines, Matrices (Tutorials 1-5 are part of the mainline that leads to hardware 3D, and they focus on math. Tutorials 6+ are extra C++ topics not part of the mainline.)
 +
* [[3D Fundamentals Series]] 3D Space and Transformations, Perspective Transform, Triangle Rasterization, Texture Mapping, Depth Buffering, Shader Pipeline, Dynamic Lighting Techniques, Projection Matrix, Clipping, Camera View
  
 
== Video Timestamp Index ==
 
== Video Timestamp Index ==
[https://youtu.be/kOsnq5JJvaw Tutorial 0]
+
[https://youtu.be/_4FArgOX1I4 Tutorial 0]
  
== Homework ==
+
== Source Code ==
None!
+
* [https://github.com/planetchili/hw3d Hardware 3D GitHub Repo]
  
 
== See also ==
 
== See also ==
* [[Intermediate C++ Game Programming Tutorial 1|Next in series (Tutorial 1)]]
+
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Next in series (Tutorial 1)]]
* [[Intermediate C++ Game Programming Series]]
+
* [[Hardware 3D Series (C++ DirectX Graphics)]]
* [[Beginner C++ Game Programming Series]]
+
* [https://www.patreon.com/planetchili Planet Chili Patreon]

Latest revision as of 23:05, 16 December 2018

This video talks about the course syllabus for the Hardware 3D tutorial series (the shit we gonna learn) and the prerequisites for following this series (what you need to know, and what you need to have). Use it to get an idea of what this series is about, and whether you have what it takes to follow along. If you don't know this shit, it's okay to just come along for the ride if you interested; you'll learn something at least. But if you decide you wanna dig deep and master the material, check out the links on this page for my C++ series and the 3D Fundamentals series.

Topics Covered

  • Direct3D 11 vs. D3D12 / Vulkan
  • Course Syllabus (Topics Covered)
  • Prerequisites / Requirements
  • Planet Chili Community

Basic Plan for Hardware 3D

The Hardware 3D series will start of will WinAPI stuff. We'll learn how to create a window and process messages mainly relating to keyboard and mouse input. Then we will work on initialization of the pipeline components required to actually draw primitives. Once we have a basic pipeline down, we will begin a deep dive, learning HLSL together with important rendering techniques.

After getting familiar with HLSL, the binding of various resources to shader stages, and mastering important pixel shader and vertex shader techniques, we will broaden our horizons with tesselation/geometry shaders and try out had at fullscreen post-processing techniques as well. After this, we might explore more advanced techniques such as dynamic shadows and deferred lighting.

Prerequisite Series

This series builds on the previous series in the Planet Chili Programming Education Program. So videos here aren't going to waste much time covering things that have been covered previously. If you don't have background knowledge covered in those series, you can still watch this series out of interest or to audit it and see if you wanna put in the time necessary. But if you want to master the material in Hardware 3D, you'll likely have to do some catching up.

Here are the previous series, and a short summary of what topics are covered in each:

  • Beginner C++ Game Programming Series Basics of programming and C++, OOP Basics, Vector Math Basics, Basics of Raster Graphics
  • Intermediate C++ Game Programming Series Datatypes, Pointers, Memory Management and Allocation, RAII, Inheritance and Polymorphism, STD Library Containers and Algorithms, Template Programming (Generics), Functional and Lambdas
  • Advanced C++ Programming Series Intermediate Vector Math, Rotation, Vertex Transformation Pipelines, Matrices (Tutorials 1-5 are part of the mainline that leads to hardware 3D, and they focus on math. Tutorials 6+ are extra C++ topics not part of the mainline.)
  • 3D Fundamentals Series 3D Space and Transformations, Perspective Transform, Triangle Rasterization, Texture Mapping, Depth Buffering, Shader Pipeline, Dynamic Lighting Techniques, Projection Matrix, Clipping, Camera View

Video Timestamp Index

Tutorial 0

Source Code

See also