Мини-проекты

Здесь я постепенно буду выкладывать свой архив различных демок, маленьких программ, экспериментальных проектов и т.д. - в том числе и то, что было написано just for fun за несколько дней.

Трассировщик лучей

Простой рейтрейсер в 400 строк, написанный за один вечер. Умеет рендерить плоскости и сферы, поддерживает текстуры, отражения (в том числе размытые), туман, мягкие тени, Ambient Occlusion и антиалиасинг. Рендерит не очень быстро, код не слишком оптимизирован (упор делался, в основном, на простоту и наглядность исходников). Основная оптимизация заключается в распараллеливании трассировки на несколько потоков, что дает заметный прирост производительности на многоядерных процессорах. Написан на D, для работы с изображениями и математических вычислений использует библиотеку dlib.

Скачать

Растеризатор

Программный растеризатор, который я написал ради развлечения за пару вечеров. Он умеет рисовать только треугольники, есть поддержка текстур с билинейной фильтрацией и альфа-смешиванием. Не старался его особо оптимизировать, однако он уже работает достаточно быстро при небольших разрешениях.

Весь исходный код умещается в одном файле (<700 строк), не считая бибилиотеки dlib и биндинга к SDL для вывода изображения. Можете использовать его для самообразования или как основу для собственного программного рендера. В архиве есть сборка для Windows.

Скачать


Пример работы с 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/dios

Демо игры-лабиринтника для PlayStation

Да, я немного умею программировать под PlayStation. Я продолжаю изучать PsyQ SDK и документацию, надеюсь в ближайшем будущем выложить еще кое-какие наработки. Могу пообщаться на эту тему со всеми желающими и поделиться своим скромным опытом, но пока не готов серьезно помогать кому-то, поскольку сам еще учусь.

Тред на psxdev.net

Комментариев нет:

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