-
Заметки к GLSL шейдерам и их совместимости
Дата: Ноябрь 9th, 2009 Neill Комментариев нетВ ходе работы с шейдерами возникли следующие полезные заметки по совместимости:
1) #version 120 – строка с указанием версии шейдера должна быть самой первой в коде, иначе ATI ругается при компиляции. У меня такая ошибка появилась в результате сборки шейдера из частей.
2) старые ATI и большинство карт INTEL не поддерживают glsl шейдеры, вместо этого у них есть расширения только GL_ARB_VERTEX_PROGRAM, GL_ARB_FRAGMENT_PROGRAM. Выход здесь есть и весьма лаконичный – скачать библиотеку CG от NVidia и перекомпилировать шейдеры в arb программы.
Например: cgc -glsl shader.glsl -profile arbvp1 -o vertex.vp
В данном случае профиль arbvp1 для вершинных программ, а arbfp1 – для фрагментных.
3) В появлением glsl шейдеров, команда glGetString дополнилась новым возможным аргументом GL_SHADING_LANGUAGE_VERSION, который возвращает версию glsl шейдера.
4) У NVidia есть весьма полезная утилита ShaderPerf – анализ шейдера на количество инструкций и скорость выполнения, а также прогонка выполнения шейдера под разные видеокарты и семейства графических чипсетов NVidia. Имеется также возможность сравнить выполнение двух разных шейдеров между собой.
5) не следует указывать вещественные числа с f в конце как 1.0f, достаточно просто написать 1.0. Также ATI очень привередливы к указанию вещественного числа без дробной части.
6) Полезная утилита OpenGL Extension Viewer с базой данных по поддерживаемым расширением для большинства видеокарт. http://www.realtech-vr.com/glview/
Программирование, Графика GLSL, OpenGL, TipsДобавить комментарий



Свежие комментарии