Урок 6 - Тени от объектов (комментарии)
Это сообщение сгенерировано автоматически.
KpeHDeJIb
Ты бы это, лучше соответствующую тему сделал в разделе графика, а то большинству новичков просто скила не хватит увидеть статью, и тем более задать вопросы по ней в каком то там тайном и загадочном сообществе.
.Scotina
> Ты бы это, лучше соответствующую тему сделал в разделе графика, а то
> большинству новичков просто скила не хватит увидеть статью, и тем более задать
> вопросы по ней в каком то там тайном и загадочном сообществе.
Там была тема, и об уроке там было написано, вопросов не было, я же не могу тему бампать постоянно, а прикрепленные темы делать мне никто не даст.
KpeHDeJIb
> а прикрепленные темы делать мне никто не даст.
а что, можно и такие делать? :)
Sergio
> а что, можно и такие делать? :)
Насколько мне известно нет, что даже к лучшему :)
KpeHDeJIb
> Там была тема, и об уроке там было написано, вопросов не было
Новичкам часто нужна лишь геометрия, камера, и простое освещение. Получив представление, как с этим работать, можно уже браться за логику игрушки, а все красоты отложить "на потом". Поэтому, наверное, и вопросов мало.
У меня был только вопрос про черный амбиент, но с ним я разобрался - в шейдере урока цвет целиком на shadow умножается. Я умножил только диффуз и спекуляр, теперь доволен :)
Когда соберусь к ландшафту тень прикручивать - будут вопросы :)
Я не совсем понимаю, как работает вот это:
LightDefault(directionalLight, LT_DIRECTIONAL); directionalLight.position.set( 3.0f, 3.0f, 3.0f, 0.0f); CameraLookAt( lightCamera, directionalLight.position, -directionalLight.position, vec3_y);
Как после этого будет располагаться камера в мировом пространстве?
Pixar
> Как после этого будет располагаться камера в мировом пространстве?
Камера будет находиться в позиции directionalLight.position, будет направлена на точку -directionalLight.position и вектор вверх ориентировочно будет направлен в сторону vec3(0, 1, 0).
>Обладая информацией о глубине фрагмента относительно камеры источника освещения и относительно камеры наблюдателя мы можем сравнить эти два значения и узнать, находится ли этот фрагмент в тени другого в пространстве источника освещения.
А как информация о глубине фрагмента со стороны источника освещения и о глубине со стороны наблюдателя позволяет определить, что фрагмент в тени? Я не понимаю это даже просто концептуально. Вот, допустим, источник света видит, что до какой-то точки расстояние 100, а камера видит, что расстояние до той же самой точки - 50. И что? =)
Pixar
Нарисовали сцену с позиции света.
Рисуем сцену с позиции камеры. Глубину камеры переводим в пространство света. То есть мы знаем глубину как если бы это был рендер с позиции света.
Мы сравниваем две глубины, какая глубина дальше от света, тот пиксел в тени.
Кажется я понял. При первом проходе, во время рендеринга z-buffer затирается ближайшими к источнику света вершинами. А во время второго прохода, мы рендерим вершину опять же для источника освещения, но она уже не затирается более близкими для источника вершинами, и мы получаем расстояние от источника до вершины. Поэтому, если в z-buffere на том месте, куда должна была спроецироваться эта вершина, глубина меньше, чем только что полученная, значит, во время первого рендеринга эта вершина была затёрта более близкой вершиной, а значит эта вершина в тени.
Pixar
> о глубине со стороны наблюдателя
Значит, берётся-то не глубина со стороны наблюдателя, а опять же - глубина со стороны светильника, только это значение уже не затирается ))
PS: помогает - Shadow Mapping
Ничего не затирается. Рендерится сцена в текстуру со стороны источника света. Потом рендерится сцена в камеру и вот тут происходит сравнение текущего фрагмента с тем, что в текстуре.
Executor
> Потом рендерится сцена в камеру
и рендерится снова в источник освещения - вот этого мне не хватало для понимания =)
Что значит снова? С позиции источника света рендерится один раз и один раз с камеры. Два рендера на всё.
Тема в архиве.