попиксельное освещение, часть первая.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

попиксельное освещение, часть первая.

Сообщение d3drm » 03.04.2005 (Вс) 14:24

Долго долбался над данной темой и вот наконец получилось более менее то, что и хотел. Пока есть небольшие баги, если источник света стоит совсем рядом с полигоном (такой же баг я видел в игре PainKiller) и радиус освещения источника бесконечный. Но основная часть работает исправно.

прошу протестить, выразить свое мнение и написать fps с характеристиками машин.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.04.2005 (Вс) 14:30

В среднем 68 фпс.
Мнение... Респект, d3drm!

Celeron 1200/224 RAM/32 mb...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.04.2005 (Вс) 15:41

Athlon 1000, 256 SDRAM, GeForce 2 Pro 32 DDR

Если в появляющемся по дефолту окне, то 450 fps. Если задвинуть стену за пределы окна, то 600. Если сильно дёргать мышью, то 400. Если развернуть окно на весь экран (1024х768х32), то 300.


Гы :) А ить не сразу просёк, что это куб (1), и что он двигается стрелками (2) :)
Мне понравилось :) Только не понравилось искажение сферическое, ну, ты понял :)
Последний раз редактировалось GSerg 03.04.2005 (Вс) 15:44, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.04.2005 (Вс) 15:43

забыл сказать, камеру можно двигать стрелками, чтобы лучше увидеть эффект

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.04.2005 (Вс) 16:04

GSerg, ну это небольшой баг из-за неточной настройки поля зрения... Обирается легко, тока я никак не могу подобрать значения правильные.

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

Скоро выложу вторую версию, с убранным багом...

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 03.04.2005 (Вс) 18:07

P4 2800, 1024, GF FX 5800 128

Красиво но с близкого расстояния как-то странно кажется что текстура смещается в след за светом и становится мутной
Фпс =скачет 1875 или 2000

при повторном запуске если куб убрать из поля зрения то появляется
ошибка 11 (деление на 0)

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.04.2005 (Вс) 19:31

P4 2000, 1024 RAM, NVIDIA GeForce4 Ti4200/64MB - 290-300 fps
Моду создают модоки, а распространяют модозвоны.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.04.2005 (Вс) 22:14

Часть вторая. В помещении.

В общем у меня это терья часть, так как вторая была чистка багов. Скорость в данном примере не очень, потому что обрабатываются уже не 12, а около 1000 полигонов... Оптимизации пока никакой ((

Выкладываю посмотреть =)
Последний раз редактировалось d3drm 04.04.2005 (Пн) 23:50, всего редактировалось 1 раз.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.04.2005 (Пн) 0:23

"Отлично! Темно, как ... - там не был".
Пришлось подтянуть яркость текстур.
Эффект очень симпатичный, мне понравилось.
GF2MX400 - 34 FPS.
При случае расскажешь как делал?
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.04.2005 (Пн) 0:40

Yurich писал(а):При случае расскажешь как делал?


ОК, как пиво пойдем пить, обязательно расскажу =)

Ну а если серьезно, что ничего там супер сложного нет, бампмэппинг+коррекция по точкам полигона (попиксельное освещение здесь только как эффект рельефное поверхности, основная идея - вертексная). Благодаря тому, что освещение реализуется не средставми DX а своим кодом можно придумывать свои способы освещения. Например сдесь я не использовал возведение радиуса источника в квадрат, так освещение получается мягче, хотя и темно как "там, где не был" ))

В планах добавить стенсильные тени на карту чтобы получить картинку близкую к Doom III. Думаю это возможно.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.04.2005 (Пн) 0:55

d3drm писал(а):
Yurich писал(а):При случае расскажешь как делал?

ОК, как пиво пойдем пить, обязательно расскажу =)
Ну а если серьезно,...

Да, ...! Ничего не мо быть серьёзней беседы за бутыльком пива!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 04.04.2005 (Пн) 7:07

