Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

«Считаем картинку» или программная эмуляция шейдеров на службе офиса

Чулан
Наверняка, у многих еще остались машины с устаревшими видеокартами, но более-менее мощными процессорами. Сейчас такие популярно называть «машинка для офиса» — на них ставят довольно неслабые двухядерные пентиумы, а видеокарта уходит на последний план, что верно. Если вы являетесь обладателем такого аппарата и хотите увидеть красивости DX9 на своей встроенной видеокарте, или вы — фанатичный до игры, вышедшей пару лет назад, но неимущий студент, обладатель, P4 3000MHZ и несчастной GFMX440. А может быть и вовсе, вы написали крутой DX9 рендерер для своей homebrew стрелялки, но «на погонять» у вас под рукой только дешевый ноутбук 2003 года. Если да, то читаем дальше.

Теперь можно заставить любой (почти) процессор обсчитывать DX8, DX9 сцены с шейдерами, без участия мощностей видеокарты.

Встречайте — Swift Shader 2 от Transgaming inc.

Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры659
Комментарии 17

Silverlight + Augmented reality + Shaders

Silverlight
Из песочницы
Привет всем.

Я люблю работать с Silverlight, и вот недавно натолкнулся на Дополненную реальность с использованием Silverlight. Про неё и на Хабре уже писали, и в блогах довольно много написано, но я всё же немного повторюсь. Сама идея дополненной реальности интересна, но я хотел использовать её как-то необычно. И вот недавно руки дошли до изучения пиксельных шейдеров. Стало интересно попробовать соединить это вместе.

Если интересно, что из этого получилось, то Добро пожаловать под кат:
Читать дальше →
Всего голосов 52: ↑37 и ↓15 +22
Просмотры2.8K
Комментарии 14

Рисуем воду на Direct3D. Часть 1. Архитектура графического конвейера и API

Работа с 3D-графикой
Из песочницы
В этой статье, разделенной на несколько частей, я в общих чертах объясню архитектуру современных версий Direct3D(10-11), а также покажу, как с помощью этого API нарисовать вот такую вот сцену кораллового рифа, основным достоинством которой является простая в реализации, но красивая и относительно убедительно выглядящая вода:
image

Читать дальше →
Всего голосов 50: ↑42 и ↓8 +34
Просмотры10.7K
Комментарии 21

Эффект Glow гауссовым размытием на Android

Разработка под Android
Из песочницы

Введение


Результат Сей эпичный труд появился благодаря нескольким событиям.

Во-первых, в эмуляторе Android появилась поддержка аппаратного видеоускорения, что позволяет с полной скоростью работать не только интерфейсу, но и тестировать программы, использующие OpenGL ES 2.0.

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

Сказано — сделано: создаём канву проекта по андроидному Tutorial'у, достаём с полки старые Direct3D-проекты с использованием загрузки файлов .3ds, рендера-в-текстуру и пачки шейдеров, переписываем на Java и OpenGL ES 2.0, получаем то, что на картинке. Текст поздравления и тому подобное добавим потом.

Вся информация по использованию OpenGL ES 2.0 на Android оказалась сильно разрозненной, знания собирались по крупицам… Надеюсь, этот пост поможет тем, кто в будущем столкнётся с теми же трудностями, что и я.

А теперь подробнее.
Читать дальше →
Всего голосов 54: ↑51 и ↓3 +48
Просмотры15.5K
Комментарии 16

Рисуем мерцающий текст системой частиц

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

Текст будет выглядеть примерно так, как на картинке, за исключением того, что он слегка мерцает, каждая «звёздочка» плавно исчезает и появляется (кроме того, в финальном варианте и сам текст другой, и цвет не тот, и размеры шрифта и частиц тоже). Нарисован он с помощью анимированной системы частиц, причём в массиве вершин задаются лишь координаты центра каждой точки и некий «сдвиг по фазе» для анимации, ну а сама анимация сделана через шейдеры.

