Russian Qt Forum
Сентябрь 30, 2024, 18:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Тени в OpenGL  (Прочитано 12383 раз)
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? Или скинуть сорцы простенького примера?
Записан
xop
Гость
« Ответ #1 : Ноябрь 02, 2010, 12:45 »

Насчет функций - поможет glew.
Насчет собственно теней - разочарую, но разбираться с шейдерами _придется_.
Кстати, из статей вторая более актуальна.

UPD. Чтобы проще было начинать разбираться - советую попробовать поставить RenderMonkey и поковырять хотя бы чуть-чуть шейдеры там. Я например в проекте практически все прототипы делал именно в там, а потом уже переносил в движок.
« Последнее редактирование: Ноябрь 02, 2010, 12:49 от xop » Записан
SOL
Гость
« Ответ #2 : Ноябрь 02, 2010, 14:41 »

Благодарю, но сэмпла бы какого-нить подкинуть Подмигивающий - был бы вообще рад!
Записан
SABROG
Гость
« Ответ #3 : Ноябрь 02, 2010, 18:20 »

В Qt есть интересный класс QGLShaderProgram, может найдешь какие-нибудь коды в инете.
Записан
xop
Гость
« Ответ #4 : Ноябрь 03, 2010, 10:07 »

Тут кстати еще такой вопрос - под какое железо это предполагается? Если нужна поддержка интеловских карточек, то скорее всего придется изголяться с Cg и компиляцией в arb-шейдеры, или вообще на директ переползать. Если интеловские карточки не нужны, то все сильно проще.
Записан
SOL
Гость
« Ответ #5 : Ноябрь 03, 2010, 12:20 »

С желехом вроде всё ОК, GeForse8600 GTM
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Ноябрь 03, 2010, 13:22 »

xop, если нетрудно расскажите (в общих чертах) что такое bitmap тень в OpenGL. Для software это текстура (каждая точка float) которая бросается пирамидой от источника. Если расстояние до источника больше значения текстуры - точка в тени. Всегда есть параметр gap (зазор) который пользователю надо подбирать. А как оно в OpenGL? Спасибо
Записан
xop
Гость
« Ответ #7 : Ноябрь 03, 2010, 13:24 »

А, ну тогда берете вторую статью, которую нашли, качаете последнюю GLEW - и вперед, разбираться с shadow map Улыбающийся
Записан
xop
Гость
« Ответ #8 : Ноябрь 03, 2010, 13:32 »

Igors, если shadow map (он сейчас самый распространенный) - то фактически тот же принцип. Рендерим сцену из позиции источника света в текстуру глубины (она обычно 24-битная, как и обычный z-буфер), потом рендерим основную сцену, читая текстуры в шейдере и рассчитывая освещенность. Ну а дальше борьба с артефактами - за счет depth bias/slope (аналог вашего gap наверное), применения искажения перспективы (PSM, LiSPSM, TSM, ...) и/или каскадного подхода для увеличения эффективности использования текстурного места (актуально для глобальных источников света типа солнца на больших пространствах), ну там много всего очень на самом деле. "Devil is in the detail" Улыбающийся
Записан
SOL
Гость
« Ответ #9 : Ноябрь 03, 2010, 14:20 »

В Общем ясно, на Qt пока решил забить, буду делать через MFC.
Записан
xop
Гость
« Ответ #10 : Ноябрь 03, 2010, 14:27 »

SOL, фигасе поворот событий o_O В связи с чем вдруг так? Кстати, с OpenGL работа и там и там почти не отличается, в Qt даже попроще будет.
Записан
SOL
Гость
« Ответ #11 : Ноябрь 03, 2010, 14:38 »

Ну, просто под MFC нашел экзампл рабочий, его проще переделать под мои нужды в отведенные сроки.
Кстати, он из второй статьи Улыбающийся
Записан
xop
Гость
« Ответ #12 : Ноябрь 03, 2010, 18:05 »

Кстати, неплохая серия туториалов по современному OpenGL:
http://code.google.com/p/gl33lessons/w/list

Правда пока в разработке, но уже есть интересный материал для начинающих.
Записан
SOL
Гость
« Ответ #13 : Ноябрь 03, 2010, 22:32 »

За последнюю ссылку отдельное спасибо! Всё круто!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 23.