crypt of decay - вавум, клипинг [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

вавум, клипинг [Feb. 20th, 2019|09:55 am]
Previous Entry Add to Memories Tell A Friend Next Entry
интересно (но не настолько, чтобы ковырять логи), чья была инициатива засрать клипер всякими ненужными обсечениями? идея рихтовать вертексы в клипере — идиотская идея. из-за этого клипер периодически «простреливал» на определённых углах просмотра. потому что сюрприз! флоаты не infinitely exact. кто бы мог предположить, да… поубирал к хуям эти недооптимизации — клипер стал rock solid, и прострелы исчезли.

а ещё у кого-то (это уже, похоже, Янис) родилась отличная идея делать пирамидку фрустума прямо из точки, где камера висит. не поняли шутки, да? я тоже долго не врубался. экран-то находится немного впереди камеры. и если делать пирамидку без учёта этого факта, то она неправильная, и обсекает больше, чем надо. в рендере это маскировалось (по разным причинам), а когда я попытался добавить вертикальный клип, оно вылезло. очевидно, что если мы у двусторонней стены не видим mid-texture, то эту стену можно считать сплошной и односторонней. я всунул в клипер фрустум — и попёрли баги, когда ебало наклоняешь. весь день тупил. а потом перечитал код — и дошло, откуда пирамидка начинается. бля.

от фрустума же, похоже, и баги с ROR, где полы не сплошные: иногда под «сетчатым» полом было нихуя. симптомы точно те же самые, слишком агрессивное фрустум-отсечение.

надо будет поспать, и впилить правильный фрустум. ради проверки я просто немного отодвинул начало пирамидки назад — и ура, баги пропали. но это неверный подход. то есть, верный, но отодвигать надо так, чтобы плоскости по границам вьювпорта шли. вспомнить бы ещё, как это делается…
Linkабырвалг!

Comments:
From:(Anonymous)
Date:February 20th, 2019 - 12:14 pm
(Link)
макароны?
[User Picture]
From:[info]tzirechnoy
Date:February 22nd, 2019 - 07:30 am
(Link)
Странно, мне казалось, что если с фрустумом так поступить -- то только с Z-буфером фигня приключится, остальное сработает. А где Z-буфера нет -- то и всё хорошо.

Впрочем, если у вас там и правда пирамидка фрустума, а не спроецырованный кубик -- то фиг его знает.
[User Picture]
From:[info]ketmar
Date:February 22nd, 2019 - 11:41 am
(Link)
ты чего-то не того пишешь. в смысле, путаешь фрустум как понятие и glFrustum(), по-моему.

>Впрочем, если у вас там и правда пирамидка фрустума, а не спроецырованный кубик
там, понятно, плоскости. а я забыл математику, и не понимаю, как он их делает. возможно, он их и правильно делает, а баг где-то в другом месте, кто его знает. это думать надо, а мне нечем.
[User Picture]
From:[info]tzirechnoy
Date:February 25th, 2019 - 02:39 pm
(Link)
Ты так говоришь, будто где-то придумали фрустум сильно отличающийся от результатов glFrustum().
[User Picture]
From:[info]ketmar
Date:February 25th, 2019 - 04:54 pm
(Link)
нет, не везде glFrustum() вызывают просто. и да, с фрустумом всё оказалось в порядке, это я с устатку в глаза поебался.
[User Picture]
From:[info]tzirechnoy
Date:February 26th, 2019 - 01:24 pm
(Link)
Вызывают-то да, но glFrustum() внутри -- довольно банальная проекцыя с банальным сравнением результата с нулями всякими -- потому его с какой стороны не делай (до проекцыи, после, вместо) -- результат будет примерно один.