Nipadetski Engine H - Lezing's Ophitial Site

Lezing's Ophitial Site»Проекты»Nipadetski Engine H

Азъ есмь кодеръ красноглазой
Страница сия — преданье старины глубокой. Судя по всему, порождена в нещадных потугах слабооформленного сознания. Да простят дорогие читатели её унылую натуру.

Scientific content detected!
Понимание данной страницы может быть отягчено отсутствием наличия теоретической подготовки.
Разрешается вооружаться гуглами-педивикиями.

Продолжение моих разработок на Visual C++. Извиняюсь за отсутствие исходников — смотреть там особенно нечего... Nipadetski Engine H — это первый шаг на пути к созданию оригинального 3D-движка под рабочим названием Black Hole, во многом подобного движку Build, послужившему базой для Duke Nukem 3D. Программа грузит приложенную текстуру TILE007.BMP. Это может быть любое 24-битное изображение или же 8-битное с используемой палитрой; важно, чтобы его ширина и высота, как водится, являлись степенями числа 2. При первом запуске выполняется генерация таблиц поиска для преобразования цветов, что займёт 10-20 секунд. Впоследствии она будет грузиться из файла BLEND.BIN, а при инициализации останется только создать mip-карты с применением диффузии ошибки квантования. По нажатию клавиши F2 появляется диалог с опциями, где можно выбрать один из пяти режимов текстурирования.

Это может быть наиболее быстрый простой rotozoomer (поворот текстуры с масштабированием), rotozoomer с шумовым фильтром (тексели размываются случайным образом, имитируя интерполяцию), rotozoomer с «шумовой» размывкой движения, rotozoomer с таблицей поиска (lookup) и, наконец, перспективная проекция с тем же lookup-фильтром. Первые три режима созданы мной и используют цикл на ассемблере с использованием инструкций SSE2, в то время как два последних используют самомодифицирующийся код, подобный применяемому для текстурирования движком Build и содержащий только стандартные инструкции x86, что, однако, всё равно даёт хорошую производительность. Режим перспективной проекции позволяет задать дополнительные опции, а именно смещение выборки mip-карт и степень анизотропной фильтрации (до 16x), что довольно нестандартно для 256-цветного «софтового» режима. Качество анизотропного текстурирования вполне приемлемое, хотя, конечно, сильно не дотягивает до полноцветного аппаратно-ускоренного рендера. Выраженный муар появляется, если сильно удалиться от поверхности, удерживая пробел.

Управление движением осуществляется клавишами WASD, C и пробелом (приседание и подъём). Для работы программы вам понадобится процессор с поддержкой SSE2. У меня она в целом идёт без проблем, но режим с размывкой движения иногда «мерцает», ещё остались небольшие глюки с отображением «зашкаливающих» линий на графике производительности, что связано с недоработанной процедурой для их отображения. Если Вы интересуетесь компьютерной real-time графикой, предлагаю Вам загрузить Nipadetski Engine H по приведённой ссылке и оставить отзывы, к примеру, в гостевой книге.

Загрузка

Это немного обновлённая версия программы, поддерживающая многоядерные процессоры; также скорость движения теперь не привязана к частоте кадров, как это было в предыдущей версии.

niph2.rar (812 КБ)

Скриншоты