LINUX.ORG.RU

Khronos Group выпустила OpenGL 3.3 и OpenGL 4.0

 , , , ,


0

0

Спустя несколько месяцев с момента релиза спецификаций OpenGL 3.2, Khronos Group опубликовала спецификации для OpenGL 3.3

Неожиданно для всех, также были опубликованы спецификации для OpenGL 4.0, вместе с которым GLSL (GL Shading Language) также обновлен до версии 4.00. OpenGL 4.0 полностью обратно совместим со старыми расширениями OpenGL, используя режим совместимости введеный в OpenGL 3.2.

В OpenGL 4.0 добавлены:

  • расширенная интеграция с OpenCL (Open Computing Language)
  • два новых шейдерных уровня для геометрической тесселяции, задействующие GPU и разгружающие CPU
  • фрагментные шейдеры и программируемые фрагментные шейдеры (per-sample fragment shaders)
  • отрисовка данных, сгенерированных OpenGL или внешними API (OpenCL), без вмешательства центрального процессора
  • поддержка шейдер-подпрограмм
  • разделение состояния текстур и данных текстур
  • 64-х битные операции с плавающей точкой и I/O
  • многочисленные улучшения производительности

Спецификация OpenGL 4.0 (наряду с OpenGL 3.3) доступна для скачивания на OpenGL.org. Спецификация OpenGL 3.3 обеспечивает функциональность OpenGL 4.0 для сохранения совместимости с существующими графическими процессорами.

Предполагается, что NVIDIA в следующем выпуске проприетарного драйвера обновит версию OpenGL до 3.3/4.0. Пока нет никаких комментариев от AMD по этому поводу, но скорее всего OpenGL 4.0 в их драйверах будет через несколько месяцев.

>>> Подробности

★★★★★

Проверено: boombick ()
Последнее исправление: boombick (всего исправлений: 6)

Ответ на: комментарий от namezys

>То есть у тебя отрубилас какрточка совсем?

Случался фриз картинки продожительностью до минуты, за это время гпу остывал и после этого всё продожало работать нормально, пока снова не нагреется.

kranky ★★★★★
()
Ответ на: комментарий от Reset

> Угу, угу. OpenGL это только _3d_ графика, а DX это всё.

Ну да. Есть такое дело. Хотя для звука есть OpenAL.

Кто скажет, что в OpenGL и 2d можно,


Я скажу.


то попробуйте хотя бы вывести видео в формате YUV без дополнительных костылей.


Я вывожу. Хотя преобразование из YUV в BGR я делаю руками в рилтайме.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

> Хотя преобразование из YUV в BGR я делаю руками в рилтайме.

И получаешь нагрузку на процессор, просто замечательно.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> > Хотя преобразование из YUV в BGR я делаю руками в рилтайме.

И получаешь нагрузку на процессор, просто замечательно.


Да это так. Зато свое видео я могу рендерить как любой кусок текстуры - скейлить, красить отдельные вершины своими цветами, морфить, вращать, рендерить в текстуру...

andreyu ★★★★★
()
Ответ на: комментарий от namezys

> По моему это можно в dx делать в YUV

Может и так, но DX нет ни под Mac OS X, ни под Linux. Да и вообще, не нравится мне DX.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

угу, угу, интересно что это за заказчик такой, которому нужны рюшки, а то, что всё будет тормозит ему пофиг?

Reset ★★★★★
()
Ответ на: комментарий от hizel

> мне вот тут не понятно, как спека может влиять на производительность?

производительность программистов же :)

tensai_cirno ★★★★★
()
Ответ на: комментарий от Reset

> можно сделать, чтобы и на opengl не тормозило, но стоит это неимоверных усилий

С удовольствием послушаю, как это сделать.

andreyu ★★★★★
()
Ответ на: комментарий от Reset

> угу, угу, интересно что это за заказчик такой, которому нужны рюшки, а то, что всё будет тормозит ему пофиг?

Я сам себе заказчик. Видеоролик, который проигрывается в игровой сцене, обычно не очень большого разрешения и fps не высокий. Эти преобразования на фоне игрового кода не столь накладны.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

На GLSL вот так. В ассемблер для совместимости с древними видюхами, сам переведешь.

   uniform sampler2D Ytex;
   uniform sampler2D Utex,Vtex;

   void main(void) {
    float nx,ny,r,g,b,y,u,v;
    vec4 txl,ux,vx;
    nx=gl_TexCoord[0].x;
    ny=gl_TexCoord[0].y;
    y=texture2D(Ytex,vec2(nx,ny)).r;
    u=texture2D(Utex,vec2(nx,ny)).r;
    v=texture2D(Vtex,vec2(nx,ny)).r;

    y=1.1643*(y-0.0625);
    u=u-0.5;
    v=v-0.5;

    r=y+1.5958*v;
    g=y-0.39173*u-0.81290*v;
    b=y+2.017*u;

    gl_FragColor=vec4(r,g,b,1.0);
  }
Reset ★★★★★
()
Ответ на: комментарий от note173

> внезапно, шейдером?

И ограничить целевую аудиторию? Кроме того, несколько умножений ничто, по сравнению с апдейтом текстуры в видеопамяти.

andreyu ★★★★★
()
Ответ на: комментарий от Reset

> А когда fps=25 и 128 каналов, то твой вывод поставит раком всю систему.

Всегда можно придумать задачу, которая поставит раком всю систему ;)

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

на dx это решается тривиально, на opengl будут сотни строк кода

Reset ★★★★★
()
Ответ на: комментарий от Reset

> На GLSL вот так. В ассемблер для совместимости с древними видюхами, сам переведешь.

Спасибо, но у меня больший затык не в преобразовании, а в апдейте текстуры.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

> Кроме того, несколько умножений ничто, по сравнению с апдейтом текстуры в видеопамяти.

ты не прав

Reset ★★★★★
()
Ответ на: комментарий от Reset

> > Кроме того, несколько умножений ничто, по сравнению с апдейтом текстуры в видеопамяти.

ты не прав


Не буду спорить, воспользуюсь вашим вариантом с шейдером и сравню рез-ты.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

CUDA или даже OpenCL ограничат целевую аудиторию. Шейдеры ограничат разве что только если ты пишешь под телефоны

note173 ★★★★★
()
Ответ на: комментарий от andreyu

Не забываем, что текстуру надо апдейтить с помощь. texsubimage, а не teximage, чтобы переаллокации не происходило. Может дело в этом ?

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Не забываем, что текстуру надо апдейтить с помощь. texsubimage, а не teximage, чтобы переаллокации не происходило. Может дело в этом ?

Использую glTexSubImage2D(GL_TEXTURE_2D, ).

andreyu ★★★★★
()

OpenGL On Playstation 3

Скажите, господа, как часта в играх на Playstation 3 используется OpenGL и какая версия?

Sadist
()
Ответ на: комментарий от CrossFire

>>два новых шейдерных уровня для геометрической тесселяции

читаем внимательней

madgnu ★★★★★
() автор топика

Я так думаю, нужно довести это до полноценной ОС на базе GPU и выкинуть CPU нафиг.

Fice ★★
()

А при чем здесь линюкс? Современной игровой платформой ему в ближайшие 30 лет не стать. Хоть сотую версию опенгл выпустите, но на ИБиЭм ПэЦэ рулит мелкософт и директ3д.

Компиз, типа, лучше рисовать окошки что ли будет? Дитятю замучали родители. Родителей повесить, а дитятю похоронить.

GluckMan ★★★
()
Ответ на: комментарий от CrossFire

если я не ошибаюсь, это не объемные текстуры, а именно тесселяция, которую как раз и добавили в 4.0

но, сдается мне, что 4.0 аппаратно будут поддерживать только видюхи ATI HD 5xxx и соотв. NVidia - т.е. те же что и аппаратно держат DX 11 :)

zDemoniac
()
Ответ на: комментарий от hizel

> мне вот тут не понятно, как спека может влиять на производительность?

Лихко. Допустим, была функа «НарисоватьТреугольникСРамкой» - очевидно, выпердыш теоретика, не написавшего ничего сложнее тетриса. Потом поняли, что рамка не везде нужна и сделали «НачертитьТреугольник» - стало быстрее :)

Вообще, мне не совсем понятны все эти низкоуровневые «перемножения матриц», «сдвиги»... OpenGL придумывали для чего угодно, только не для игр - как Лисп придумали для чего угодно, только не программирования. :) Т.е. теоретическую основу 3Д в API видно, но настолько примитивная - она не нужна.

matumba ★★★★★
()
Ответ на: Прямой Х адин адин от anonymous

> Чего еще не хватает для полноценной конкуренции с DX11?

Один хрен 95% сидят на DirectX 9с до сих пор.

ubuntulover
()
Ответ на: комментарий от matumba

> мне вот тут не понятно, как спека может влиять на производительность?

Лихко. Допустим, была функа «НарисоватьТреугольникСРамкой» - очевидно, выпердыш теоретика, не написавшего ничего сложнее тетриса. Потом поняли, что рамка не везде нужна и сделали «НачертитьТреугольник» - стало быстрее :)

Ты ещё забыл что в первых спеках нельзя было по-человечески сохранить текстуру, они постоянно билдились каждый раз.

ubuntulover
()
Ответ на: комментарий от Reset

> Кто скажет, что в OpenGL и 2d можно, то попробуйте хотя бы вывести видео в формате YUV без дополнительных костылей.

Типа условие наличие 2д это YUV?

С 2d всё нормально, если не придумывать себе проблем на задницу.

ubuntulover
()
Ответ на: комментарий от CrossFire

если на картинке не просто модель, то это displacement map реализуется с помощью шейдеров первой версии на железе 6-летней давности

note173 ★★★★★
()
Ответ на: комментарий от ubuntulover

это не придумывание проблем, а типичная ситуация в которой opengl со свистом сливает

Reset ★★★★★
()
Ответ на: комментарий от note173

:)
это скриншот из демо «Unigine Heaven benchmark»

конечно, это похоже на дисплейсмент, но данный эффект называется
Hardware tessellation и дает гораздо лучший визуальный результат.
Доступен был ранее только в DX 11

http://www.youtube.com/watch?v=bkKtY2G3FbU

в ролике по ссылке показана техника самого эффекта и сравнение с displacement map.

zDemoniac
()
Ответ на: OpenGL On Playstation 3 от Sadist

Скажите, господа, как часта в играх на Playstation 3 используется OpenGL и какая версия?

OpenGL 2.0 в Playstation 3, для конкуренции с прямоиксом 9 из коробки 360 хватает.

Спецификация OpenGL 3.3 обеспечивает функциональность OpenGL 4.0 для сохранения совместимости с существующими графическими процессорами.

Получается таки возможность запускать программы с OpenGL 4.0 на предыдущих поколениях GPU ограничена только мощностью видеокарт.

если я не ошибаюсь, это не объемные текстуры, а именно тесселяция, которую как раз и добавили в 4.0

Гугл согласен

CrossFire ★★★★★
()
Ответ на: комментарий от note173

ага,причем самой видеокартой, без участия процессора :)

и похоже что такое теперь можно делать и в OpenGL 4.0

zDemoniac
()
Ответ на: комментарий от annulen

вы так рассуждаете как будто opengl - это только игры

это потому что они никогда не видели HMI на OpenKODE :)

jtootf ★★★★★
()
Ответ на: комментарий от andreyu

>Хотя преобразование из YUV в BGR я делаю руками в рилтайме.

Я поступал так же, но это просто бред поскольку современные видюхи (говорю за Nvidia и ATI) умеют YUV аппаратно уже лет десять как, со времен R128 - точно.

A-234 ★★★★★
()
Ответ на: комментарий от A-234

> >Хотя преобразование из YUV в BGR я делаю руками в рилтайме.

Я поступал так же, но это просто бред поскольку современные видюхи (говорю за Nvidia и ATI) умеют YUV аппаратно уже лет десять как, со времен R128 - точно.


Понимаю, но для меня видео - это как тот же спрайт, с тем же функционалом. Я писал об этом выше. Поэтому текстура у меня ABGR или BGR, в зависимости от требований.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.