Сообщения на форуме пользователя Andrey (28 стр.)
Rage | 8 окт. 2011 | 8:22 | #313 |
---|
CD
> Очевидно, используется OpenGL, несмотря на все косяки которые из-за его
> использования происходят
Интеренсные расширения используют...
зачем мультитекстурирование в 2011 году? Где поддержка "провославного" GLSL ?
Еще используется ARB программы ????? ну если на nVidia что GL_NV_fragment_program2 и GL_NV_vertex_program3 это лучшее решение если карта не тянет Direct3D10 и выше. А что-же на ATI?
кстати какие функции внутри exe.dll тянутся из opengl32.dll, glu32.dll ? есть старый хлам типа glBegin/glend ? есть дисплейные списки? есть работа с матрицами через всякий хлам glTranslate и т.д. ?посмотрите через Dependency Walker
> Очевидно, используется OpenGL, несмотря на все косяки которые из-за его
> использования происходят

Интеренсные расширения используют...
зачем мультитекстурирование в 2011 году? Где поддержка "провославного" GLSL ?
Еще используется ARB программы ????? ну если на nVidia что GL_NV_fragment_program2 и GL_NV_vertex_program3 это лучшее решение если карта не тянет Direct3D10 и выше. А что-же на ATI?
кстати какие функции внутри exe.dll тянутся из opengl32.dll, glu32.dll ? есть старый хлам типа glBegin/glend ? есть дисплейные списки? есть работа с матрицами через всякий хлам glTranslate и т.д. ?посмотрите через Dependency Walker
Отладка Direct3D 9 ошибки | 29 сен. 2011 | 15:25 | #24 |
---|
Executor
>> Часто бывают глюки, когда на одном компьютере работает так, а на другом по-другому.
>Не поверишь, но на ДХ9 тоже самое имеет место быть.
В единичных случаях. Из 20 машин в офисе Direct3D9 не работал на современной nVidia карте, оказалось совсем просто, стояли старые дрова 3-летней давности.
>Но никто не застрахован от ошибок драйвера в обоих случаях.
В OpenGL это будет в разы больше.
>Переходить с ГЛя на ДХ только ради мифической стабильности - ИМХО плохая идея.
Стабильность реальная как у меня так и у других.
> Если проект коммерческий, то напрасная трата времени и денег ИМХО.
>Будут вместо одних проблем со стабильностью, другие. Вот и вся разница.
Убрал в топку OpenGL переписал на Direct3D9, код стал проще, разные результаты на разных видюхах были замечены, только при моей ошибке, движок на Direct3D9 работает лучше чем на OpenGL, особенно на Intel GMA 950, у заказчика есть такие машины и за это платят деньги, проблем переходом OpenGL->Direct3D9 не было и не будет, уверен на 100%, даже тени появились на картах с SM 2.0, попытки разбираться почему не скопилился не слинковался GLSL не привели к результату, даже innuendo сказал странно и все...
Что я делаю не так?
>> Часто бывают глюки, когда на одном компьютере работает так, а на другом по-другому.
>Не поверишь, но на ДХ9 тоже самое имеет место быть.
В единичных случаях. Из 20 машин в офисе Direct3D9 не работал на современной nVidia карте, оказалось совсем просто, стояли старые дрова 3-летней давности.
>Но никто не застрахован от ошибок драйвера в обоих случаях.
В OpenGL это будет в разы больше.
>Переходить с ГЛя на ДХ только ради мифической стабильности - ИМХО плохая идея.
Стабильность реальная как у меня так и у других.
> Если проект коммерческий, то напрасная трата времени и денег ИМХО.
>Будут вместо одних проблем со стабильностью, другие. Вот и вся разница.
Убрал в топку OpenGL переписал на Direct3D9, код стал проще, разные результаты на разных видюхах были замечены, только при моей ошибке, движок на Direct3D9 работает лучше чем на OpenGL, особенно на Intel GMA 950, у заказчика есть такие машины и за это платят деньги, проблем переходом OpenGL->Direct3D9 не было и не будет, уверен на 100%, даже тени появились на картах с SM 2.0, попытки разбираться почему не скопилился не слинковался GLSL не привели к результату, даже innuendo сказал странно и все...
Что я делаю не так?
ARB Шейдеры в OpenGL - как юзать? | 26 сен. 2011 | 16:14 | #1 |
---|
Shapirlic
>подскажите как правильно его юзать
>Как передать ему текстуры
текстуры передавать не нужно, делай как обычно
glActiveTexture, glBindTexture, шейдер сам прочитает их из регистров
>параметры и т.д
glProgramLocalParameter4fvARB и т.д., лучше смотри расширение GL_EXT_GPU_program_parameters
>И помогите именно не теорией,а кодом именно к этому конкретному шейдеру.Разъясните мне пожалуйста, какая текстура в этом шейдере за что отвечает.
А вот на это даже не надейся, копай сам. Начинай с раширения GL_ARB_fragment_program и вперед.
И вообще это уже сильно устарело.
>подскажите как правильно его юзать
gl.glEnable(GL_FRAGMENT_PROGRAM_ARB); gl.glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, refract_id);
текстуры передавать не нужно, делай как обычно
glActiveTexture, glBindTexture, шейдер сам прочитает их из регистров
>параметры и т.д
glProgramLocalParameter4fvARB и т.д., лучше смотри расширение GL_EXT_GPU_program_parameters
>И помогите именно не теорией,а кодом именно к этому конкретному шейдеру.Разъясните мне пожалуйста, какая текстура в этом шейдере за что отвечает.
А вот на это даже не надейся, копай сам. Начинай с раширения GL_ARB_fragment_program и вперед.
И вообще это уже сильно устарело.
Shared Pointer + наследование | 22 сен. 2011 | 15:08 | #16 |
---|
Sergio
>И это... может покажешь мастерство джедая - как надо сделать?
да какое там джедайство, Кешь промахи большое зло. CPU нужно раскачивать видюху + что-то еще полезное делать, вместо ожидания чтений/записей в память.
>_vertexData = new VertexArray(decl, _dimension.square());
Если машинка на ландшафте и 5 буферов то еще ничего, а сложная сцена с тысячами объектов в кадре?
Не нужно это делать динамически, у меня даже для мультирендера нету выделения динамического для буферов, текстур и т.д. для D3D/OGL.
Не нужно практически в большом числе случаев всякие бустовые модные указатели да еще в связке std::list.
>например, список клиентов при подсоединении в игру
зачем там именно std::list ?
зачем там именно new Type ?
Число клиентов не ограничено? Как часто клиенты подключаются как часто отключаются?
Зарезервировать место сразу, или просто динамический массив с простым POD типом, где тупой realloc(size + capacity) и все.
>И это... может покажешь мастерство джедая - как надо сделать?
да какое там джедайство, Кешь промахи большое зло. CPU нужно раскачивать видюху + что-то еще полезное делать, вместо ожидания чтений/записей в память.
>_vertexData = new VertexArray(decl, _dimension.square());
Если машинка на ландшафте и 5 буферов то еще ничего, а сложная сцена с тысячами объектов в кадре?
Не нужно это делать динамически, у меня даже для мультирендера нету выделения динамического для буферов, текстур и т.д. для D3D/OGL.
Не нужно практически в большом числе случаев всякие бустовые модные указатели да еще в связке std::list.
>например, список клиентов при подсоединении в игру
зачем там именно std::list ?
зачем там именно new Type ?
Число клиентов не ограничено? Как часто клиенты подключаются как часто отключаются?
Зарезервировать место сразу, или просто динамический массив с простым POD типом, где тупой realloc(size + capacity) и все.
Shared Pointer + наследование | 22 сен. 2011 | 14:07 | #13 |
---|
Sergio
Ужас. Сочувствую CPU на любой платформе...
> typedef std::list<SomeClassRef> SomeClassList; SomeClassList list; ... list.push_back(SomeClassRef(new SomeClass(someParams)));
У кого как зависит fps при сортировке объектов по расстоянию до камеры? | 20 сен. 2011 | 10:51 | #8 |
---|
graveman
1) Возможно неправильный алгоритм quickSortR, попробуй для уверенности заменить на std::sort:
1) Возможно неправильный алгоритм quickSortR, попробуй для уверенности заменить на std::sort:
struct Sorter { bool operator(const TObject* obj1, const TObject* obj2) const { assert(obj1 && "NULL Pointer"); assert(obj2 && "NULL Pointer"); return obj1->m_DistanceSq < obj2->m_DistanceSq; } } std::sort(MyObjects, MyObjects + NUMMESHES, Sorter());
2) MyLog("MyObjects[%d]->m_DistanceSq=%f", i, MyObjects->m_DistanceSq ); - это убьет FPS если объектов много
"ARB_draw_elements_base_vertex" - кто на чём использует? | 8 сен. 2011 | 11:09 | #11 |
---|
innuendo
> сколько семантик в вертексе ?
В том тесте было все просто, вершина нормаль и текстурные координаты.
> сколько семантик в вертексе ?
В том тесте было все просто, вершина нормаль и текстурные координаты.
"ARB_draw_elements_base_vertex" - кто на чём использует? | 8 сен. 2011 | 10:48 | #9 |
---|
Executor
> По сравнению с оффсетом glVertexAttribPointer()?
Значение процентов конечно примерное. Ну явно больше 10%
Ты же кучу функций не вызываешь. А если формат вершины содержит кучу семантик? вот и представь хотя-бы 30 анимированных объектов на сцене со скелетной анимацией, трава качается на ветру и т.д. Каждый объект возможно рисуется по частям. т.е. за 3 дип. Если не использовать это расширение получаем на каждый дип 4-5 вызовов glVertexAttribPointer() или по старинке glTexCoordPointer, glNormalPointer, glColorPointer и т.д. с вычисление указателя.
Если есть это расширение вызываем, то просто ставим стартовую вершину внутри драйвер сам подставит offset проверив текущие смещения для текущего формата буфера.
innuendo
> это сколько в среднем было vertex items ? это один VB на сцену был ?
был 1 VB, что имеешь ввиду под vertex items ? была сложная модель здания высокополигональная(так нужно и все, без обсуждения),несколько материалов, без текстур, куча дипов(около 300). Компилю код без расширения с расширением, запускаю несколько раз смотрю средний FPS. Переписываю код проверяющий расширение и учитывающий расчет указателя смещения(если есть расширение смещение не меняется, тогда выход из функции, устанавливающие смещения при равенстве предыдущего смещения от предыдущего дип'а.). Остаюсь доволен результатом и думаю, какого лешего это расширение не добавлено в 2002 году? или надеялись что glDrawElements будет легче и куча вызовов это все фигня?
> По сравнению с оффсетом glVertexAttribPointer()?
Значение процентов конечно примерное. Ну явно больше 10%
Ты же кучу функций не вызываешь. А если формат вершины содержит кучу семантик? вот и представь хотя-бы 30 анимированных объектов на сцене со скелетной анимацией, трава качается на ветру и т.д. Каждый объект возможно рисуется по частям. т.е. за 3 дип. Если не использовать это расширение получаем на каждый дип 4-5 вызовов glVertexAttribPointer() или по старинке glTexCoordPointer, glNormalPointer, glColorPointer и т.д. с вычисление указателя.
Если есть это расширение вызываем, то просто ставим стартовую вершину внутри драйвер сам подставит offset проверив текущие смещения для текущего формата буфера.
innuendo
> это сколько в среднем было vertex items ? это один VB на сцену был ?
был 1 VB, что имеешь ввиду под vertex items ? была сложная модель здания высокополигональная(так нужно и все, без обсуждения),несколько материалов, без текстур, куча дипов(около 300). Компилю код без расширения с расширением, запускаю несколько раз смотрю средний FPS. Переписываю код проверяющий расширение и учитывающий расчет указателя смещения(если есть расширение смещение не меняется, тогда выход из функции, устанавливающие смещения при равенстве предыдущего смещения от предыдущего дип'а.). Остаюсь доволен результатом и думаю, какого лешего это расширение не добавлено в 2002 году? или надеялись что glDrawElements будет легче и куча вызовов это все фигня?
"ARB_draw_elements_base_vertex" - кто на чём использует? | 8 сен. 2011 | 10:07 | #5 |
---|
Алмаз
На сцене с простыми пиксельными шейдерами где много DIP и тяжелые вершинные, использование этого расширения дает прирост процентов 20%, меньше вызовов API, уменьшает нагрузку на СPU что вполне очевидно, вполне драйвер проводит оптимизацию внутри.
На сцене с простыми пиксельными шейдерами где много DIP и тяжелые вершинные, использование этого расширения дает прирост процентов 20%, меньше вызовов API, уменьшает нагрузку на СPU что вполне очевидно, вполне драйвер проводит оптимизацию внутри.
IDirect3DDevice9Ex + D3DPOOL_MANAGED | 25 авг. 2011 | 15:11 | #7 |
---|
Executor
>A Direct3D 9Ex device never returns D3DERR_DEVICELOST, but can return new status messages (see device behavior changes).
>A Direct3D 9Ex device never returns D3DERR_DEVICELOST, but can return new status messages (see device behavior changes).
>Короче все MANAGED заменить на DEFAULT, выкинуть всё что связано с потерей устройства и будет всё работать?
Будет работать. Нету понятия потери устройства Direct3D, значит все можно в DEFAULT.
OpenGL 4.2 в эфире | 9 авг. 2011 | 10:05 | #24 |
---|
Интересно расширение, GL_ARBmap_buffer_alignment, теперь копирование будет быстрее? чем через GL_ARB_map_buffer_range. ? кто нибудь тестировал?
Сортировка по расстоянию | 2 авг. 2011 | 16:28 | #44 |
---|
XProger
> разумно рендерить сначала непрозрачные объекты (от ближних к дальним)
Я бы еще отсортировал по материалам, а внутри группы объектов с материалами по расстоянию. Вполне это можно сделать за 1 проход сортировки, просто нужно прикинуть что тяжелее установка материала с тяжелыми пиксельными шейдерами или перерисовка пикселей.
> разумно рендерить сначала непрозрачные объекты (от ближних к дальним)
Я бы еще отсортировал по материалам, а внутри группы объектов с материалами по расстоянию. Вполне это можно сделать за 1 проход сортировки, просто нужно прикинуть что тяжелее установка материала с тяжелыми пиксельными шейдерами или перерисовка пикселей.
Несколько объектов в .3ds файле. | 29 июля 2011 | 13:36 | #3 |
---|
Qorlum
Просто рекомендую взять готовую современную либу и получить все что нужно в 3DS
http://code.google.com/p/lib3ds/
Просто рекомендую взять готовую современную либу и получить все что нужно в 3DS
http://code.google.com/p/lib3ds/
Post Process Pipeline | 28 июля 2011 | 10:19 | #15 |
---|
Executor
http://uraldev.ru/articles/id/22
Очень хорошая идея. Я ее реализовал. Работает, очень гибко.
http://uraldev.ru/articles/id/22
Очень хорошая идея. Я ее реализовал. Работает, очень гибко.
Оптимизация отрисовки множественных объектов | 22 июля 2011 | 10:24 | #10 |
---|
rantrave
что за модели? какое освещение? какие текстуры? сложность пиксельных сшейдеров? Будет ли прозрачность? сколько dip на модель?
что за модели? какое освещение? какие текстуры? сложность пиксельных сшейдеров? Будет ли прозрачность? сколько dip на модель?