Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Как работать с альфой   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.036 c
14-1086169461
rserg
2004-06-02 13:44
2004.06.20
Корманники и Delphi


1-1086255747
kukuikar
2004-06-03 13:42
2004.06.20
Корректировка вопроса о шифровании


6-1083231348
oleg1234
2004-04-29 13:35
2004.06.20
INDY IdMappedPortTCP Помогите пожалуйста!!!


1-1086715310
red chief
2004-06-08 21:21
2004.06.20
Текст в указанонном месте мышки


14-1086288943
Рамиль
2004-06-03 22:55
2004.06.20
W32.Sasser.E.Worm и иже с ними