Мини-проекты
Архив различных демок, маленьких программ, экспериментальных проектов и т.д. – то, что было написано just for fun за несколько дней.
WebGPU на D
WebGPU – это новый платформонезависимый низкоуровневый API для рендеринга и параллельных вычислений. Он создается для веба, но уже существует и в нативной реализации в лице проекта wgpu. В целях изучения API я решил написать биндинг wgpu для D и пример отрисовки модели.
WASM-WebGL
Мой эксперимент по созданию кроссплатформенного графического приложения на D, которое может быть скомпилировано в нативный код и WebAssembly, сохраняя при этом общую логику. Рендерит графику с использованием OpenGL 3.3 / WebGL 2.
https://github.com/gecko0307/wasm-webgl
Трассировщик лучей
Простой рейтрейсер в 400 строк, написанный за один вечер. Умеет рендерить плоскости и сферы, поддерживает текстуры, отражения (в том числе размытые), туман, мягкие тени, Ambient Occlusion и антиалиасинг. Рендерит не очень быстро, код не слишком оптимизирован (упор делался, в основном, на простоту и наглядность исходников). Основная оптимизация заключается в распараллеливании трассировки на несколько потоков, что дает заметный прирост производительности на многоядерных процессорах. Написан на D, для работы с изображениями и математических вычислений использует библиотеку dlib.
MiniGL
Программный растеризатор, который я написал ради развлечения за пару вечеров. Он умеет рисовать только треугольники, есть поддержка текстур с билинейной фильтрацией и альфа-смешиванием. Не старался его особо оптимизировать, однако он уже работает достаточно быстро при небольших разрешениях.
Весь исходный код умещается в одном файле (<1000 строк), не считая бибилиотеки dlib и биндинга к SDL для вывода изображения. Можете использовать его для самообразования или как основу для собственного программного рендера.
https://github.com/gecko0307/minigl
Пример работы с Vulkan
С Vulkan я не продвинулся дальше вращающегося кубика, но успел портировать простейшее приложение на D с использованием биндинга VulkanizeD. Для создания окна и чтения пользовательского ввода используется SDL.
Все исходники по моим экспериментам с Vulkan вы можете найти на GitHub:
https://github.com/gecko0307/vulkan-demos
DIOS
Минимальное ядро операционной системы для x86, написанное на D. Представляет собой программу уровнем чуть выше “Hello, World” – умеет печатать текст в VGA-режиме, включает поддержку Multiboot. Система оформлена как Live CD, в качестве загрузчика используется GRUB. Тестировал в эмуляторе VirtualBox – на реальном железе не тестировал, так что сразу предупреждаю: никаких гарантий, запускайте на свой страх и риск.
https://github.com/gecko0307/mathom/tree/master/dios
Разработка под PlayStation
Мой уголок по программированию под PlayStation с использованием PsyQ SDK: https://psxdev.xtreme3d.ru/. Я продолжаю изучать SDK и документацию, надеюсь в ближайшем будущем выложить еще кое-какие наработки – в частности, движок игры-лабиринтника.
Тред на psxdev.net