Баловался с титрами. Вот что вышло:
Короткий сегодня пост...
понедельник, 31 октября 2011 г.
среда, 26 октября 2011 г.
Сегодня было принято решение, которое просто таки обязано популяризировать quad. Итак, quad обзаведется базой шейдеров. Как это будет выглядеть:
Monochrome:
Применение:
Quad.RenderToTexture(MyRenderTarget, True);
// Render your scene here
Quad.RenderToTexture(MyRenderTarget, False);
ShaderMonochrome.SetState(True);
MyRenderTarget.Draw(0, 0, $FFFFFFFF);
ShaderMonochrome.SetState(False); <Ссылка на бинарный файл шейдера, готовый к использованию>
Код шейдера:
sampler2D DiffuseMap : register(s0);
float4 std_PS(vertexOutput Input) : COLOR {
float4 Output;
float4 tex_diff = tex2D(DiffuseMap, Input.TexCoord);
Output = (tex_diff.r + tex_diff.g + tex_diff.b) / 3;
if (Output.r < 0.2 || Output.r > 0.8) Output.r = 0.0; else Output.r = 1.0;
if (Output.g < 0.2 || Output.g > 0.8) Output.g = 0.0; else Output.g = 1.0;
if (Output.b < 0.2 || Output.b > 0.8) Output.b = 0.0; else Output.b = 1.0;
return Output;
}
В таком духе будет большое количество шейдеров. Конечно, для простого однопроходного постпроцесс шейдера, как этот, смысла писать один и тот же код на использование особо не трубуется. Но шейдеры будут и сложнее. И объемный свет и размытие, блум, искажение картинки, процедурные текстуры, нормалмеппинг и прочее. Все пожелания прошу высказывать в комментариях, постараюсь удовлетворить.
Более того, если кто-то выразит желание помочь с пополнением базы шейдеров - милости просим!
понедельник, 10 октября 2011 г.
Сегодня открою завесу "тайны", над IGDC69 демо. Очередной howto в деталях.
Для начала мне нужна была некая сцена, которую нарисовал прямоуольниками, спрайтами шариков, и шрифтом вот так:
Ну так это же страшно и брр... Ладно, как нам добиться эффекта посимпотичнее. Думаем, решаем что после мы это все сделаем интерлейсом. Пройдемся полосочками в режиме multiply, получаем:
Затем оставляем их впокое, берем первый, главный рендертаргет и проходимся шейдером, добавляя хроматизма, зависящего от расстояния пикселя от центра картинки, а также добавляем (опять таки в зависимости от того же расстояния) серого цвета. Таким образом картинка в центре более контрастная чем по краям, и без разложения цвета на составляющие:
Для начала мне нужна была некая сцена, которую нарисовал прямоуольниками, спрайтами шариков, и шрифтом вот так:
Ну так это же страшно и брр... Ладно, как нам добиться эффекта посимпотичнее. Думаем, решаем что после мы это все сделаем интерлейсом. Пройдемся полосочками в режиме multiply, получаем:
Теперь можно работать над постпроцессом. Все, что мы сейчас нарисовали, засовываем в рендертаргет. Рендертаргет понадобится для того, чтобы сделать из него еще один, и оставить в том виде, что есть сейчас.
Открываем еще один рендертаргет, вчетверо меньшего разрешения и рендерим туда с горизонтальным блюром по гауссу содержимое главного рендертаргета, затем делаем с полученным тоже самое по вертикали:
Затем оставляем их впокое, берем первый, главный рендертаргет и проходимся шейдером, добавляя хроматизма, зависящего от расстояния пикселя от центра картинки, а также добавляем (опять таки в зависимости от того же расстояния) серого цвета. Таким образом картинка в центре более контрастная чем по краям, и без разложения цвета на составляющие:
Затем делаем радиальный блюр по гауссу. Также как и в предыдущем проходе, с добавлением хроматизма, делаем это в зависимости от расстояния. Чтобы уложиться в модель шейдеров 2.0, приходится опять делать блюр сначала горизонтальный, затем вертикальный. Ну что, вроде получается уже неплохо?
Теперь финальная сборка. Тут я прибегаю к небольшой хитрости, и жму все изображение по вертикали, чтобы получить черные полоски сверху и снизу. Это придает эффект кино. Сначала рисую вот этот, полученный мной рендертаргет с хроматизмом, затем тот, что получили раньше с добавлением, получая тем самым эффект свечения всего в кадре:
Все скриншоты сняты с грядущей 0.2.2 версии движка, который завелся после недавней поломки, связанной с довольно-таки глобальной переработкой. Но теперь quad стал еще мощнее и еще проще в использовании.
В частности существенно упрощена и переработана часть движка, связанная с рендертаргетами. Но об этом в следующих выпусках.
воскресенье, 18 сентября 2011 г.
Долго сюда не писал, особо нечего было поведать. Но прошло время, и у квода достаточно много изменений и доработок. Итак, готовлю к публичной порке 0.2.2 версию. Что же изменилось?
QuadFont:
QuadFont:
- Появилась возможность посчитать высоту любого текста.
- Текст теперь правильно рассчитывает межстрочные интервалы для многострочных текстов.
- Появился SmartColoring, позволяющий раскрашивать текст, вызывая отрисовку по прежнему одним вызовом. "Red, Lime, Fuchsia" например можно нарисовать передав в отрисовку следующую строку "^$RRed, ^$LLime, ^$FFuchsia".
- Текстура получила ряд методов для получения размеров текстуры, рабочей области текстуры, паттернов.
- Возможность одним вызовом создать и загрузить объекты. CreateAndLoadTexture, CreateAndLoadFont, CteateAndInitializeTimer.
- Возможность задать OnError процедуру.
- Автоматическая запись в лог ошибок отрисовки.
- Включение\выключение автоматического расчета TBN для спрайтов.
четверг, 1 сентября 2011 г.
Новость сегодня короткая. Обновился до 0.2.1. Добавил десяток методов, провел рефакторинг и чистку исходников, поубивал потенциальные баги.
quadengine021.rar
quadengine021.rar
среда, 10 августа 2011 г.
пятница, 29 июля 2011 г.
Void story получит музыкальное сопровождение от Poets of the Fall. Саундтрек игры пополнится сразу двумя песнями группы. Это уже не первый раз, когда песни группы звучат в играх. Так песня Late Goodbye играла в титрах Max Payne 2, Lift прозвучала в титрах 3DMark 2003, a War стала заглавной темой для Alan Wake.
Подписаться на:
Сообщения (Atom)








