HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > OpenGL > GLSL Shader проблемка.
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



GLSL Shader проблемка.

Вообщем делаю нормал мап шейдер, естесвенно шойдер должен обрабатывать несколько лайтов сразу, так вот если жеж я передаю количество лайтов как:

C++ Source Code:
1
uniform int numlight;
2
...
3
for(int i = 0;i < numlight;i++)
4
{
5
 


То вот этот цикл начинает садить так прилично ФПС. Если задавать константное значение например
C++ Source Code:
for(int i = 0;i < 8;i++)
{

или
C++ Source Code:
for(int i = 0;i < gl_MaxLights;i++)
{


То с фпс всё в порядке. О_о Чем собственно это вызвано? Тестировал на двух карточках (Intel интегрированой, ATI HD6310).

Сообщить модератору | | IP: Записан
Сообщение: 116072

Старое сообщение 25-02-2013 19:32
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Циклы для параллельной архитектуры крайне нежелательны. Делай loop unrolling.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 116074

Старое сообщение 25-02-2013 20:22
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Новые видеокарты поддерживают циклы.
Можно я поиграю в автора тринити?
"Выброси свои видеокарты в помойку и попроси маму с папой купить тебе нормальную!"

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 116081

Старое сообщение 26-02-2013 03:14
-
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 27

Рейтинг



Можно еще для профилактики скомпилить в ARB шейдер

Сообщить модератору | | IP: Записан
Сообщение: 116089

Старое сообщение 26-02-2013 06:44
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


HAWK0044
Ну очевидно же, что не скомпилится. Или ты троллишь?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 116090

Старое сообщение 26-02-2013 07:12
-
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Цитата:
XaeroX писал:
Новые видеокарты поддерживают циклы.
Можно я поиграю в автора тринити?
"Выброси свои видеокарты в помойку и попроси маму с папой купить тебе нормальную!"

Циклы поддерживает и первая и вторая карта. На первой ГЛ 3.0, на АТИ ГЛ 4.1.

Сообщить модератору | | IP: Записан
Сообщение: 116101

Старое сообщение 26-02-2013 09:32
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


pRoxxx
Раз поддерживают - то и фпс не падает. Не парь нам мозги.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 116104

Старое сообщение 26-02-2013 09:40
-
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Цитата:
XaeroX писал:
Раз поддерживают - то и фпс не падает. Не парь нам мозги.

Если бы не поддерживало, то шейдер бы вашпе не работал.

Сообщить модератору | | IP: Записан
Сообщение: 116106

Старое сообщение 26-02-2013 10:11
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


А как тогда работают вершинные программы на GeForce 256 (том-самом, 1999 года выпуска), если тогда шейдеров и в помине не было? Ты слышал про такое слово - "эмуляция"?

Добавлено 26-02-2013 в 17:18:

Цитата:
pRoxxx писал:
Intel интегрированой, ATI HD6310

Обе карточки, кстати, ноутбучные и кастрированные.
Ты проверь на нормальной турбине, занимающей два слота в системнике. Если и на ней фпс просядет - значит, дело не в цикле вовсе.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 116107

Старое сообщение 26-02-2013 10:18
-
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Вообщем решение нашлось.

C++ Source Code:
varying vec3 lightDir[8];

нада почему то весь массив задействовать в Фрагментном шейдере, если не использовать падает ФПС.

Так всё в порядке:
C++ Source Code:
1
for(int i = 0;i < gl_MaxLights;i++)
2
{
3
  bool lightEnabled = (gl_LightSource[i].diffuse.w != 0.0);
4
 
5
  l = normalize(lightDir[i]);
6
  nDotL = max(0.0, dot(nm, l));
7
  if(lightEnabled)
8
  {
9
 
10
    final_color += color * nDotL;
11
  }
12
}

Если сделать воть так:
C++ Source Code:
1
for(int i = 0;i < gl_MaxLights;i++)
2
{
3
  bool lightEnabled = (gl_LightSource[i].diffuse.w != 0.0);
4
  if(lightEnabled)
5
  {
6
    l = normalize(lightDir[i]);
7
    nDotL = max(0.0, dot(nm, l));
8
    final_color += color * nDotL;
9
  }
10
 
11
}

то будет падать фпс, чертовщина ей богу.

Сообщить модератору | | IP: Записан
Сообщение: 116121

Старое сообщение 26-02-2013 14:57
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Циклы, условия крайне нежелательны для параллельной архитектуры.
Если там новые карточки чего-то поддерживают, то на старых фпс так и будет падать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 116127

Старое сообщение 26-02-2013 16:05
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 18:44. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > OpenGL > GLSL Shader проблемка.
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024