Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

PD3 - Рендер в текстуру   Найти похожие ветки 

 
Warchief   (2005-04-30 20:10) [0]

Кто-нибудь делал?


 
dRake ©   (2005-04-30 20:28) [1]

Делал.. и сделал новый PD =)


 
Warchief   (2005-04-30 20:32) [2]

А где на него можно посмотреть?


 
XProger ©   (2005-04-30 21:15) [3]

Warchief, этот вопрос случайно не продолжение темы про лайтмэп?


 
Warchief   (2005-04-30 21:23) [4]

Нет :)


 
dRake ©   (2005-05-01 01:54) [5]

Warchief

Щас через денек выложу и дам сцылку =)


 
Warchief   (2005-05-03 15:43) [6]

> dRake ©   (01.05.05 01:54) [5]
Ну что, как там с сцылкой?


 
dRake ©   (2005-05-03 16:40) [7]

Warchief

Ох мля щас о праздников отойду наклепаю пару примеров + подниму хостинг тогда и дам сцылку =) жди завтра-послезавтра


 
Warchief   (2005-05-03 19:49) [8]

ок. Только надеюсь ты свой PD не запихал в dll? :)


 
dRake ©   (2005-05-04 00:50) [9]

Warchief

Не не запихал =) Набор сорцов + хидеры


 
Warchief   (2005-05-04 11:01) [10]

Жду с нетерпением :)


 
dRake ©   (2005-05-04 15:49) [11]

Блин с хостингом вообще жопа =)
Давай мыло я тебе вышлю (900 килобайт)


 
Warchief   (2005-05-04 16:09) [12]

warchief@inbox.ru


 
dRake ©   (2005-05-04 17:51) [13]

Усе выслал =)

Теперь как что делать....

1) Если захочешь что-нить скомпилить то заходи в дельфу -> Tools -> Enviroment options -> Library там в строке Library path допиши



%Путь куда распаковал архив%;%Путь куда распаковал архив%\DX8Headers



Тоесть если ты допустим распаковал его в c:\PDrawFX то стока у тебя будет выглядеть так: {bla-bla-bla}; c:\PDrawFX; c:\PDrawFx\DX8Headers;

2) Прежде чем запускать примеры тыркни Runme.bat в папке с примерами, он скопирует в папки с примерами D3DX81ab.dll которая нужна для загрузки текстур.

3) Многое еще недоделано из того, что хотелось сделать (например восстановление устройства после потери контекста, итд...) но большинство уже сделано и отлажено :)

Удачи =)


 
Warchief   (2005-05-04 18:40) [14]

Спасибо :)
Мне был нужен только кусок рендера в текстуру, сейчас займусь прилаживанием его к своему "движку" хD


 
dRake ©   (2005-05-04 19:23) [15]

Гы..

D3DDev.SetRenderTarget() =)


 
Warchief   (2005-05-04 21:13) [16]

Пробовал так, не получается (


 
Warchief   (2005-05-04 21:14) [17]

dRake
Если у тебя есть под рукой PD3, то может подскажешь как сделать?


 
dRake ©   (2005-05-04 23:59) [18]

Да у меня целая коллекция этих повердров :)

Думаешь нафига я начал делать свой? Да потому что без вмешательства тяжелой хирургии невозможно научить дрова рендерить в текстуру... Причем самая основная заморочка не с рендером соббс-но а с обучением AGFUnit"a создавать текстуру пригодную для рендера в нее, а потом еще она и не лочится.....

Кстати хозяйке на заметку - PD (2, 3 etc...) ужасно КРИВЫЕ!
Меня, бывало, еле откачивали после просмотра некоторых кусков кода, не говоря уже о нерациональном структурном коде, излишней нагроможденности и прочее... Если интересно могу потом процитировать перлы из PD 2.41 =)


 
DestroyerZ   (2005-05-05 13:23) [19]

