Форум: "Игры";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
ВнизКак работать с альфой Найти похожие ветки
← →
Cash © (2003-11-30 10:42) [0]В одном из сырцов, скачаных с этого сайта, я увидел хороший, на мой взгляд, эффект (в сырцах его нет, компилированное мной приложение оным не обладает): пламя не выгледит нарисованным, в центре почти не прозрачное, по краям оно ели заметно (самого спрайта). В ImageList-е посмотрел: картинка и картинка. Вопрос. Как это реализовывается. Ожидаю код или ссылку.
← →
miek © (2003-11-30 14:54) [1]Скриншот есть? По описанию похоже на обычное пламя с "честным" альфа-каналом.
← →
Cash © (2003-12-09 14:18) [2]прошу пращеня за опоздание.
miek © (30.11.03 14:54) [1] Скриншота нет, ссылка на сайт этой игры лежит в Samples разделе. Сама игра, кажись, Towers, или чтото наподобие, называется. Она похожа на "Червяков". miek закачай, посмотри, а остальное я описал выше. :)
← →
miek © (2003-12-09 17:03) [3]Ну я, е-мое, в упор не вижу там никаких Towers. Ссылку приведи прямую, что ли.
← →
Cash © (2003-12-11 22:39) [4]Виноват. Не туда направил. Даю точные координаты:
Game Sourses\Раздел 3\GunsСсылка
Вся прилада в есит менее мега.
← →
miek © (2003-12-12 19:04) [5]Фигня творится!
Microsoft OLE DB Provider for ODBC Drivers error "80004005"
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key "Temporary (volatile) Jet DSN for process 0x568 Thread 0x4a0 DBC 0xec0efc4 Jet".
/viewdoc.asp, line 38
← →
Cash © (2003-12-14 00:35) [6]Блин. Уменя тоже. miek © : расскажи, что знаешь про "Честный" альфа-канал. ниче боле не вижу.
← →
miek © (2003-12-14 09:27) [7]Я тебе демку пошлю мылом, если ты не против?
← →
miek © (2003-12-14 23:03) [8]Кому интересно, демка про альфа-канал будет лежать здесь:
www.miek.narod.ru/alpha.zip
(60 KB)
← →
Cash © (2003-12-16 22:19) [9]miek: пример просто супер. Судя по нему меня интересует Полноценный альфа-канал. Но про остальные тоже непроч прочесть.
← →
miek © (2003-12-17 00:20) [10]Не понял - исходники интересуют или сам принцип?
← →
SiJack © (2003-12-17 09:43) [11]И мне охота, и того и другого если можно без хлеба :))
← →
Cash © (2003-12-17 12:48) [12]miek в большей степени исходники, мне нужен код (а еще понять как он работает :) ).
← →
miek © (2003-12-17 18:57) [13]Вот так я делаю альфа-блендинг без MMX.
(Здесь обрабатывается только 1 пиксел. Kак сделать из этого цикл, сами знаете)
// ESI - указатель на пиксель источника
// EDI - указатель на пиксель приемника
// Формат пикселей - ARGB 8-8-8-8
mov bl, byte ptr [esi+3]
mov bh, byte ptr [esi+3]
and bl, bl
je @skiptransparent
mov al, [esi]
not bh
mul al, bl
mov dl, ah
mov al, [edi]
mul al, bh
add dl, ah
mov [edi], dl
mov al, [esi+1]
mul al, bl
mov dl, ah
mov al, [edi+1]
mul al, bh
add dl, ah
mov [edi+1], dl
mov al, [esi+2]
mul al, bl
mov dl, ah
mov al, [edi+2]
mul al, bh
add dl, ah
mov [edi+2], dl
@skiptransparent:
add esi, 4
add edi, 4
← →
Cash © (2003-12-18 18:35) [14]Незнал, что на асме. Круто! miek Спасибо!
← →
miek © (2003-12-18 20:06) [15]Могу выложить и сам модуль, только к нему хелпа нет. Есть демки.
← →
Cash © (2003-12-19 11:42) [16]miek давай. В демках понятнне(вроде)будет, если с коментариеми :).
← →
miek © (2003-12-19 15:46) [17]ОК, качаем с www.miek.narod.ru/spriteutils2.zip
Около 400 КБ.
← →
Cash © (2003-12-19 21:56) [18]Блин. Чеб мы, начинающие, без таких, как ты miek делали. :)
← →
miek © (2003-12-24 16:30) [19]Это значит "хорошо" или "плохо"?
← →
Cash © (2004-02-14 16:41) [20]miek: есесьвенно хорошо!
← →
Vertex (2004-02-14 22:59) [21]spriteutils?)
это твоя весчь или ты ее присвоил?
← →
miek © (2004-02-14 23:10) [22]Это ты кому, кстати? Не забывай уточнять.
SpriteUtils - моя нетленка, там и копирайт стоит.
← →
Vertex (2004-02-16 03:23) [23]Ну тогда респект
Извиняй за сомнения
← →
cyborg © (2004-02-16 10:34) [24][13] miek ©
на gamedev.ru я читал статью (давно) прозрачность с использованием ММХ, вроде пискел за семь тактов обрабатывался, поищи, сам я не помню где читал, может полезно будет.
← →
Cash © (2004-02-20 18:35) [25]Своими десятью нащупал такую проц-у:
DxImageList.Items.Find("Pic").DrawAlpha();
Шо ето интересное такое? И ни то ли я ищу... вНаТури?
А када ее вызывать? Ну вобщем и т.д.
← →
miek © (2004-02-20 19:31) [26]2Сyborg: ты не мог бы посмотреть в своих архивах эту статью? Я сейчас ее там не вижу. 7 тактов на пиксел было бы неплохо.
← →
cyborg © (2004-02-20 21:12) [27][26] miek © (20.02.04 19:31)
К сожалению ту страничку я не нашёл, нашёл в архиве только это:
4. Канал прозрачности (alpha blending) [далее ab] – одно изображение плавно появляется или растворяется поверх другого (также очень часто применяется при работе с видео).
Формула ab:a = b + (a - b) * alpha
Где: a – основное изображение
b – изображение которое накладывается
alpha – количество градаций(позиций) ab - обычно хватает 0...255.
переведем это все в MMX-команды:
a) инициализация регистров
биты31...2423...1615...8 7...0
eax = alpha alpha alpha alpha
movd mm4,eax; переносим данных из eax в mm4
punpcklwd mm4,mm4 ; создаем четыре cлова alpha-канала
psrlw mm4,8 ; переносим старшую часть слов в младшую
pxor mm7,mm7 ; обнуляем mm7
б) основная процедура
movd mm0,[esi] ; загрузить в mm1 четыре байта накладываемого изображения
movd mm1,[edx] ; загрузить в mm0 четыре байта основного изображения
punpcklbw mm0,mm7
punpcklbw mm1,mm7
psubw mm0,mm1 ; вычитаем из накладываемого, основное изображение
psllw mm1,8 ; переносим младшую часть слов регистра mm1 в cтаршую
pmullw mm0,mm4 ; умножаем накладываемое изображение на alpha-кана
paddw mm1,mm0 ; складываем его с основным
psrlw mm1,8 ; переносим результат из старшей части слова в младшую
packuswb mm1,mm1 ; и переводим его в 32 бита
movd [edi],mm1 ; кладем полученное изображение на экран (в видеобуфер)
add esi,4
add edx,4
add edi,4
В данном примере используется быстрое 16-битное MMX-умножение, которое и дает максимальное ускорение нашей процедуре. Плюс - уже ставшая традицией – обработка сразу четырех байт...
← →
cyborg © (2004-02-20 21:27) [28]Похоже я ошибся, в инете упоминается на семь тактов только освещение :(.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.031 c