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

Вниз

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

Наверх




Память: 0.64 MB
Время: 0.05 c
2-1135325317
bva
2005-12-23 11:08
2006.01.15
Отключить программно Ctrl+Alt+Del


2-1135529108
Вопрос
2005-12-25 19:45
2006.01.15
Как получить список файлов в опр дериктории?


14-1135254857
Nic
2005-12-22 15:34
2006.01.15
Влияние высшего образования...


14-1135255615
LordOfRock
2005-12-22 15:46
2006.01.15
Следуя вашим советам сменил дизайн


14-1134513986
Прожиг
2005-12-14 01:46
2006.01.15
За сколько обычно записываются DVD+R болваники?