dRake
И мне кинь плз на destroyerz@mail.ru !


 
Warchief   (2005-05-05 16:57) [20]

Сейчас нет твоих исходников под рукой - скажи, у тебя есть отрисовка с произвольными текстурными координатами?

Еще - я запускал примеры, после выхода, наблюдается ошибка (которая "Отправить разработчику")


 
dRake ©   (2005-05-05 17:51) [21]

Warchief

>Сейчас нет твоих исходников под рукой - скажи, у тебя есть отрисовка с произвольными текстурными координатами?

Да конечно.



PG_TextureMapUV( X1, Y1...X4, Y4,
                U1, V1...U4, V4,
                Col1..Col4, Effect );



и две обертки: PG_RenderUV.

>после выхода, наблюдается ошибка (которая "Отправить разработчику")

Just fixed =)


 
dRake ©   (2005-05-05 17:57) [22]

DestroyerZ

Отправил.


 
Warchief   (2005-05-05 21:11) [23]

ok, 10x
В случае чего можно к тебе обращаться за помощью?


 
dRake ©   (2005-05-05 23:46) [24]

Warchief

Канешна =)


 
Warchief   (2005-05-06 21:13) [25]

dRake,
слушай, а как у тебя вообще с альфой рисовать?! Есть 32-bit tga с альфа-каналом. Рисовал с e_Alpha, e_Diffuse ни один не канает :(
Загружаю с D3DFMT_A8R8G8B8


 
dRake ©   (2005-05-06 22:34) [26]

Warchief

Код в студию =)


 
Warchief   (2005-05-07 19:18) [27]

Пардон, все ок :)
Просто я сделал загрузку тектсуры из потока, а поток битый оказался :) Попробовал загрузить в поток другую текстуру и все заработало :)


 
DestroyerZ   (2005-05-07 22:37) [28]

2 dRake: Хм, я не получил письма. Отправь, плз, еще раз. Ящик работает.


 
dRake ©   (2005-05-08 16:01) [29]

DestroyerZ

Фак.. мне пришло письмо с ответом что твоя почта не приняла письмо тк оно заражено вирусом :( Прогнал доктора Кашперовского и правда - Все екзешники у меня заражены Win32.Parite.B. Щас полечусь и переотправлю тебе его.

Warchief

Прогонись антивирусом - возможно что в екзешниках с примерами сидит этот паразит. Заранее извиняюсь если это так =) Сам не знал до тех пор когда проги у меня не начали голосить что мол их CRC изменен...


 
Warchief   (2005-05-08 18:32) [30]

Вирусов вроде не обнаружил

dRake, Как создать текстуру (не загрузкой из файла/потока!) с альфа каналом?


 
Warchief   (2005-05-08 18:33) [31]

Да, еще вопрос - как читать/писать альфу?


 
dRake ©   (2005-05-08 18:41) [32]

Warchief

>Как создать текстуру (не загрузкой из файла/потока!) с альфа каналом?

Создание текстуры


PI_CreateImage()


Ну а чтобы был альфа-канал в качестве формата пиксела выставь нужный тебе формат содержащй альфа-компоненту :


D3DFMT_A8R8G8B8 (IMGFTM_8888), D3DFMT_A1R5G5B5 (IMGFMT_1555), D3DFMT_A4R4G4B4 (IMGFMT_4444)


>Да, еще вопрос - как читать/писать альфу?

Пока никак. Я сейчас над этим работаю.. Есть довольно тормозной вариант читать/писать через Lock() Unlock(). Если тебе оно надо могу скинуть пропатченый вариант PowerGraph.pas


 
Warchief   (2005-05-08 18:48) [33]

А какой смысл создавать текстуру с альфой, если в нее (в альфу) нельзя писать? :)


 
dRake ©   (2005-05-08 20:09) [34]

>А какой смысл создавать текстуру с альфой, если в нее (в альфу) >нельзя писать? :)

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


E_Add or E_AlphaChannel


