Пример хороший, респект, но есть недочеты - для начала окно там создается 512х512, но это координаты окна целиком с рамками, т.е. реально выводимая область оказывается меньше - из-за этого когда происходит рендеринг шадоумапа в окно (в смысле его бэкбуфер) и затем копирование из бэкбуфера окна в 512х512 шадоумап получаются неправильно залитые области что дает артефакты при вращении камеры в примере. Помогает увеличение окна до 540х540 или более..
И далее даже после этого случаются артефакты - когда серая точка (как бы light) гоняет туда-сюда над объектами тень от текстуры с альфа-каналом иногда искривляется, думаю это происходит из-за того что при рендеринге в шадоумап используется одна и та же проекция - gluPerspective ( 120, 1, 0.1, 60 ); - может тут надо как-то динамически менять fovy, zNear и zFar? Нет ли для этого какой-нибудь специальной функции (учитывающей bounding box'ы, bounding spher'ы объектов например)?
ЗЫ: И еще в случае если использовать верт. шейдер вместо тексгена (устарел имхо) то как я понял надо будет писать в текс. координату (ну или как-либо названный вариинг vec4) просто координаты объектов (gl_Vertex) умноженные на произведение pr-mv матриц?
Вопросы по примеру с теневыми картами
Сообщений 1 страница 3 из 3
Поделиться12008-11-17 20:11:50
Поделиться22008-11-18 10:20:18
Просто пример очень-очень старый и с кучей глюков.
Конечно нужно корректнее обрабатывать изменение размера окна и использовать вместо бэкбуфера FBO
Ну и шейдеры само собой, к тому же можно ппоюзать линейную фильттрацию для NVidia-карточек
В общем статью и примеры конечно надо переписать, добавив побольше современного материала
Насчет артефактов - к сожалению стандартные shadow map'ы весьма им подвержены.
Если у Вас есть пожелания и предложения, что рассмотреть и поправить для обновленной статьи - пишите сюда
Поделиться32008-12-06 17:02:46
Может быть стоит рассмотреть-таки такие методы sadow map, как PSM, TSM и так далее?