C-1800;512 DDR;Radeon 9000 Pro 128
Часть 1) fps скачет от чёрт знает скольки до чёрт знает скольки. Кажется от 400 до 1500. Солидный разрыв. Зависит от положения света - если он за кубом, то 1500, а если перед, то 400. А так, честно слово - fps не видно нормальному глазу. Скачет как бешенное. Ты бы его усреднил, чтоб менялось медленнее. Или такая проблема только у меня?
Часть 3) fps - 110. Вот здесь уже поинтереснее. :) :thumright: Так то вообще супер, но вообще реально получить красивое точечное и Яркое освещение? Или сожрёт все МГц даже у пня? Я как то пробовал, но у меня не получилось ввиду малополигональности пола и стен(2 треугольника).

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 04.04.2005 (Пн) 17:17

Athlon XP 2500>>3200
512 DualDDR
64 Mb Ti4200
1024*768*32
WinXP
Первый пример 960 fps.
Второй пример 280 fps.

А исходника не будет? Интересует хотя бы инициализация - формат вертекса и текстур, рендерстейты и текстурестейджстейты, а то в SDK по этой теме сплошные ошибки :cry: Как понять, например, это:
Call d3dDevice.SetTextureStageStateSingle(1, D3DTSS_BUMPENVMAT00, 1#)
Call d3dDevice.SetTextureStageStateSingle(1, D3DTSS_BUMPENVMAT01, 0#)
Call d3dDevice.SetTextureStageStateSingle(1, D3DTSS_BUMPENVMAT10, 0#)
Call d3dDevice.SetTextureStageStateSingle(1, D3DTSS_BUMPENVMAT11, 1#)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.04.2005 (Пн) 23:00

прошу прощения, в виду того, что некоторые любят __здить код, который для этого не предполагается, не выкладываю исходники. Yurich,
Mikle могу слить на мыло ввиду того, что вы мне очень помогали, сколько тут на форуме сижу, поэтому сдесь или в личку скиньте ваши адреса.


Anatron, как я писал, пока освещение только частью попиксельное. Оно остается вертексным, хотя и рассчитанное собственными ручками, но в добавление к нему идет рассчет бампа для текстуры. В будущем предполагаю перевести код на полный попиксельный агрегат.

На счет яркости. Здесь траблы опять в вертексах. Если использовать Стандартный способ освещения (без attenuation), что-то вроде

Код: Выделить всё
ColScale = (1 - (1 / light.Range) ^ 2 * Dist)


То получается стандартное DX освещение, но оно смотрица некрасиво и не очень реалистично. Я использую практически этот код, только не возвожу во вторую степень. Блики на поверхности сделать тоже не получается так как цвет точки на текстуре не может привышать значение, которое имеется в изображении. Но, думаю, каким-нибудь образом обойду данное препятствие...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.04.2005 (Пн) 23:55

Ой я глупый, а освещение-то я неправильно рассчитывал, вот и вышла бага =(((

Ну ничо, ведь сейчас...

Версия 4. Акселерация.

Разогнал прогу в 3-10 раз в зависимости от того, где находится камера и куда смотрит. Вот интересно, как у вас fps меняться будет.

В общем получилось практически то, что надо, рассчеты отнимают всего где-то треть, а то и меньше скорости рендеринга без них.
Последний раз редактировалось d3drm 06.04.2005 (Ср) 0:14, всего редактировалось 1 раз.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 05.04.2005 (Вт) 2:41

1. Улучшение есть, но незначительное - от 0.5 до 1.5 фпс.
Направление на рум 31-35 фпс (GF2MX400-64, А900)
От него - 130-190 фпс.
Результат, очевиден!
С такой карточкой без серьезной оптимизации далеко не уехать.
2. В первом варианте движение камеры было более плавным.
Видимо теперь сыграла неравномерность загрузки проца
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 05.04.2005 (Вт) 7:54

d3drm
Блики? А почему не использовать карту освещения? А потом делать мультитекстурное наложение.
Кстати, выдирая из движка Doom3. Там было до 6 текстур на каждую поверхность: сама текстурка, её bump, карта освещённости, карта тени, а остальные 2 не помню... А потом всё это красиво складывалось. Ну все понимают, все видели как красиво. :)
После этого я на свои движки без слёз не гляжу...

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.04.2005 (Вт) 8:49

"попиксельное освещение, часть первая."
"Часть вторая. В помещении. "
"Версия 4. Акселерация."
От народа укрыли третью часть! :wink:

А серьезно - мыло ушло в личку, новую версию посмотрю дома, напишу результат.
Интересно, это dot3 ? Если да, то очень не слабо для него, а если нет, то почему работает на GF2MX?

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 05.04.2005 (Вт) 11:24

в веерхнем углу комнаты
фпс=638+

НО ПЕРЕОДИЧЕСКи вылетает с ошибкой 11

если чесно куб был красивее

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.04.2005 (Вт) 11:40

Bonesnapper писал(а):в веерхнем углу комнаты
фпс=638+

НО ПЕРЕОДИЧЕСКи вылетает с ошибкой 11

если чесно куб был красивее


думаю если ты заменишь текстуры, красота вернется к примеру :wink:

Mikle, на самом деле скрыли вторую часть, то есть третья была второй, а второй не было вообще =) короче там ничо интересного было - тот же куб но с поправкой на радиус освещения.

Anatron, да, есть на чем поработать =) Блики возможно смогу сделать с применением пиксельных шейдеров, думаю может получиться неплохо.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.04.2005 (Вт) 14:11

FPS быстро мелькает в пределах 6XX-9XX, тяжело разобрать. При пролете сквозь стену выше 2000.
Mail получил, Thanks.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.04.2005 (Вт) 21:31

OK, теперь предлагаю подумать над выявлением багов. вот если замените карту, то увидите, что что-то не то с освещением... Пока не придумал как исправить (((

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.04.2005 (Ср) 0:25

вроде получилось баг исправить... Вот пятый вариант с комнатой и 3мя текстурами.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 06.04.2005 (Ср) 0:34

d3drm писал(а):вроде получилось баг исправить... Вот пятый вариант с комнатой и 3мя текстурами.

Чуток я не успел!!!
d3drm писал(а):OK, теперь предлагаю подумать над выявлением багов. вот если замените карту, то увидите, что что-то не то с освещением... Пока не придумал как исправить (((

Соображения:
1. Если подставить Device.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE, то баг проявляется аналогично и в варианте с Room.x
2. Если 1 верно !!!, можно считать, что индексы поверхностей вычисляются правильно и этим пренебрегаем.
3. Если 2 верно (по крайней мере я так думаю), то сами по себе нормали стен в определении присутствия блика не должны играть рояли. Тем более для тех случаев, если стена окажется двусторонней!!!
4. Вах, и 3 верно!!! А значит тогда подключаем к проверке камеру
Если к-ты источника света и камеры одновременно больше или
меньше к-т стены - блик на стене есть.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.04.2005 (Ср) 1:09

Yurich, в том то и фишка, что свет не должен освещать невидимые грани. Я отправил тебе код, протестируй, скажи что да как...

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 06.04.2005 (Ср) 1:16

Здается, что в последнем примере был де-факто изменен облет источника света. Имеет сенс, но только когда наблюдатель и источник заведомо будут в одной зоне. Для игры это неприемлемо. Например, простая игровая ситуация - светящаяся ракета гонится за игроком вдоль короткой стены. Потом игрок спрятался с другой стороны. Окажись она за стенкой - эффект сойдет на нет.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.04.2005 (Ср) 1:27

немного не понял... вроде тоже самое, только немного изменил алгоритм определения источника света относительно ВЕРТЕКСА, а не камеры... Камера вообще не играет никакой роли.

В примере вроде все правильно выглядит, а камера летает свободно, без ограничений.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 06.04.2005 (Ср) 1:44

d3drm писал(а):немного не понял... вроде тоже самое, только немного изменил алгоритм определения источника света относительно ВЕРТЕКСА, а не камеры... Камера вообще не играет никакой роли.
В примере вроде все правильно выглядит, а камера летает свободно, без ограничений.

Вот в том - то!!!
Я повторю, подставь перед циклом рендера
Device.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE
Выскочи за пределы бокса. Стенки светятся снаружи. Но источник-то остался внутри!!! И это будет касаемо всех стенок, даже просто смотрящих на тебя.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.04.2005 (Ср) 1:48

Ну так и должно быть! Не надо включать двойную прорисовку. Полигон нормально освещается, если источник света перед ним. Зачем тебе этот CULLMODE понадобился. в играх он не используется для ординарных стен, только для разных эффектов.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 06.04.2005 (Ср) 18:20

d3drm писал(а):Ну так и должно быть

Хорошо!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList