Архив различных демок, маленьких программ, экспериментальных проектов и т.д. – то, что было написано 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

Оставить комментарий

Ваш адрес email не будет опубликован.