Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Всем привет.
Вот решил открыть темку для тех, кто программирует на Delphi с использованием OpenGL. Начал сейчас слегонца заниматься шейдерами. Опыта мало, инфы так еще меньше. В нете полно, а нормальных описаний нет. Из всех демок понял, что используются ARB расшиения. Ну вроде смог прикрутить загрузку и компиляцию с последующим использованием шейдеров. Берутся два файла, вертексный и фграментный шейдер (нафига правда не понимаю), и после подготовки бзается полченный шейдер. Так вот интересно, одна демка юзает шейдеры в одном формате на языке GLSL
Другая демка испоьзуя почти техе процедуры, но немного по другому юзает щейдеры в таком виде.
Код:
!!ARBfp1.0
# Fragment inputs ATTRIB inTexCoord = fragment.texcoord; # First set of texture coordinates ATTRIB inColor = fragment.color.primary; # Diffuse interpolated color
# Fragment outputs OUTPUT outColor = result.color;
MUL outColor, texelColor, inColor; # Modulate texel color with vertex color #ADD outColor, texelColor, inColor; # Add texel color to vertex color
END
Так и не понял, а как правильно?
Давайте пообсуждаем, кто что знает, поделимся опытом. Ведь тема интересная.
Я к примеру взяв один шейдер, который по идее в демке делал четкие блики на текстурах, присобачил к себе, так у меня почемуто текстура больше не отбражается, но зато получилось создать текстуру очень точно напоминающую фарфор, с хорошими бликами. Но я не этого хотел .
Member
Статус: Не в сети Регистрация: 30.04.2004 Откуда: [Omsk Team]
Ray Adams я вот поклонник RenderMonkey, правь и смотри вобщем.
http://www2.ati.com/developer/rendermonkey/files/RenderMonkey.2004-08-03-v1.5.424.exe к сожалению моя видео большую часть эффектов не тянет, но fur, metall и др. простенькие отрисовывает вполне сносно. Широкий спектр возможностей и компиляция шейдера "на-лету", текстурирование. Удобно, отладил шейдер, вставил и применил, где нужно. Требует dx9.0c
_________________ forum.omskteam.ru- Все о керамограните
Member
Статус: Не в сети Регистрация: 12.03.2003 Откуда: Израиль
Ray Adams Я хоть и на Си с шейдерами баловался, но сви несколько копеек ляпну:
Цитата:
Берутся два файла, вертексный и фграментный шейдер (нафига правда не понимаю),
Потому что один - вертексный, второй - фрагментный (по-игрушечнуму - пиксельный) Вертексный шейдер вызывается каждый раз, на свежий вертекс. Т.е. допустим, что у нас есть код вроде
Вертексный шейдер будет вызван на каждый вызов glVertex3f( ), в вертексном шейдере будут координаты текстур, цвет вершины от glColorXX, загруженные матрицы, данные об источниках света - в общем полное состояние стейт-машины ГЛ. Нужен для того, чтобы вмешаться в отрисовку на этом этапе. Зачем? Читаем маркетинговую лабуду про ГФ2, а также смотрим его примеры. Интересная особенность: свежие детонаторы эмулируют вертексные шейдеры даже на ТНТ1. С какой версии сказать не могу, но с 40-й версии - точно. Когда-то я писал вертексный шейдер, который считает вместо компоненты specular блик освещения, принимая во внимание положение камеры. (берем поверхность, направляем на нее свет, смотрим под разными углами. в стандартной модели освещения световой блик неподвижен, как ни ходи вокруг поверхности. в жизни - ведет себя как зеркало.)
Пиксельный (то есть фрагментный, так правильнее) вызывается для каждой точки...
Цитата:
Так и не понял, а как правильно?
Первый вариант "правильнее" с точки зрения, что он, ИМХО, проживет дольше. Мне, как ассемблерщику, больше по душе второй вариант...
Цитата:
Я к примеру взяв один шейдер, который по идее в демке делал четкие блики на текстурах, присобачил к себе, так у меня почемуто текстура больше не отбражается,
- Проверь откуда они брали пиксели из текстуры. У них. А у тебя?
- Умножение/сложение результата расчета и пикселя из текстуры не забыли?
Ну или шейдер в студию...
Добавлено спустя 1 минуту, 27 секунд: Да, тем не менее подход Dilon явно имеет гораздо больше перспектив.
(тут поскипано ворчание, что скоро драйверы на ВизБейсике писать будут)
_________________ Более мощный компьютер глючит быстрее и точнее.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Dilon Большой сенкс за линк, как раз искал что-то подобное. У меня стоит Shader Designer , но он такой блевотный, карта вешается от него очень часто да и не сильно удобный. В принципе мне не удобство важно, а именно стабильная работа программы.
WhPh И тебе сенкс, мне сейчас все по шейдерам интересно, особенно с первых рук. Тоесть от тех , кто что-то делает сам.
Глупый вопрос ща задам. Создание воды , хотябы как в 3dmark 2001, насколько сложно? Тоесть меня не интересует прорисовка самой поверхности и так далее. Примеров как делать воду много, но вот как на нее нацепить щейдер и какой именно чтобы выглядело так как в Марке или Моровинде, вот это интересно.
Member
Статус: Не в сети Регистрация: 30.04.2004 Откуда: [Omsk Team]
WhPh это то же "низкоуровневое" программирование, компилятор для шейдеров так сказать, мы же не пользуемся командной строкой для написания программы (в большинстве случаев ) вот и здесь то же самое к тому же если надо я и руками смогу написать, сам для себя rendermonkey недавно открыл
_________________ forum.omskteam.ru- Все о керамограните
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Dilon Скачал, поставил, поигрался. Клево то, что мой простенький шейдер в нем пашет именно так как и у меня в программе . Вообще очень удобная программа с кучей возможностей, не надо каждый раз писал простую программу с кубиком, чтобы проверить что получилось.
Member
Статус: Не в сети Регистрация: 30.04.2004 Откуда: [Omsk Team]
Ray Adams мне нравится, что еще и к моделькам можно шейдеры применять, 3ds поддерживается + еще несколько форматов, а как с OGL? А то видюха у меня не поддерживает необходимые расширения, надо раннюю версию качать
Добавлено спустя 12 минут, 55 секунд: кстати - как насчет воды из DXSDK? Вполне реально смотрится по-моему: отражение, блики, волны
_________________ forum.omskteam.ru- Все о керамограните
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Dilon С OGL все нормально.
Добавлено спустя 7 часов, 15 минут, 31 секунду: Кстати, а нету ли где плагина или еще чего, который бы выдавал готовый код как рендерить то, что наделал в RM? А то хочется передрать парочку примеров в Delphi, но как там это сделать даже и не догадываюсь, особенно пример Fur, там 12 шагов рендеринга
Member
Статус: Не в сети Регистрация: 20.06.2003 Откуда: Ижевск
Ray Adams Сорри что торможу с артефакт-тестером, но я тоже в тупик зашёл от странных глюков В Shader Designer всё работает, подключаю - фиг. Наверное надо юзать ARBFP, и забить на GLSL вообще..
Похоже он еще кривовато компилируется драйверами. Или искать компилятор из GLSL->ARBFP
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
awl Там много чего еще надо делать, я надеюсь , что ты параметры в шейдер передаеш если они у тебя используются?
Елси не большие шейдеры постани, вместе легче понять где собака зарылась , Кстати GLSL все равно ведь пашет через ARB расширения , так что не никакой разницы в каком виде создавать шейдеры, в готовом ассмбюлерном или с GLSL, главное при загрузке правильно указать в каком виде сам шейдер, чтобы компилятор не упал
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
надо попробовать будет
Добавлено спустя 2 часа, 43 минуты, 55 секунд:
Цитата:
Но он компилируется в ассемблер, возможно даже компилятор пытается код оптимизировать как обычные компиляторы для x86. Вот и плющщит его
Еще как оптимизирует! Пытался наколоть его нагрузив кучей бестолковых вычислений, все отрезал к чертям!
Кстати не могу найти PrettyParallax
Добавлено спустя 2 часа, 35 минут, 30 секунд: Хмм, а ты ведь оказывается используеш Shader Designer, а я RenderMonkey, SD у меня просто убивается карту, порстоянно вылетает VPU Recover, короче глюк на глюке! Толи дело Render Monkey там все просто отлично сделано! Советую на него переходить намного удобнее и не глючит постоянно. Сейчас пытаюсь перегнать этот шейдер в RenderMonkey.
Добавлено спустя 10 часов, 32 минуты, 7 секунд: Перегнал я твой шейдер в RM, но что-то он не очень както на paralax и похож , я даже перегнал пример из SD там и он не собо похож, странно может надо какие параметры менять чтобы в точности такой же был?
Добавлено спустя 17 минут, 43 секунды: Вот что вышло
#77
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Да я видел как он выглядит в SD, но почемуто в RM он так не выглядит, видимо точно со светом что-то нето, покопаюсь , попробую. Но думаю, что перегнать его в Delphi не составит никакого труда.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
не будет пока что демок шейдеры конечно вещьт крутая, но к сожалению 50% всех прелестех не только из-за шейдера, вообще 3Д графика это большой прикол, над нами издеваются! То что мы видим и востограемся на самом деле делается совсем уж простейшими способами и когда копаеш поглубже начинаеш задумываться на кой вообще раскручивают 3D ускорители если все равно 80% работы по созданию сцены не ложится на карту!
Member
Статус: Не в сети Регистрация: 20.06.2003 Откуда: Ижевск
Ray Adams Ну почему.. попиксельное освещение и бамп - вещь убойная Вот что-то красивое сделать используя возможности видяшки это уже талант надо
иметь...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения