HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Сортировка прозрачных поверхностей
Хотите об этом поговорить?
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4151

Рейтинг



Сортировка прозрачных поверхностей

Цитата:
XaeroX писал:
Сортировка прозрачных поверхностей = боль, это закон жизни.

Появились вопросы:

  • Здесь имеется в виду ежекадровая сортировка?
  • Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации, если известна точка зрения?
  • Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации при произвольной точке зрения, или нужно BSP-резать?
  • Является ли BSP-нарезка гарантией правильной сортировки?

Сообщить модератору | | IP: Записан
Сообщение: 131331

Старое сообщение 21-01-2014 20:06
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32333
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
nemyax писал:
Здесь имеется в виду ежекадровая сортировка?

Ну мы же не можем предугадать, куда игрока понесёт в следующую секунду? Конечно ежекадровая.
Цитата:
nemyax писал:
Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации, если известна точка зрения?

Алгоритм здесь простой: берешь и сортируешь по дальности. Ничего умнее пока еще не придумали.
Цитата:
nemyax писал:
Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации при произвольной точке зрения, или нужно BSP-резать?

BSP тут никак не поможет, в самом уровне стеклянные дырки делают редко, а бмодели в BSP-дерево не входят.
Цитата:
nemyax писал:
Является ли BSP-нарезка гарантией правильной сортировки?

Только для софтварного рендерера. Аппаратному пофик, т.к. он использует Z-Buffer для сортировки непрозрачных поверхностей.
А прозрачные поверхности нельзя писать в Z-Buffer (потому что они прозрачные), вот и приходится вручную.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 131335

Старое сообщение 21-01-2014 20:28
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34589
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
nemyax писал:
Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации, если известна точка зрения?

http://en.wikipedia.org/wiki/Order-...nt_transparency
http://en.wikipedia.org/wiki/Depth_peeling

Добавлено 22-01-2014 в 03:34:

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

__________________

Сообщить модератору | | IP: Записан
Сообщение: 131337

Старое сообщение 21-01-2014 20:34
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4151

Рейтинг



Цитата:
Дядя Миша писал:
бмодели в BSP-дерево не входят

Я имел в виду заранее построить для модели дерево и порезать ей полигоны соответствующим образом. После такой подготовки будет гарантироваться корректность сортировки с любого ракурса?

Сообщить модератору | | IP: Записан
Сообщение: 131339

Старое сообщение 21-01-2014 20:35
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34589
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
nemyax писал:
После такой подготовки будет гарантироваться корректность сортировки с любого ракурса?

Да.
Под "соответствующим образом" понимается отсутствие пересекающихся полигонов, а также полигонов, лежащих вне плоскостей бсп-дерева (т.е. бсп как в ку1/хл1, но НЕ ку3).

__________________

Сообщить модератору | | IP: Записан
Сообщение: 131341

Старое сообщение 21-01-2014 20:40
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4151

Рейтинг



Цитата:
XaeroX писал:
отсутствие пересекающихся полигонов, а также полигонов, лежащих вне плоскостей бсп-дерева

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

Сообщить модератору | | IP: Записан
Сообщение: 131344

Старое сообщение 21-01-2014 20:52
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34589
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Второе при построении дерева.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 131347

Старое сообщение 21-01-2014 21:01
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4466
Возраст: 34

Рейтинг



Цитата:
XaeroX писал:
http://en.wikipedia.org/wiki/Order-independent_transparency

Цитата:
The Sega Dreamcast games console included hardware support for automatic OIT.

И это в 1998 году, за десять(!) лет до DirectX 11.

Сообщить модератору | | IP: Записан
Сообщение: 131352

Старое сообщение 22-01-2014 03:36
- За что?
GioHAUS0n
Житель форума
Девойс

Дата регистрации: Feb 2013
Проживает: N/A
Сообщений: 660

Рейтинг



Цитата:
Crystallize писал:
The Sega Dreamcast games console included hardware support for automatic OIT.


"Зомби-Приставка" меня всегда радовала, что она была первой от PS2, GC, Xbox.

Добавлено 22-01-2014 в 18:52:

PS. Точнее 1999:
http://msdn.microsoft.com/en-us/library/ms834190.aspx

Сообщить модератору | | IP: Записан
Сообщение: 131358

Старое сообщение 22-01-2014 08:52
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4466
Возраст: 34

Рейтинг



Цитата:
GioHAUS0n писал:
PS. Точнее 1999:

В Японии вышла в 1998, в Америке-через год.

Я даже где-то видел инструкцию, не помню насколько подробную, как сделать OIT на GeForce 3, нестандартным образом используя механизм отрисовки теней.

Сообщить модератору | | IP: Записан
Сообщение: 131359

Старое сообщение 22-01-2014 09:41
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4151

Рейтинг



Мне казалось, что сортировка на лету — обыденная вещь, которая есть во всех движковых рендерерах, кроме ну самых захудалых (превед, Dark Engine). А оно вон оно чё михалыч.
А в каких движках она всё-таки реализована грамотно?

Сообщить модератору | | IP: Записан
Сообщение: 131366

Старое сообщение 22-01-2014 12:11
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4466
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
Алгоритм здесь простой: берешь и сортируешь по дальности. Ничего умнее пока еще не придумали.

Я на этом как-то застопорился. Полигоны-это же не точки, чтобы однозначно определять расстояние до них. До какой точки полигона считается расстояние до него?

Сообщить модератору | | IP: Записан
Сообщение: 131370

Старое сообщение 22-01-2014 13:22
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4151

Рейтинг



До ближайшей, судя по всему.

Сообщить модератору | | IP: Записан
Сообщение: 131371

Старое сообщение 22-01-2014 13:30
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34589
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Crystallize писал:
До какой точки полигона считается расстояние до него?

В джеке - то центра фейса.
А вообще - какую точку не возьмёшь, глюки будут при том или ином раскладе.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 131372

Старое сообщение 22-01-2014 13:58
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32333
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Crystallize писал:
The Sega Dreamcast games console included hardware support for automatic OIT.

Да пофигу на самом деле. Сейчас можно всё это через шейдеры сделать.
Цитата:
nemyax писал:
Я имел в виду заранее построить для модели дерево и порезать ей полигоны соответствующим образом

Ты понимаешь, что сортировать надо не полигоны внутри модели, а ВООБЩЕ ВСЕ полупрозрачные полигоны, которые попали во фрустум?
Без разницы какой модели они принадлежат. Иначе сортировка будет неправильной.
Цитата:
nemyax писал:
А в каких движках она всё-таки реализована грамотно?

В ксаше - более-менее грамотно, надеюсь в новом рендерере ксаш-мода будет совершенно правильной.
Цитата:
Crystallize писал:
До какой точки полигона считается расстояние до него?

Да, это правильный вопрос. Можно считать до центра, но будут глюки.
Ксаш использует механизм рассчёта не до точки, а до плоскости (PlaneDist). Это наиболее надёжный метод. Хотя тоже иногда подлагивает, например на крутящихся полупрозрачных брашах.
Есть и другие случаи, но в реальной игре вы их не встретите. Разве что в синтетическом тесте.

Добавлено 22-01-2014 в 19:39:

Вот псевдокод:
C++ Source Code:
dist = DotProduct( surface->origin, cam->forward ) - DotProduct( cam->origin, cam->forward );

Для каждой плоскости вычисляется вот такая дистанция, потом они сортируются через банальный qsort.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 131380

Старое сообщение 22-01-2014 15:39
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:52. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Сортировка прозрачных поверхностей
Хотите об этом поговорить?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024