Огонь с помощью HLSL

Может, кто-нить знает как реализовать реальный огонь на HLSL? Помогите плз!
Последняя правка: пн, 29/08/2011 - 22:08
Submitted by King on

Комментарии

в rendermonkey есть примеры
Submitted by _dm on
А таксама ёсьць такой пошук як Google!
Когда я формулировал вопрос, я надеялся услышать “новые идеи”… :) На самом деле мои проблемы связанные с этим вопросом заходят глубже в HLSL, dds-формат, альфа-блендинг… В обезьяне огонь шевелится на чёрном фоне. Я же хочу сделать на прозрачном… Я думаю здесь цветовой ключ на чёрный цвет делать надо :), но как его сделать не используя конкретный API?
Submitted by King on
Ну что тут особо нового... Систему частиц, возможо мягкую, volume текстуру, в которой будт состояния одной частици огня. Ну а дальше выдумывание алгоритма работы системы частиц. А что тут нового то еще? Ну если ты на sm 4.0, то можешь заюзать геометрические шейдеры для генерации партиклов прямо на карточке, как это делается в демке с nVidia SDK 10 с дождем :)) А по существу, кодом поделится не могу, т.к. нету, не писал. Скажу только что цветовой ключ - это уже не актуально. Все это можно эмулировать alpha-test -ом для текстуры с alpha-каналом, ну тут свом нюансы с пересекающимися объектами... Хотя для огня может быть это и не станет порблемой
хех, если он на черном - можно рисовать с additive blending а вообще говоря не думаю, что там есть какие-то проблемы, хотя точно сказать не могу - нету под рукой. частицами можно, но тут проблемы с производительностью сразу же возникают, поэтому нужно исходить из того, для каких целей используется эффект, и выбирать метод.
Submitted by _dm on
Если для тебя не сложно помоги настроить:) Я перенёс огонь из обезьяны в свою прогу. Рисую его на плоскости... При рендере с такими параметрами в технике: ZEnable = true; ZWriteEnable = true; CullMode = None; AlphaBlendEnable = true; BlendOp = Add; SrcBlend = One; DestBlend = One; Фон получается прозрачным :), но цвета огня становятся бледными (теряют свой цвет)...
Submitted by King on
Вот по этому и хотел делать ключом...
Submitted by King on
да, огонь тоже будет выглядеть по-другому:) можно делать с маской: на первом проходе рендерим огонь в текстуру, потом юзаем как маску на втором.
Submitted by _dm on
Submitted by Coridas on

Неплохо ), отпиши как делал хотяб принципы ...

Submitted by Relyer on

2 Coridas:

Выглядит не плохо. Если это твое - выложи авишку - глянуть в динамике.

Submitted by Victor on
Выложу как прийду домой, я делал.Короче делал с помощью волюметрик рендеринга. За основу брал проект Юрия Уральского с НВИДИИ, но сильно переделал, т.к. делал под XNA, а там скорость важна была.Есть куча плейнов(грубо говоря квадратов) по ним скролим текстуру(обычную не волюметрическую) при этом модифицируя ее. Плейны всегда повернуты к камере.

Погуглите volumetric fire, найдете я думаю.

Submitted by Coridas on

Вот вам огонек с помощью системы частиц и текстуры...

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

Получается вот что, просто, быстро и производительно

[img_assist|nid=259|title=fire|desc=|link=popup|align=left|width=100|height=78]

Submitted by Denis on

2 Denis:

С партиклами понятно, но вопрос вроде бы реализовать в HLSL.

Submitted by Victor on

> С партиклами понятно, но вопрос вроде бы реализовать в HLSL.

Он имел ввиду процедурно )

Submitted by Relyer on

Не знаю я всеголишь выложил идею а дальше интерпретируйте если хотите, хотите прямо так и используйте, а можете просто посмеяца Smile

Submitted by Denis on

2 Denis:

Дык не кто и не смеется - просто реализация огня через партиклы - вещь довольно стандартная. А King (кста, куда он делся?) спрашивал реализацию с помощью шейдеров.


2 Coridas:

Ну и долго же ты домой добираешься Smile

Submitted by Victor on
Сорри за задержку, как никак день независимости в Украине, бухаем-с :)Очень короткие ролики, т.к. дома инет очень медленный, но я думаю все будет понятно:
Submitted by Coridas on
Submitted by Victor on

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

Интересно но бесполезно, в данном вопросе )

Submitted by Relyer on

>> Интересно но бесполезно, в данном вопросе )

Ну, не скажи. Как можно рисовать что-то не зная как это что-то устроено и работает.

Submitted by Victor on

GameDev.by