Этот курс является полным погружением в основы компьютерной графики! Вы узнаете, как работает программный 3D-движок «под капотом», и научитесь использовать язык программирования C для написания полноценного программного растеризатора с нуля, включая текстуры, камеру, обрезку и загрузку сложных OBJ-файлов. Пиксель за пикселем, треугольник за треугольником, меш за мешем.
Мы рассмотрим всю прекрасную математику, которая делает возможной трехмерную компьютерную графику, изучая все концепции с азов. Также мы напишем полноценный программный рендерер, способный отображать сложные 3D-объекты на экране без использования каких-либо графических API. Без GPU, без OpenGL, без DirectX! Всё, что нам нужно, это компилятор C и немного линейной алгебры, чтобы создать финальный проект, который будет поистине впечатляющим!
Инструменты, которые вам понадобятся:
Мы будем использовать только командную строку, редактор кода и компилятор C. Все эти инструменты мультиплатформенные, так что вы сможете программировать на Windows, macOS или Linux!
Также убедитесь, что у вас под рукой есть ручка и бумага для лекций. Этот курс, вероятно, будет немного отличаться от других программных курсов, которые вы проходили ранее. Мы будем не спеша, уделяя время, чтобы убедиться, что мы понимаем каждую формулу, которую встретим на нашем пути!
Этот курс для вас?
Это самодостаточный курс без предварительных требований. Однако вы, вероятно, получите от него максимум пользы, если уже знаете основы программирования (условные операторы if-else, циклы, функции).
Если вы никогда ранее не программировали на C, не волнуйтесь! Многие успешные студенты приходят из других языков, таких как Java, Python, JavaScript, Swift и другие. Мы вместе научимся работать с языком C.
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
24.04 Implementing a Z-Buffer for Filled Triangles
Урок 124.
00:18:01
24.05 A Discussion on Dynamic Memory Allocation
Урок 125.
00:15:30
25.01 Camera Space
Урок 126.
00:10:34
25.02 Look At Camera Model
Урок 127.
00:17:40
25.03 Look At Transformations
Урок 128.
00:11:47
25.04 The LookAt Function
Урок 129.
00:24:16
25.05 Coding the LookAt Function
Урок 130.
00:11:45
25.07 Variable Delta-time
Урок 131.
00:06:07
25.08 A Simple FPS Camera Movement
Урок 132.
00:35:56
25.09 Coding a Simple FPS Camera Movement
Урок 133.
00:09:03
26.01 Frustum Clipping
Урок 134.
00:07:17
26.02 Planes
Урок 135.
00:03:25
26.03 Exercise. Right Frustum Plane Point & Normal
Урок 136.
00:19:12
26.04 Defining Frustum Planes Points & Normals
Урок 137.
00:12:00
26.05 Initializing an Array of Frustum Planes
Урок 138.
00:06:26
26.06 Defining Points Inside and Outside Planes
Урок 139.
00:18:22
26.07 Intersection Between Line & Plane
Урок 140.
00:14:28
26.08 Clipping a Polygon Against a Plane
Урок 141.
00:23:51
26.09 Polygon Typedef
Урок 142.
00:24:27
26.10 A Function to Clip Polygon Against Planes
Урок 143.
00:38:37
26.11 Coding the Function to Clip Polygons Against Planes
Урок 144.
00:06:57
26.12 Converting Polygons Back Into Triangles
Урок 145.
00:24:08
26.13 Visualizing Clipped Triangles
Урок 146.
00:21:03
26.14 Horizontal & Vertical FOV Angles
Урок 147.
00:37:16
26.15 Clipping Texture UV Coordinates
Урок 148.
00:18:35
26.16 Clipping Space
Урок 149.
00:08:52
27.01 Working with Static Variables
Урок 150.
00:30:28
27.02 Refactoring SDL Globals
Урок 151.
00:12:30
27.03 Simulating Low-Resolution Displays
Урок 152.
00:07:16
27.04 Refactoring Light Globals
Урок 153.
00:04:40
27.05 Exercise. Camera Pitch Rotation
Урок 154.
00:14:41
27.06 Implementing the Camera Pitch Rotation
Урок 155.
00:17:30
28.01 Declaring Multiple Meshes
Урок 156.
00:28:55
28.02 Implementing Multiple Meshes
Урок 157.
00:16:18
28.03 Implementing Multiple Textures
Урок 158.
00:20:06
28.04 Finishing our Implementation
Урок 159.
00:23:12
28.05 Handedness & Orientation
Урок 160.
00:10:06
29.01 Dedicated Graphics Cards
Урок 161.
00:14:17
29.02 Modern Graphics APIs & Shaders
Урок 162.
00:19:22
29.03 A Parallel Rasterization Algorithm
Урок 163.
00:16:21
29.04 Determining Point Inside Triangle
Урок 164.
00:17:38
29.05 Top-Left Rasterization Rule
Урок 165.
00:14:04
29.06 Edge Function & Barycentric Weights
Урок 166.
00:19:23
29.07 Edge Function & Constant Increments
Урок 167.
00:23:15
29.08 Subpixel Rasterization
Урок 168.
00:10:26
30.03 Next Steps
Автор - Gustavo Pezzi
Gustavo Pezzi
Gustavo Pezzi - преподаватель университета в Лондоне, Великобритания. Он получил несколько образовательных наград в качестве учителя и также является основателем pikuma.com. Густаво преподает основы информатики и математики; его академический путь включает такие учебные заведения, как Государственный университет Питтсбурга, Городской университет Лондона и Оксфордский университет.
Великолепный курс, всем советую, даже если не собираетесь использовать 3d графику
mc_cheese
I'm going to give this guy some cash, great teacher
trivium.simo
Great course tbh, wanna see more Gustavo courses please
my_coursehunter
Raycasting Engine Programming please
elektroman
best teacher for me so far!
windwail128
Крутой курс, год назад проходил. На основе него делал приложение на iOS. Очень понятственно всё объясняет чел. Респект!
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
В этом курсе вы получите введение в компьютерную графику с использованием Metal на графическом процессоре (GPU). Вы будете рендерить трехмерные модели и даже напишете простую игру, используя ваш собственный игровой движок.
Изучите методы Blender, которые я использую ежедневно, чтобы создавать контент для 200K + аудитории и обслуживать мировые бренды. Развивайте свои навыки работы с Blender и раскройте свой творческий потенциал.
Создание 3D-графики в JavaScript с использованием WebGL
Create 3D Graphics in JavaScript Using WebGL
В этом курсе мы начнем создавать контент с WebGL без каких-либо фреймворков. Вы напишете исходный код JavaScript и шейдеры в GLSL. Этот курс включает в себя настройку WebGL в HTML-приложении и изучение основ 3D, шейдеров, режимов рисования, анимации, взаимодействия и трансформаций.
Этот курс научит вас создавать полноценный движок лучевого трассирования с нуля. Мы будем использовать алгоритм, похожий на тот, который использовался в Wolfenstein 3D. Итоговый проект будет написан на JavaScript и C. В нем будут реализованы движение игрока, вид карты в 2D, проекция стен в 3D, текстурированные стены, спрайты и другие техники оптимизации.