Показать сообщение отдельно
Старый 22.01.2016, 20:09   #325
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Вполне возможно, что с тенями именно из-за хуков так и получается.

Ща объясню.

У нас, в общем случае, есть три матрицы, Модель, Вид и Проекция (MVP которая). Собственно, на изменении этих матриц и построено всё отображение.

Модельку мы, условно, рисуем со стороны камеры, получаем вид на модель из наших глаз. А вот тени мы должны рисовать со стороны источника света. Надеюсь, что понятно, почему? Так вот, если у нас одна из матриц, участвующих в трансформации, имеет не правильную ориентацию, то мы и увидим совсем не тот результат, который ожидаем увидеть. Т.е., теоритечески это может влиять на мерцание тени.

Но. Ещё такой нюанс есть. ХЗ как тень в игре рисуется. Может в самой тени порядок вершин в полигонах где-то сбит. А значит - у этих полигонов перепутана лицевая и задняя сторона. И если тень рисуется с включенным CullFace и отсечением обратной стороны, то эти полигоны при определённом положении, когда этот полигон повёрнут к источнику света обратной стороной, рисоваться не будут. Ибо нафиг рисовать обратную сторону, которую мы никогда не увидим?

А ещё может быть такая вещь, как z-файтинг. Это когда два фейса на одинаковом удалении лежат и при отрисовке они деруться между собой кто из них выше. Связано с особенностями z-буфер (с его разрядностью заданной при инициализации). Есть такая штука, по крайней мере в OGL (как в DX - не занаю, но наверняка тоже есть), называется PoligonOffset. Через эту штуку можно управлять (в некоторых пределах) порядком вывода полигонов в ситуации, когда они могут иметь одинаковую глубину. Это не всегда работает, но часто помогает. В conf.ini есть возможность менять значения для этой опции. Но крутить её надо не абы как. Предварительно надо почитать статейку про PoligonOffset чтоб понять, как эта штука работает. И потом уже эксперементировать с конкретными значениями. И постоянно име ввиду то, что если помогло в одном месте, то совсем не факт, что в другом не вылезут косяки. Аккуратно, в общем.

Примерно так.

Ну а с рисованием наверно так сделаю. Буду рисовать землю бе6з учёта разворота и с блендингом и слабенько так, как это в хуке задано. Надо только опцию отключения наверное куда-то присобачить. Чтоб не мешалась.

Но вы пока по обсуждайте, я вас внимательно слушаю.
NB79 вне форума   Ответить с цитированием