понедельник, 17 мая 2010 г.

Руки опять добрались до подсистемы вывода текста - результат работы на скриншоте. В принципе совсем не удивительно. Другого я и не ожидал.



Чтобы не было претензий мол "обводка темная" - так надо :) Зачем - неважно. Вот скриншот работы смого Фонтрендера:



А это аналогичный шрифт (только на градацию жирнее) и специально сделаный желтого цвета, чтобы показать, что всё замечательно. Скриншот с движка.

четверг, 18 марта 2010 г.

Сегодня был реализован FontRender. Утилита генерирует 32битные текстуры с шрифтом, а также файл с UV координатами для символов. В утилите выбор символов, необходимых для генерации, задается текстовым полем. Также доступен выбор толщины (от ультратонкого до ультратолстого) и размера шрифта.
Имеется встроенный просмотровщик результата (выбор цвета фона, цвета шрифта) для оценки читабельности текста, полученного рендером.
Рендер производится с 5х Антиалиасингом.

Результат работы утилиты:


Естественно, функционал будет наращиваться. Появятся такие вещи, как индивидуальная настройка кернинга, умное размещение букв на текстуре (не по алфавиту) для экономии места, возможность сгенерировать шрифт с обводкой (контуром) или тенью, настройки (подчеркнутый, зачеркнутый, курсив). Однако, пока эти вещи оставлены на потом, пока не будут реализованы более критичные к скорости выполнения задачи.

четверг, 11 марта 2010 г.

Давно не писал, ибо обновлений в явном виде пока нет.

Планируется довольно обширный тулкит для фреймворка. А именно:
FontRender - эта утилита будет не просто делать текстуру для программы. Она также будет генерировать альфаканал для букв. Так как замечено, что некоторые шрифты не имеют оного. Также литеры в текстуре будут максимально плотно прилегать друг к другу, что минимизирует по размеру текстуру. Для каждой буквы будут сгенерированы параметры ширины, высоты, поэтому будет поддержка любых шрифтов. Как моноширинных, так и нет. Дополнительной функцией будет возможность набрать с клавиатуры в поле ввода все желаемые литеры, дабы исключить все лишние (например если нужны только цифры).
Для фреймворка, разумеется, будет полноценный класс для загрузки и отрисовки текстов в любых мыслимых и немыслимых результатах. Возможность использовать курсив и подчеркивание.
Осуществляться подобные вещи будут с помощью специальных функций вроде DrawItalic или же с помощью тегов, например цветовых.

QuadParticles - отдельная утилита для разработки системы частиц. Создание поведения эмиттеров и испускаемых ими частиц. Разумеется утилита будет снабжена модулем, обрабатывающем её результаты -QuadParticles. Незнаю насколько много можно тут сказать :) Данная система готова более чем, по прежнему остаются недоработки и пожелания. Скриншоты работы данной системы на данный момент:


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

четверг, 4 марта 2010 г.

Текстурный блок научился загружать текстуры в BMP, JPG, TGA форматах.
К слову сказать - как BMP, так и TGA поддерживаются с альфа каналом. Поддерживается RLE сжатие и 32битные TGA.

вторник, 2 марта 2010 г.

QuadTexture:
Текстурный модуль теперь загружает текстуры любого разрешения, создавая в памяти текстуру корректного для видеокарты размера.
В один экземпляр QuadTexture можно загрузить до 8 текстур:
my_texture:= TQuadTexture.create(Joy3D);
my_texture.LoadFromFile(0, 'diffuse.bmp', 80, 80);
my_texture.LoadFromFile(1, 'normal.bmp', 80, 80);
my_texture.LoadFromFile(2, 'specular.bmp', 80, 80);
Загрузит в текстуру my_texture 3 текстуры. Диффузную, нормалмэп и спекуляр. При отрисовке будут вызываться, соответственно, все три текстуры, в соответствующие регистры (0, 1, 2). При использовании шейдеров автоматом идут в регистры шейдеров, в остальных случая по заданным критериям смешения мультитестурирования.

Joy3D:
Окно автоматически создается размером с указанное поле вывода (нет необходимости в конструкторе или "на лету" программы устанавливать ширину и высоту окна).
Добавлена функция для расчета TBN для полигона (касательного пространства). Необходимо для корректной работы normalmapping шейдера.

понедельник, 1 марта 2010 г.

Рождён блок QuadShader. Работа с оным выглядит как:

Инициализация:
QuadShader := TQuadShader.create(Quad);
QuadShader .LoadComplexShader('vs.bin', 'ps.bin');

В цикле программы:
QuadShader .SetShaderState(Enabled : boolean);

В шейдерный блок добавлена проверка версии поддерживаемых шейдеров.

суббота, 27 февраля 2010 г.

Реализована поддержка текстур некратных степени двойки на этапе отрисовки, текстурирование по свободным UV. На очереди загрузка из текстур некратных степени двойки, текстурные развертки и мультитекстурирование.

В процессе реализации шейдерный блок QuadShader. Пример работы тестового блока QuadShader - попиксельное освещение с нормалпеппингом, спекуряр меппингом и диффузной картой:


Использованы эти карты для теста: