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

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

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


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

понедельник, 15 февраля 2010 г.

Ограничение вывода. SetClipRect(x, y, x2, y2).

Движемся к полноценному фреймворку.
Добавлена функция переключения режимов альфа-смешивания.
Имея опыт разработки казуальных игр имею представление, что переключение режима обработки прозрачности для каждого спрайта - накладной и ненужный расход, поэтому переключение режима альфа-смешивания было вынесено в отдельную функцию:

Quad.SetBlendMode(jbmSrcAlpha);

При отрисовке, скажем, частиц, в кол-ве измеряемом тысячами, позволяет экономить ресурсы, хотя кода на строчку больше становится.
Добавился рендер в текстуру. Использование простое как 2 копейки:
После инициализации QuadRender делаем:
Quad.CreateRenderTexture(256, 256); // где 256 и 256 - размеры текстуры, соотвественно.
rendertarget := TQuadTexture.create(Quad); // создаем обычный класс TJoyTexture
rendertarget.CreateFromI(Joy3D.RenderTexture, 256, 256); // говорим ему использовать текстуру из под рендера.

Всё!

Далее нас ждет 2 блока
Quad.BeginRender;
Quad.EndRender;
В первом блоке идет рендер в текстуру (если надо), во втором основной.

Да, чуть не забыл. Первый блок обрамляется в:
Quad.RenderToTexture(True);
Quad.RenderToTexture(False);
чтобы дать понять фреймворку, что мы хотим рендерить в текстуру.

Пример работы (фиолетовый прямоугольник - рендер в текстуру):


Разумеется, с текстурой можно вытворять всё что угодно как и с любой другой во фреймворке. Вращать, блендить, масштабировать и т.п.