Отрисовка частиц осуществляется механизмом Point Sprites, который как раз и создан для таких случаев. Основная его особенность в том, что мы задаём лишь координаты центра точки и её размер, а OpenGL сам генерит нам по четыре угловых вершины и два треугольника, включая их пространственные и текстурные координаты, для отрисовки множества одинаковых (в смысле, имеющих одну и ту же текстуру) квадратных картинок. Итак, заглянем под ка[по]т.
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры7K
Комментарии 7

XNA Draw: улучшаем графику игры

Разработка игрC#
Tutorial


Всем привет.

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

В целом — на шейдерах я и хотел закончить, однако, стоить немного дополнить их, я расскажу о нескольких алгоритмах для улучшения графики в игре. Примеры улучшений:



Если интересно — под хабракат.
Читать дальше →
Всего голосов 89: ↑82 и ↓7 +75
Просмотры21.5K
Комментарии 21

Разработка системы частиц на платформе DirectX 9. Часть II

ПрограммированиеРазработка игр
Tutorial
Этот пост является 2-ой и последней частью статьи о разработке системы частиц на DirectX 9. Если вы еще не читали первую часть, то рекомендую с ней ознакомиться.

В этой части статьи будет рассмотрено: работа со спрайтами, вершинные и пиксельные шейдеры, эффекты, пост-эффекты. В частности для реализации пост-эффекта — приём рендера в текстуру.
Читать дальше →
Всего голосов 48: ↑43 и ↓5 +38
Просмотры12K
Комментарии 40

Unbiased DirectX Рендеринг на GPU, CPU и в облаке

GPGPU
Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.

renderbro resource combined
Читать дальше →
Всего голосов 83: ↑79 и ↓4 +75
Просмотры43K
Комментарии 55

Разбираемся с шейдерами в Unity3D на конкретном примере

Разработка игрUnity
Tutorial


Немного теории


Для понимания работы шейдеров, нужно хорошо ориентироваться в том, как видеокарта строит изображение. Общая структура визуализации 3D объекта на экране изображена на рисунке ниже:

Читать дальше →
Всего голосов 50: ↑43 и ↓7 +36
Просмотры134.7K
Комментарии 11

Сфера из двух треугольников

Разработка под Android
История этой демки такова: однажды один мой друг сделал для своей игры генератор карт планет и захотел, чтобы созданные таким образом карты показывались в виде вращающейся сферы. Однако, при этом он не хотел использовать 3D-графику, а вместо этого сгенерировал множество кадров с этой самой сферой, повёрнутой на разные углы. Количество используемой памяти было… скажем так, избыточным, ну а скорость генерации кадров (как и качество их исполнения) сильно страдала. Чуть подумав, мне удалось помочь ему оптимизировать этот процесс, но в целом меня не покидало справедливое ощущение того, что это задача для OpenGL, а вовсе не для 2D-графики.

И вот, однажды, когда меня мучила бессонница, я решил попробовать совместить эти два подхода: нарисовать вращающуюся сферу (с натянутой на неё картой планеты) через OpenGL, но при этом оставив её плоской.
Читать дальше →
Всего голосов 78: ↑75 и ↓3 +72
Просмотры60.3K
Комментарии 66

SSAO на OpenGL ES 3.0

ПрограммированиеАлгоритмы

Однажды, разглядывая очередную демку с эффектом, возник вопрос: а можно ли сделать SSAO на мобильном девайсе так, чтобы и выглядело хорошо и не тормозило?
В качестве устройства был взят Galaxy Note 3 n9000 (mali T62), цель — фпс не ниже 30, а качество должно быть как на картинке выше.
Реализация под катом
Всего голосов 65: ↑62 и ↓3 +59
Просмотры27.4K
Комментарии 16

Пишем Dissolve Shader

Unity
Tutorial

Введение


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


Читать дальше →
Всего голосов 14: ↑9 и ↓5 +4
Просмотры15.4K
Комментарии 14

Создание игры на ваших глазах — часть 2: Шейдеры для стилизации картинки под ЭЛТ/LCD

Разработка игрОбработка изображенийUnity
Tutorial
Поговорим на этот раз о технологии. В этой статье я расскажу и покажу, как в Unity создать шейдер для стилизации графики под старые ЭЛТ. Такой шейдер подойдет для пиксель-арта и для стилизации картинки под древнюю технику. Злоупотреблять им не стоит, но иногда использовать к месту — можно. (Специально уточню — я не предлагаю использовать такой эффект постоянно. Но, например, в заставках — он может прийтись к месту).



И сразу оговорюсь — я не владею глубинным пониманием шейдеров, а от читателя жду и того меньшего. Так что буду писать из расчета, что вы про шейдеры не знаете ничего, или почти ничего. И да, я попытаюсь вам пояснить самые базы работы шейдеров, так что если вы ничего о них не знаете — welcome!

Читать дальше →
Всего голосов 112: ↑103 и ↓9 +94
Просмотры72.7K
Комментарии 32

Стерео плеер из VLC

Работа с 3D-графикой
Из песочницы
image Все началось с того что я купил себе новый монитор с поддержкой 3D ASUS VG23AH и в какой то момент мне захотелось воспользоваться возможностью посмотреть 3D фильм на нем. Подуглил бесплатные виде плееры для Mac OS, оказалось их не так много — всех чаще попадался плеер Bino. Скачал этот Bino, но посмотреть нормально так и не получилось, т.е. к плееру претензий нет, картинка была 3D, но видео страшно тормозило, картинка дергалась. Я воспользовался советом по повышению производительности к этой программе — там сказано — проверьте, как проигрывается этот фильм в VLC плеере, если уж и там будет тормозить, значит, мощностей вашего компьютера недостаточно/замените компьютер. В VLC все показывалось отлично без тормозов но, конечно, в моно режиме. Поскольку VLC — это opensource проект, я решил его немного подправить, чтоб он смог показывать стерео-фильмы, оказалось это сделать довольно просто.
Подробности дальше, совсем немного кода.
Всего голосов 75: ↑74 и ↓1 +73
Просмотры39.4K
Комментарии 13

VSDCT на OpenGL ES 3

Разработка игрРазработка под Android
Давно хотел сделать демку VSDCT на мобильном телефоне. VSDCT (Virtual Shadow Depth Cubemap Texture) это представление cubemap текстуры, когда вместо 6 отдельных граней используется одна обычная 2D текстура-атлас, в которой исходные грани кубической карты помещены в виде плотно упакованных тайлов. Посмотрим, как сделать тени от точечного источника света, использую эту технику.

image

Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры9.2K
Комментарии 5

Addon для генерации материалов Cycles Blender

Python
Из песочницы
Добрый день, уважаемые хабравчане. Некоторое время назад я сделала плагин «Shader Generator» – аддон, реализующий идею параметрического генерирования и редактирования шейдеров (материалов) встроенного рендера Cycles.


Читать дальше →
Всего голосов 47: ↑46 и ↓1 +45
Просмотры30.1K
Комментарии 11

Реалистичное гравитационное линзование на Unity

ПрограммированиеC#Unity
Из песочницы
Tutorial
image
Эффект гравитационной линзы вызванный скоплением галактик RCS2 032727-132623

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

Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Просмотры26.4K
Комментарии 12

Шейдер для жука

ПрограммированиеАлгоритмы

снизу фотографии настоящих жуков, сверху — моя реализация

Продолжение предыдущей статьи, на этот раз пишем шейдер.
Читать дальше →
Всего голосов 161: ↑159 и ↓2 +157
Просмотры52.8K
Комментарии 21

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6

ПрограммированиеРазработка игр
Tutorial

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Пришла пора веселья, давайте для начала смотреть размер текущего кода:
  • geometry.cpp+.h — 218 строк
  • model.cpp+.h — 139 строк
  • our_gl.cpp+.h — 102 строки
  • main.cpp — 66 строк


Итого 525 строк. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля!
Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!


Читать дальше →
Всего голосов 103: ↑98 и ↓5 +93
Просмотры61.2K
Комментарии 37