Сделать можно, ктож спорит. Выглядеть будет некорректно.
Допустим мы задаём бленд-мод. Это значит железка смешивает пиксели за стеклом с пикселями текстуры стекла и получившееся значение мы умножаем на лайтмапу. А нам надо сперва умножить пиксели текстуры стекла на лайтмапу и потом смешать с пикселями за стеклом.
И вот этот порядок на x86 ты никак иначе не провернёшь, кроме как через копию экрана. Как бы ты не смешивал стекло с тем, что сквозь него видно, это не имеет ровным счётом никакого значения, потому что меняется порядок сложения\умножения.
Эээ. Железка смешивает пиксели за стеклом с тем, что вышло из шейдера (gl_FragColor). Текстура стекла умножается на лайтмапу в шейдере, по желанию прибавляется спекуляр с модификацией альфы. Больше никуда ничего не умножается.
Залил на https://gamebanana.com/games/12828 всё что касается П2, зачем не знаю, может ради того, чтобы было откуда скачать если что, может чтобы привлечь внимание народа. Там раньше был раздел про П2 https://gamebanana.com/games/5539 но его выпилили. Для описания тупо использовал гугл транслейт с ссылкой на тему форума. Полезно для привлечения модеров - написать Ксаш-Параноя-2 оружейная система руководство, о том как писать конфиги, что прописывать в qc файлах моделей.
Это движковый баг, где-то в коде интерполяции там со временем беды, что бывало даже проскакивали кадры с отрицательным фреймтаймом. Погляди мои коммиты в FWGS ксаше, я это фиксил.
Добавлено 25-08-2021 в 23:07:
А ещё, там в дельте был баг с полями с типом DT_TIMEWINDOW, из-за него у энтить скакал animtime сильно и анимации были отвратные. Это тоже в FWGS пофикшено не так давно.
ncuxonaT писал: Объясните, в чем смысл этого условия? Почему нельзя просто умножить?
Приколы с представлением вещественных чисел в компьютерах.
Если к примеру у нас изначально было в переменной записано число 10.0, и мы например его разделили на 2, а зачем умножили на 2, то если где-то далее в коде будет проверка типа "число == 10.0" то остаётся лишь гадать, сработает она или нет, поэтому чтобы таких неопределенностей не возникало, проверяют не равенство между числами, а вхождение числа в какой-то маленький числовой диапазон.
ncuxonaT писал: Я не понимаю, почему нельзя просто умножить на единицу, ничего не сравнивая.
Насколько я помню, чтобы лишний раз не трогать флоаты вообще. Понятно, что при умножении на единицу получится то же самое число, но побитово переменная вполне себе может поменяться как-то, и тогда дельта заметит изменение и отправит это число, хотя т.к. фактически оно не изменилось, этого можно было бы и не делать.