Very Large Scale Integration CAD — Part II — Layout

This is the summary of the course VLSI CAD Part II: Layout from the University of Illinois at Urbana-Champaign. The author of the course is Rob A. Rutenbar. Here’s the summary of the 1st course in the series. Placement Technology mapping Routing Timing Analysis Technology Mapping — transfroming boolean functions/networks into logic gates. Standard Cell Library — a library which contains «standard cells» — logic gates and small logic elements (XOR, NOR, NAND, flip-flop, adder, etc.) Standard Cell can be Читать дальше …

CMake Cookbook

Что такое CMake? CMakeLists.txt Структура скрипта CMakeLists Переменные String or List? Функции Область видимости переменных Примеры скриптов CMakeLists.txt Запуск CMake (cmake-gui) Запуск CMake из командной строки Что такое CMake? Утилита для автоматизации сборки программных проектов. Утилита CMake предназначена для генерации файлов для различных систем сборки (GNU make, Visual Studio и других). Поэтому CMake можно назвать мета-системой сборки. Для системы сборки GNU make CMake будет генерировать makefile, а для Visual Studio — файлы решения и проекта (проектов) .sln и .vcxproj. CMakeLists.txt Читать дальше …

C++ Threads Cookbook

API для многопоточности появился в С++ начиная со стандарта C++11. Создание и запуск потока Запуск потока выполняется при его создании. #include <iostream> #include <thread> void foo() {     for (int i = 0; i < 10; i++)     {         std::cout << "foo" << std::endl;         std::this_thread::sleep_for(std::chrono::seconds(1));     } } void bar() {     using namespace std::chrono_literals;     for (int i = 0; i < 10; i++)     Читать дальше …

Unreal Engine Cookbook — Part 2

Публикую недописанную, но очень длинную заметку про Unreal Engine 4. Буду дописывать по ходу дела, ибо неизвестно, что будет дальше. Migrating assets from one Unreal project to another Абракадабра в Compilation Log в Unreal Editor Глюки Intelli Sense в Visual Studio Code Как создать класс в Unreal Engine Компоненты Forward declaration in C++ UPROPERTY Camera and SpringArm Pawn & Character Possession of a Pawn Input Коллизии Отладка в UE — DrawDebugHelpers Кто такой Controller? Line Tracing Timers Spawn Reflection & Читать дальше …

Unreal Engine CookBook — Part 1

В этой заметке я кратко конспектирую содержание курса Unreal Engine C++ Developer: Learn C++ and Make Video Games, который я прошел на Udemy. Подготовка к работе Создать проект C++ Импорт ассетов: in Content Browser > ПКМ > Import to… Выбрать среду разработки Edit > Editor Preferences > Source Code Настройка Visual Studio Code Установка расширения C/C++ for Visual Studio Code для поддержки IntelliSense. Установка расширения VSCode UE Intellisense Fixes Extension для исправления ошибок Intelli Sense в VSCode. При переносе проекта Читать дальше …

Vulkan Learning — 8. Multipass Rendering

Суть отрисовки в несколько проходов (multipass rendering) мы описали довольно подробно в заметке Vulkan Learning — 3. Swapchain. Depth Buffer. Render Pass. Framebuffers. Один проход (subpass) — суть запуск одного определенного пайплайна и получение на выходе некоего результата в виде фреймбуфера, который затем используется в следующем проходе (subpass’е), который запускает совсем другой пайплайн. Самый последний проход выдает нам буфер цвета, который мы отправляем в presentation engine. Ну а сейчас перейдем к техническим деталям. Начнем с рисунка, который показывает, какие части Читать дальше …

Vulkan Learning — 7. Дескрипторы. Запись команд в командный буфер

Итак, нам осталось рассмотреть привязку данных наших трехмерных объектов (mesh, uniform variables, textures etc.) к пайплайну. Делается это при помощи различных команд, которые записываются в командный буфер. Начнем рассмотрение записи команд в буфер с некоего базового скелета: // Record commands to the command buffers. // The commands bind resources (pipeline, uniforms, textures) and do drawing. // The usual practice is to prerecord a set of commands to the command buffer once // and then in the rendering loop submit them Читать дальше …

Vulkan Learning — 6. 3d модель. Буферы памяти и изображения

Итак, нам осталось отрисовать трехмерную модель. Прежде всего, посмотрим, что модель собой представляет (рис. 1). Модель состоит из трех кусков данных: Mesh. Модель по сути представляет собой множество треугольников. Каждый треугольник задается тремя вершинами (vertices), а каждая вершина характеризуется тремя координатами в в локальной системе координат нашей модели. Таким образом у нас должен быть массив вершин. Чтобы задать треугольник, нам надо указать три индекса (indices) в массиве вершин. Чтобы задать множество треугольников, нам нужно указать множество троек таких индексов. Таким Читать дальше …

Vulkan Learning — 5. Acquiring Swapchain Image. Submitting Command Buffer. Presenting Image. Synchronization. Swapchain Recreation

В этой заметке рассмотрим тот кусок кода, который непосредственно берет изображение из нашего свопчейна, заставляет видеопроцессор нарисовать в нем что-то и отправляет готовое изображение на экран монитора. Command Buffer Программы, которые мы пишем, используя графические API, состоят из вызовов функций. Вероятно, большинство из них (в OpenGL это команды, такие как glDrawElements, glBindBuffer, glUseProgram и другие) изменяют состояние GPU, заставляют GPU что-то нарисовать… Такие функции отправляют видеопроцессору команды что-то сделать. Во всех API эти команды буферизуются, т. е. накапливаются в некоем Читать дальше …

Vulkan Learning — 4. Pipeline. Descriptor Sets. Push Constants

Следующий большой объект в объектной модели Vulkan — это Pipeline. Представляет он собой некий конвейер, через который проходят данные (вершины, текстуры и прочее), чтобы на выходе получилось изображение (то, которое мы увидим на экране). Несколько стадий пайплайна (и очень важных стадий) являются программируемыми — для них пишутся программы, которые называются «шейдеры». Этих стадий сейчас четыре: Vertex shader Geometry shader Tesselation shader Fragment shader Но есть и не программируемые, однако конфигурируемые стадии, например следующие: Primitive assembly Clipping Rasterization Blending Depth test Читать дальше …