четверг, 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);

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