Текстурный блок научился загружать текстуры в BMP, JPG, TGA форматах.
К слову сказать - как BMP, так и TGA поддерживаются с альфа каналом. Поддерживается RLE сжатие и 32битные TGA.
четверг, 4 марта 2010 г.
вторник, 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 шейдера.
Текстурный модуль теперь загружает текстуры любого разрешения, создавая в памяти текстуру корректного для видеокарты размера.
В один экземпляр 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 г.
суббота, 27 февраля 2010 г.
Реализована поддержка текстур некратных степени двойки на этапе отрисовки, текстурирование по свободным UV. На очереди загрузка из текстур некратных степени двойки, текстурные развертки и мультитекстурирование.
В процессе реализации шейдерный блок QuadShader. Пример работы тестового блока QuadShader - попиксельное освещение с нормалпеппингом, спекуряр меппингом и диффузной картой:

Использованы эти карты для теста:
В процессе реализации шейдерный блок QuadShader. Пример работы тестового блока QuadShader - попиксельное освещение с нормалпеппингом, спекуряр меппингом и диффузной картой:
Использованы эти карты для теста:
понедельник, 15 февраля 2010 г.
Добавлена функция переключения режимов альфа-смешивания.
Имея опыт разработки казуальных игр имею представление, что переключение режима обработки прозрачности для каждого спрайта - накладной и ненужный расход, поэтому переключение режима альфа-смешивания было вынесено в отдельную функцию:
Quad.SetBlendMode(jbmSrcAlpha);
При отрисовке, скажем, частиц, в кол-ве измеряемом тысячами, позволяет экономить ресурсы, хотя кода на строчку больше становится.
Имея опыт разработки казуальных игр имею представление, что переключение режима обработки прозрачности для каждого спрайта - накладной и ненужный расход, поэтому переключение режима альфа-смешивания было вынесено в отдельную функцию:
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);
чтобы дать понять фреймворку, что мы хотим рендерить в текстуру.
Пример работы (фиолетовый прямоугольник - рендер в текстуру):

Разумеется, с текстурой можно вытворять всё что угодно как и с любой другой во фреймворке. Вращать, блендить, масштабировать и т.п.
После инициализации 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);
чтобы дать понять фреймворку, что мы хотим рендерить в текстуру.
Пример работы (фиолетовый прямоугольник - рендер в текстуру):
Разумеется, с текстурой можно вытворять всё что угодно как и с любой другой во фреймворке. Вращать, блендить, масштабировать и т.п.
Подписаться на:
Сообщения (Atom)