Commonly used data structures in programming bring solutions to problems otherwise not possible without them. However, many data structures are designed with an object-oriented approach where it is not trivial to pass them to shader code. This course will combine the advantages of both data structures together with the powerful processing available in GPUs. We will design data structures that can be passed to shader code in order to achieve graphical effects that can, for example, involve collision detection and work together with Unity's Physics engine.
Two-Day Course: This is a single course that takes place over two five-hour days with limited breaks.
Those familiar with C# scripting in Unity, and basic understanding of vector math for 3D.
After completion of the course, students will be able to:
Understand the mathematics to manipulate 3D data in real-time
- Be capable of designing data structures that can be used in shaders
- Combine graphical effects to customize shader code
- Increase the efficiency of shader code to control computational resources.
Students will need a computer that supports 3D graphics in at least Unity 2020 LTS. There will be one assignment after 3 pm for the first day which students will bring to the start of schedule for the second day. Prospective students must also:
- Be able to type at least 30 wpm
- Be confident in scripting in Unity 2020 LTS using C# (will not be covering the topic of Unity Jobs)
- Understand the programming concept of recursion
- Be comfortable working with 3D coordinate spaces
- Have a discrete graphics card (not integrated)
Dr Russell Campbell is a computer science instructor having taught at universities in the Vancouver, British Columbia area over the past four years. In the Fall 2020 Semester, Dr Campbell designed and taught a 4th-year game programming course at Vancouver Island University and managed eight teams of students creating their own games using various game engines. This Fall 2021, Dr Campbell is supervising a 4th-year student's capstone project to develop an RPG action game in Unity.