Название: Тени в OpenGL Отправлено: SOL от Ноябрь 01, 2010, 22:37 Здравствуйте. Необходимо создать тени в OpenGL. Сцена - горы с одним направленным источником (солнцем). К сожалению, в весь механизм шейдеров и OpenGL въезжать нет времени.
При попытке создания теней пробовал 2 статьи с gamedev.ru: http://www.gamedev.ru/code/articles/?id=4177 http://www.gamedev.ru/code/articles/ShadowMapGLSL Но к ни одна не подошла по той причине, что компилятор не находит какие-либо gl-овские функции или константы. Не могли бы вы дать ссылку на урок, подходящий для Qt? Или скинуть сорцы простенького примера? Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 02, 2010, 12:45 Насчет функций - поможет glew.
Насчет собственно теней - разочарую, но разбираться с шейдерами _придется_. Кстати, из статей вторая более актуальна. UPD. Чтобы проще было начинать разбираться - советую попробовать поставить RenderMonkey и поковырять хотя бы чуть-чуть шейдеры там. Я например в проекте практически все прототипы делал именно в там, а потом уже переносил в движок. Название: Re: Тени в OpenGL Отправлено: SOL от Ноябрь 02, 2010, 14:41 Благодарю, но сэмпла бы какого-нить подкинуть ;) - был бы вообще рад!
Название: Re: Тени в OpenGL Отправлено: SABROG от Ноябрь 02, 2010, 18:20 В Qt есть интересный класс QGLShaderProgram (http://doc.qt.nokia.com/latest/qglshaderprogram.html), может найдешь какие-нибудь коды в инете.
Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 03, 2010, 10:07 Тут кстати еще такой вопрос - под какое железо это предполагается? Если нужна поддержка интеловских карточек, то скорее всего придется изголяться с Cg и компиляцией в arb-шейдеры, или вообще на директ переползать. Если интеловские карточки не нужны, то все сильно проще.
Название: Re: Тени в OpenGL Отправлено: SOL от Ноябрь 03, 2010, 12:20 С желехом вроде всё ОК, GeForse8600 GTM
Название: Re: Тени в OpenGL Отправлено: Igors от Ноябрь 03, 2010, 13:22 xop, если нетрудно расскажите (в общих чертах) что такое bitmap тень в OpenGL. Для software это текстура (каждая точка float) которая бросается пирамидой от источника. Если расстояние до источника больше значения текстуры - точка в тени. Всегда есть параметр gap (зазор) который пользователю надо подбирать. А как оно в OpenGL? Спасибо
Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 03, 2010, 13:24 А, ну тогда берете вторую статью, которую нашли, качаете последнюю GLEW - и вперед, разбираться с shadow map :)
Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 03, 2010, 13:32 Igors, если shadow map (он сейчас самый распространенный) - то фактически тот же принцип. Рендерим сцену из позиции источника света в текстуру глубины (она обычно 24-битная, как и обычный z-буфер), потом рендерим основную сцену, читая текстуры в шейдере и рассчитывая освещенность. Ну а дальше борьба с артефактами - за счет depth bias/slope (аналог вашего gap наверное), применения искажения перспективы (PSM, LiSPSM, TSM, ...) и/или каскадного подхода для увеличения эффективности использования текстурного места (актуально для глобальных источников света типа солнца на больших пространствах), ну там много всего очень на самом деле. "Devil is in the detail" :)
Название: Re: Тени в OpenGL Отправлено: SOL от Ноябрь 03, 2010, 14:20 В Общем ясно, на Qt пока решил забить, буду делать через MFC.
Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 03, 2010, 14:27 SOL, фигасе поворот событий o_O В связи с чем вдруг так? Кстати, с OpenGL работа и там и там почти не отличается, в Qt даже попроще будет.
Название: Re: Тени в OpenGL Отправлено: SOL от Ноябрь 03, 2010, 14:38 Ну, просто под MFC нашел экзампл рабочий, его проще переделать под мои нужды в отведенные сроки.
Кстати, он из второй статьи :) Название: Re: Тени в OpenGL Отправлено: xop от Ноябрь 03, 2010, 18:05 Кстати, неплохая серия туториалов по современному OpenGL:
http://code.google.com/p/gl33lessons/w/list Правда пока в разработке, но уже есть интересный материал для начинающих. Название: Re: Тени в OpenGL Отправлено: SOL от Ноябрь 03, 2010, 22:32 За последнюю ссылку отдельное спасибо! Всё круто!
|