Войти
ФлеймФорумПрограммирование

Real Time Lighting(Потестить)

Страницы: 1 2 Следующая »
#0
2:14, 27 авг. 2009

>WinAPI, GDI
Привет всем!
Вообще давно уже его хотел написать, но всё было лень(хотелось сразу и заоптимизировано).  А тут позавчера решил написать обход препятствий(не grid based). Повозился с пару часиков и понял, что тут тоже можно юзать волновую трассировку. Собственно т.к всё это очень близко к освещению оказалось, решил написать сначала его. Препятствия сделал кружочками одинаковых радиусов, а источник света точечным, для простоты. Ничего не оптимизировал, убил почти целый день получилось вот это.
>скрин
Изображение
>скачать
RTL
Help встроенный.
Feedback: По тестить, по пинать.


#1
3:22, 27 авг. 2009

Работает, особых нареканий не нашел, для GDI очень годно.

* Запускал под Wine из под линукса (запустилось сразу, что есть хорошо)

#2
14:12, 27 авг. 2009

Правильное поведение?
1 | Real Time Lighting(Потестить)

#3
14:13, 27 авг. 2009

Я так понимаю, если свет уходит в бесконечность и ни на что не попадает, то он у тебя не отображается.

#4
20:04, 27 авг. 2009

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

#5
21:40, 27 авг. 2009

Думаю, автор знал о неправильной работе программы, вот и расставил кружёчки "рамочкой".

#6
12:27, 28 авг. 2009

Drazd
Круто :)

Кирюшык
угу.

Elsedar
>Ну кирюшик уже заметил баг.
Это не баг.
>полупрозрачные
GDI загнуться.

Спасибо!

#7
2:05, 1 дек. 2009

Переписал на великом и могучем.

Управление:
  1-4  - Загрузить сохранение.
  H    - Help
  LB  - AddBar
  MB  - SetBar
  RB  - DelBar
  F1  - Нажать после F4 :)
  F4  - Удалить всё.
  F5  - Проверить валидность.
Ctrl+Num сохранить.

LightGDI
Под альтернативными ОС можете не тестировать...

#8
2:29, 1 дек. 2009

В либу это оформить будет, наверное, не слишком просто, а вот следующие вещи, наверное, многим хотелось бы узнать:
- какие структуры данных используешь? в смысле, в каком формате хранится результирующая освещённая область?
- какие оптимизации используешь?
- ну и лично меня больше всего интересует, как ты выводишь изображение. в смысле, конкретная реализация на GDI.

#9
3:52, 1 дек. 2009

Песец что это вообще такое?!
Изображение

#10
12:57, 1 дек. 2009

Suslik
1)На входе, точки с радиусами+координаты источника. На выходе вектор из отрезков. (Если нажать L, то они будут рисоваться линиями).
2)Никаких... совсем никаких.
3)BackBuffer + обычные для GDI полигоны(Polygon).

>В либу это оформить будет...
пустая трата времени.

#11
13:03, 1 дек. 2009

Скриншот во всей красе:
ScreenShot_LightGDI | Real Time Lighting(Потестить)

#12
19:37, 1 дек. 2009

Adler
да, твоё владение примитивами на GDI всё-таки внушает. симпатично оформляешь.

по поводу того, какой толк из этого выжать, можно попытаться написать мини-статейку. но метод, скорее всего, придётся чуть усложнить, потому что препятствия-круги и равномерные тени(ну да, тут уж ограничение GDI) даже не знаю, где могут применяться.

#13
19:42, 1 дек. 2009

Идея, как метод можно переложить на GPU, добавив "затухание" освещения с расстоянием:
Берём большую, на весь экран текстуру с радиально уменьшаяющейся альфой с центром в источнике света.
В такого же размера маску(не принципиально, как она будет реализована) нендерим результирующий полигон - то, что у тебя в программе рисуется оранжевым.
Через такую маску накладываем каким-нибудь высветляющим(luminance, add) методом текстуру из первого пункта, освещая вырезанную по маске часть сцены.

Ну и дополнительные эвристики вроде подвигать немного источник света вокруг своей начальной позиции, чтобы сымитировать некоторую размытость у краёв теней, не точечный источник света.

Скорее всего, это, конечно, баян и существуют методы сделать то же самое нормально.. :/

#14
23:29, 1 дек. 2009

Suslik
> да, твоё владение примитивами на GDI всё-таки внушает. симпатично оформляешь.
)))

>по поводу того, какой толк из этого выжать, можно попытаться написать мини-статейку.
вроде же есть тру способы в 3d как строить свет и тени. Мой на их фоне смотрится детской забавой.

>Берём большую
У меня уже была мысль, но я её выгнал и решил сначала сделать освещение от не точечных источников. В итоге с октября по сей день ничего путного не придумал).

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.