Вот сейчас выясняю можно ли организовать подобное в рамках Fixed Pipeline =)


 
Warchief   (2005-05-08 21:16) [35]

А как организовано это в PD3? Посмотри, может поможет :)


 
dRake ©   (2005-05-09 00:19) [36]

>А как организовано это в PD3? Посмотри, может поможет :)

А никак :) Они и не заморачивались.
У них есть только читалка/запись пикселей по памяти.
Мы пойдем другим путем. Напряжем GPU =)


 
Warchief   (2005-05-09 09:40) [37]

Дык, вроде быстро работает в PD3
Но на GPU это конечно правильнее


 
dRake ©   (2005-05-09 12:43) [38]

Мдя похоже на то что без шейдеров то что я задумал не получится... Блин :(


 
Warchief   (2005-05-09 13:25) [39]

Читать/писать пиксели в текстуре с шейдерами? Нет уж увольте :)


 
dRake ©   (2005-05-09 15:01) [40]

Еклмн... читать писать у меня можно. И никаких шейдеров для этого не надо.

Тема в другом - _рендерить_ (тобишь с помощью GPU) _альфу_ одной текстуры в _альфу_ другой.

На шейдере это как два пальца об асфальт :)
А вот Я сейчас пытаюсь из**нуться и сделать это через RenderState/TextureStageState.


 
Warchief   (2005-05-09 16:09) [41]

> Еклмн... читать писать у меня можно. И никаких шейдеров для этого не надо.
А как? И в альфу тоже можно?


 
Warchief   (2005-05-09 16:10) [42]

Еще вопрос - как после создания/загрузки текстуры изменить ее размеры?


 
dRake ©   (2005-05-09 23:58) [43]

>А как? И в альфу тоже можно?

Хм... раз можно читать/писать пиксел текстуры, а пиксел является совокупностью ARGB компонент цвета, то логично что раз компонента A входит в состав пиксела, то изменять ее тоже можно =)

Посмотри есть ли у тебя в PowerGraph.pas процедуры PG_Lock/PG_Unlock, PG_SetRGB, PG_GetRGB, PG_SetA, PG_GetA...

Если нет, то я тебе закачаю версию где они есть =)
Просто я не помню какую версию тебе тогда скинул :)

Еще вопрос - как после создания/загрузки текстуры изменить ее >размеры?

Только пересоздав ее... D3D не позволяет иначе :)

Епта с праздником вас =) Я тока что приперся с бухаловки =)


 
Warchief   (2005-05-10 10:55) [44]

>  PG_Lock/PG_Unlock, PG_SetRGB, PG_GetRGB, PG_SetA, PG_GetA...

нету


 
dRake ©   (2005-05-10 22:30) [45]

Ну раз нету то вышлю... Щас вроде нашел способ реализовать альфу... Вот только разберусь окончательно...


 
dRake ©   (2005-05-11 03:35) [46]

Зашибись =)
Альфу сделал, сейчас немного причешу все функции.. погоняю..
Правда пришлось переползти на девятую версию Direct3D, да и D3DX тоже (что не очень гуд - D3DX9_24.dll весит 2.11Mb), впрочем она должна идти вместе с директиксом.


 
Warchief   (2005-05-11 11:47) [47]

И не забудь сделать нормальную обработку потери фокуса окном :)


 
Warchief   (2005-05-14 13:54) [48]

ну так чего там?


 
dRake ©   (2005-05-14 15:38) [49]

Сейчас по мелочи доделаю и выложу =)


 
Warchief   (2005-05-14 17:15) [50]

Жду-с :)


 
dRake ©   (2005-05-15 01:49) [51]

Заслал =)

Короче теперь так...

[+]Добавлены новые константы для работы с альфа каналом и изменены/добавлены старые - подробнее смотри в PowerGraph.pas =)

[+]Добавлено сохранение текстуры в файл.

[+]Переделана процедура Clear. Пашет быстрее + можно с помощью нее чистить Alpha отдельно от RGB.

И зацени пару примерчиков на работу с альфой :)

Восстановление пока не сделал, потому что сначала надо организовать приличную обработку сообщений и переделать таймер (кривоват) так что работы хватает... Сейчас разгребу дела и буду доделывать =)

Если при отрисовке указана только константа из набора E_XXXX то она будет работать и на RGB и на Alpha каналы. Если надо отдельно указать эффект для отрисовки альфы - добавляешь к нему константу из набора E_ALPHA_XXXX. Ну и само собой - E_DIFFUSE, E_MIRROR, E_FLIP можно дописывать при любом раскладе =)

Пример



E_NONE or E_ALPHA_MUL

E_ADD or E_ALPHA_NONE or E_DIFFUSE

E_SIMPLE or E_MIRROR or E_FLIP



 
Warchief   (2005-05-15 17:18) [52]

Ck0чал, посмотрел.
[-] Новая dll"ка в 3 раза больше старой (но оно и понятно)
[-] Без моей правки примеры никак не хотели компилироваться
[-] Второй пример работы с альфой даже с моей правкой не работает

Буду ждать нормальной обработки потери фокуса :)
А dll"ку нельзя убрать, при установленном DX9? Ведь PD3 как-то обходится.


 
dRake ©   (2005-05-15 23:35) [53]

>Без моей правки примеры никак не хотели компилироваться

Это да - я то что в сорцах менял забывал в примерах поправить =)
А бинарники работают?

>Второй пример работы с альфой даже с моей правкой не работает
А бинарник? В чем заключалась правка?

>Буду ждать нормальной обработки потери фокуса :)
Делаем!

>А dll"ку нельзя убрать, при установленном DX9? Ведь PD3 как-то >обходится.

Она есть у многих. Убрать-то можно но очень не хочется - удобный загрузчик кучи форматов в одном флаконе...

>Ведь PD3 как-то обходится.

Сравни:

1) Скорость загрузки текстуры в PD3 и у меня (разница в 40% по моим тестам) в PD.

2) Форматы - PD3 : TGA (32bit only), bmp.
У меня - tga, jpg, png, bmp, dds, dib... в любых вариациях.

3) Плюс у меня возможность фильтрации текстуры при зарузке - Dithering, различные виды сглаживания.

Ну невозможно отказаться от таких вкусностей =)


 
Warchief   (2005-05-16 15:29) [54]

> А бинарники работают?
Да

>А бинарник? В чем заключалась правка?
Правка заключалась в том, чтобы его можно было скомпилировать. Бинарник работает, но ничего кроме сетки(клетки черн0 белые :) не рисует.

> Она есть у многих. Убрать-то можно но очень не хочется - удобный загрузчик кучи форматов в одном флаконе...

2mb загрузчик?!

> 1) Скорость загрузки текстуры в PD3 и у меня (разница в 40% по моим тестам) в PD.
Обязательно сравню

> 2) Форматы - PD3 : TGA (32bit only), bmp.
У меня и jpg и png и tga все грузит :)

> 3) Плюс у меня возможность фильтрации текстуры при зарузке - Dithering, различные виды сглаживания.
Не видел :/


 
dRake ©   (2005-05-16 17:02) [55]

>Правка заключалась в том, чтобы его можно было скомпилировать. >Бинарник работает, но ничего кроме сетки(клетки черн0 белые :) >не рисует.

Хех смотри -

константа E_NONE - теперь вообще отключает блендинг для канала
чтобы просто скопировать теперь юзается E_COPY

смотри описания констант в PowerGraph.pas =)

>2mb загрузчик?!

Там же не только загрузчик... Так еще куча всего

>У меня и jpg и png и tga все грузит :)

По-порядку - поддержка jpg из дельфячего модуля jpeg, который тянет за собой Graphics который тянет за собой... правильно - VCL =) А у меня нигде VCL"a нет (к этому и стремился :) отсюда файл на выходе (примеры) - 50Kb

загрузчика png я вообще не увидел там, tga поддерживается только с кучей исключений (см TGAReader.pas из PD 3.0).

> 1) Скорость загрузки текстуры в PD3 и у меня (разница в 40% по моим тестам) в PD.
>Обязательно сравню

Кстати для RenderTarget текстур разница вообще в несколько раз :)
Проверял на своей игрушке - там они для ландшафта используются.

> 3) Плюс у меня возможность фильтрации текстуры при зарузке - >Dithering, различные виды сглаживания.
>Не видел :/

А я еще и не сделал :) Но будет...


 
Warchief   (2005-05-20 19:07) [56]

У тебя нет странички, где можно следить за развитием твоего движка? :)


 
dRake ©   (2005-05-21 13:28) [57]

Да хостинг наш упал :)
Когда поднимется то будет и страничка


 
Warchief   (2005-05-26 11:14) [58]

Ну как оно там?


 
Warchief   (2005-05-30 18:33) [59]

Сравнил скорость загрузки PD3 и твоего движка - в твоем на 20% быстрее


 
dRake ©   (2005-05-30 21:04) [60]

Сесия пришла :)


 
Warchief   (2005-07-07 11:45) [61]

dRake,
ну как сессия? :)
Я никак не могу правильно обработать потерю устройства :(  (Использую твою версию с dx8). Не подскажешь как это сделать?


 
dRake ©   (2005-07-07 19:00) [62]

Сессия исчо продолжется =)

А вот враппер претерпел некоторые изменения:

>Я никак не могу правильно обработать потерю устройства :(

Там в функции Present вроде есть закомментированный кусок относящийся к потере устройства, если нет то суть такова:

Надо проверить функцию D3DDevice.Present на возвращение ошибки D3DERR_DEVICELOST, эта ошибка и означает потерю устройства.

А вот с враппером произошло много изменений :

1) он переехал на ООП :)
2) претерпел изменения процесс рендеринга + возможность массового удаления/восстановления всех созданных Image"ей + появился Callback для отлова оптери устройства + много изменений по мелочам  
3) Добавился модуль с кучей различных полезных процедур/функций (работа с векторами, тригонометрия, обработка коллизий, служебные) который используется всеми модулями.
3) добавился модуль для работы со звуком (BASS powered ;)

;)


 
Warchief   (2005-07-07 20:26) [63]

Можешь закинуть на мыло? Только без D3D9 dll"лек, они у меня есть :)
warchief@inbox.ru


 
Warchief   (2005-07-28 19:20) [64]

Восстанавливать потерянное устройство научился, а вот как быть с текстурами? Заново из файлов загружать?


 
A22 ©   (2005-07-28 19:50) [65]

угу


 
Warchief   (2005-07-31 17:13) [66]

Йумор, понимаю :)
А серьезно?


 
dRake ©   (2005-08-01 02:50) [67]

Серьезно - заново загружать.
Только не все, а те которые были созданы с D3DPOOL_MANAGED


 
Mozgg   (2005-08-02 01:48) [68]

А зачем их заново загружать, точнее после чего? После потери девайса?

dRake дай пожалуйста свой повер, хоть посмотрю, что там есть!



Страницы: 1 2 вся ветка

Форум: "Игры";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.025 c
2-1135285494
Crass
2005-12-23 00:04
2006.01.15
из длиного FileName- > сам Name /.без dir и attr


14-1134722550
Daria
2005-12-16 11:42
2006.01.15
telnet


14-1134975102
IAmDanil
2005-12-19 09:51
2006.01.15
NET SEND


6-1127897807
Yuran
2005-09-28 12:56
2006.01.15
Расскажите плизз, про gethostbyaddr?


2-1135430650
YDS
2005-12-24 16:24
2006.01.15
Сохранить файл в юникоде





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский