HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено Дядя Миша 03-04-2020 в 14:14:
Помоему там Poisson Disk обычный.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено SNMetamorph 03-04-2020 в 15:54:
Может кто нибудь обьяснить как работает алгоритм пересечения луча и AABB? Рою интернет, уже довольно много информации нашёл, но вообще не могу разобраться.
__________________
Мой сайт
Xash3D Modding Discord
Отправлено ncuxonaT 03-04-2020 в 17:46:
SNMetamorph вот тут достаточно толково описан алгоритм
https://www.scratchapixel.com/lesso...ox-intersection
Добавлено 03-04-2020 в 20:46:
Мне неоднократно попадалась информация, что видеокарта рисует пиксели не по одному, а блоком. И к следующему блоку не приступает, пока не закончит предыдущий. Время отрисовки блока определяется самым медленным его пикселем. То есть если отбрасывать часть пикселей из блока дискардом, на производительность это повлияет слабо.
Я решил проверить это и заодно узнать размер блока. Рендерил один и тот же кадр, отбрасывая часть пикселей либо в шахматном порядке, либо линиями (см. иллюстрации). Замерял фпс для разных размеров шашечек/линий. Во всех случаях количество отрисованных пикселей одинаковое.
С интерпретацией результатов возникли проблемы. Кто-нибудь может объяснить, почему такая разница в фпс между шашками и линиями при размере в 16 пикселей? Правильно ли я понимаю, что размер блока можно считать равным 32х32? На других видеокартах всё может быть иначе?




Отправлено Дядя Миша 03-04-2020 в 18:18:
Смысл забивать голову? Он работает, этого достаточно.
Добавлено 03-04-2020 в 21:18:
Цитата:
ncuxonaT писал:
видеокарта рисует пиксели не по одному, а блоком. И к следующему блоку не приступает, пока не закончит предыдущий
Очевидно растеризуемое пространство делится на квадратики и каждому конвейеру достаётся свой квадратик. Чтобы каждый конвейер рисовал свой пиксель - о таком я не слышал, судя по всему это провоцирует промахи кэша и замедлит работу. К примеру texture2D сразу четыре пикселя за раз читает. Цитата:
ncuxonaT писал:
Время отрисовки блока определяется самым медленным его пикселем.
ну очевидно все конвейеры должны завершить свою работу.
Цитата:
ncuxonaT писал:
Рендерил один и тот же кадр, отбрасывая часть пикселей либо в шахматном порядке, либо линиями (см. иллюстрации).
шо-то ты не то тестировал.
Можно попробовать вот такой фокус (в реальных приложениях так делать нелья, но для теста вполне) - читать и писать в одну и ту же FBO текстуру.
Например сделать стекло. Она у тебя замерцает квадратами и ты сможешь увидеть размер блока.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ncuxonaT 03-04-2020 в 21:32:
Цитата:
Дядя Миша писал:
шо-то ты не то тестировал.
Ну я надеялся попасть в размер блока, чтобы часть блоков отбрасывалась целиком. И на этом моменте наблюдался бы скачок фпс. Собственно, он и наблюдается, только почему-то разный результат для линий и шашек.
Цитата:
Дядя Миша писал:
Можно попробовать вот такой фокус (в реальных приложениях так делать нелья, но для теста вполне) - читать и писать в одну и ту же FBO текстуру.
Например сделать стекло. Она у тебя замерцает квадратами и ты сможешь увидеть размер блока.
Попробовал. Как ни странно, нет никаких артефактов, ничего не мерцает даже на 10 стеклах подряд.
Отправлено SNMetamorph 04-04-2020 в 01:05:
Цитата:
ncuxonaT писал:
Ну я надеялся попасть в размер блока, чтобы часть блоков отбрасывалась целиком. И на этом моменте наблюдался бы скачок фпс. Собственно, он и наблюдается, только почему-то разный результат для линий и шашек.
Попробовал. Как ни странно, нет никаких артефактов, ничего не мерцает даже на 10 стеклах подряд.
Попробуй поиграть с FPS и всинх отключить, может быть это как-то влияет__________________
Мой сайт
Xash3D Modding Discord
Отправлено Дядя Миша 04-04-2020 в 07:19:
Цитата:
ncuxonaT писал:
Попробовал.
MRT надо. и glReadBuffer( GL_NONE );__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Lev 04-04-2020 в 15:58:
Вопрос к знающим: как можно оптимизировать террейн, сделанный в Terrain Generator? Дело в том, что мне нужно сделать довольно большой уровень с открытой местностью, террейн этот вопрос решает неплохо(учитывая, что делаю я в Paranoia 2 v1.51 и вопрос с его окраской буду решать с помощью слоёв в рендере). Но полигонов очень много - и, что самое неудобное, после экспорта в Джек Хамер я не могу нормально нанести Null-текстуру на невидимые грани(там все полигоны как отдельные маленькие браши) - в ручную это почти невозможно, их слишком много. Может их можно как-то объединить уже в Джек Хамере?
Отправлено Дядя Миша 04-04-2020 в 17:30:
Этих программок - две штуки. И вот одна из них сама красит нуллом бока. Открываешь уровень в блокноте и автозаменой меняешь NULL на SOLIDHINT.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ncuxonaT 04-04-2020 в 18:22:
Цитата:
SNMetamorph писал:
Попробуй поиграть с FPS и всинх отключить, может быть это как-то влияет
Всинк выключен, фпс варьируется от 400 на одном стекле, до 100 на десяти, но ничего не меняется.
Цитата:
Дядя Миша писал:
MRT надо. и glReadBuffer( GL_NONE );
glReadBuffer( GL_NONE ) никак не влияет
Зачем МРТ? Рендер во фреймбуффер, к нему привязана текстура, эту же текстуру стекло использует.
Добавлено 04-04-2020 в 21:22:
Получилось, короче. Оказывается, можно без последствий читать из текстуры, в которую пишешь, если пишешь в тот же пиксель, что читаешь. Инвертировал у стекла текстурную координату по х, и вот они артефакты. Что интересно, рендерится, судя по всему, блоками в шахматном порядке, последовательно разбивая их от 32х32 до 4х4
Отправлено Дядя Миша 04-04-2020 в 18:57:
Цитата:
ncuxonaT писал:
Оказывается, можно без последствий читать из текстуры, в которую пишешь, если пишешь в тот же пиксель, что читаешь.
В свой - да, я думал ты догадаешься заглянуть в соседей.
Добавлено 04-04-2020 в 21:57:
Цитата:
ncuxonaT писал:
блоками в шахматном порядке, последовательно разбивая их от 32х32 до 4х4
ну я бы не стал по нештатной ситуации делать далекоидущие выводы. Это просто как наглядный пример.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено JPEG 05-04-2020 в 08:37:
Цитата:
Lev писал:
Вопрос к знающим: как можно оптимизировать террейн, сделанный в Terrain Generator? Дело в том, что мне нужно сделать довольно большой уровень с открытой местностью, террейн этот вопрос решает неплохо(учитывая, что делаю я в Paranoia 2 v1.51 и вопрос с его окраской буду решать с помощью слоёв в рендере). Но полигонов очень много - и, что самое неудобное, после экспорта в Джек Хамер я не могу нормально нанести Null-текстуру на невидимые грани(там все полигоны как отдельные маленькие браши) - в ручную это почти невозможно, их слишком много. Может их можно как-то объединить уже в Джек Хамере?
могу лишь посоветовать попробовать как альтернативу - GenSurf, с ним проблем не возникало__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Lev 05-04-2020 в 09:51:
Yo Den А он понимает карты высот? Я ведь сначала в geocontrol 2 делаю - и сохраняю в хейтмапу.
Отправлено JPEG 05-04-2020 в 09:54:
Цитата:
Lev писал:
Yo Den А он понимает карты высот? Я ведь сначала в geocontrol 2 делаю - и сохраняю в хейтмапу.
да, понимает. Пример работы https://csm.dev/threads/skrinshoty-...126#post-965744__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Lev 05-04-2020 в 10:52:
Цитата:
Дядя Миша писал:
Этих программок - две штуки. И вот одна из них сама красит нуллом бока. Открываешь уровень в блокноте и автозаменой меняешь NULL на SOLIDHINT.
Ты о каком формате говоришь? MAP или RMF? Чёт не пойму я, где там опция по отсечению граней.