Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 37 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Всем привет.
Вот решил открыть темку для тех, кто программирует на Delphi с использованием OpenGL. Начал сейчас слегонца заниматься шейдерами. Опыта мало, инфы так еще меньше. В нете полно, а нормальных описаний нет. Из всех демок понял, что используются ARB расшиения. Ну вроде смог прикрутить загрузку и компиляцию с последующим использованием шейдеров. Берутся два файла, вертексный и фграментный шейдер (нафига правда не понимаю), и после подготовки бзается полченный шейдер. Так вот интересно, одна демка юзает шейдеры в одном формате на языке GLSL
Код:
varying vec4 Ca;
varying vec4 Cd;
varying vec4 Cs;

varying vec4 V_eye;
varying vec4 L_eye;
varying vec4 N_eye;

void main(void)
{
  vec3 V = normalize(vec3(V_eye));
  vec3 L = normalize(vec3(L_eye));
  vec3 N = normalize(vec3(N_eye));

  float diffuse_f = clamp(dot(L, N), 0.0, 1.0);
  float diffuse_b = clamp(dot(L, -N), 1.0, 1.0);

  vec3 H = normalize(L + V);
  float specular = clamp(pow(dot(N, H), 356.0), 0.0, 1.0);

  gl_FragColor =  0.45*(Cd*diffuse_f) + 0.1*(Cd*diffuse_b) + (Cs*specular);
 
}

Другая демка испоьзуя почти техе процедуры, но немного по другому юзает щейдеры в таком виде.
Код:
!!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;

TEMP texelColor;
TXP texelColor, inTexCoord, texture, 2D;

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
Я хоть и на Си с шейдерами баловался, но сви несколько копеек ляпну:

Цитата:
Берутся два файла, вертексный и фграментный шейдер (нафига правда не понимаю),

Потому что один - вертексный, второй - фрагментный (по-игрушечнуму - пиксельный)
Вертексный шейдер вызывается каждый раз, на свежий вертекс. Т.е. допустим, что у нас есть код вроде
Код:
glColor4f( 0.5, 0.5, 0.5, 1.0 );
glBegin( GL_TRIANGLES );
glTexCoord2f( 0.0, 0.0 );
glVertex3f( 0.0, 0.0, 1.0 );
....
glEnd( ); // GL_TRIANGLES

Вертексный шейдер будет вызван на каждый вызов 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, главное при загрузке правильно указать в каком виде сам шейдер, чтобы компилятор не упал :)


 

Member
Статус: Не в сети
Регистрация: 20.06.2003
Откуда: Ижевск
Ray Adams
Цитата:
Там много чего еще надо делать, я надеюсь , что ты параметры в шейдер передаеш если они у тебя используются?

Я пытался PrettyParallax bump mapping шейдер подключить из комплекта Shader Designer :) попробуй,может у тебя получится..

Цитата:
Кстати GLSL все равно ведь пашет через ARB расширения , так что не никакой разницы в каком виде создавать шейдеры

Но он компилируется в ассемблер, возможно даже компилятор пытается код оптимизировать как обычные
компиляторы для x86. Вот и плющщит его :)


 

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


 

Member
Статус: Не в сети
Регистрация: 20.06.2003
Откуда: Ижевск
Ray Adams
Да, не совсем то :( точнее совсем не то, что было в SM
Странно это...

Добавлено спустя 4 минуты, 16 секунд:
Такое ощущение что с освещением глюки, проверь источники света..

Цитата:
может надо какие параметры менять чтобы в точности такой же был?

Так там же униформ больше и нет никаких, кроме TextureUnit0-1-2? Сейчас не могу
проверить, пишу с работы. Вечером дома посмотрю точнее...

PS: Этот бамп должен выглядеть примерно как displacement mapping из демок матрокс..


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Да я видел как он выглядит в SD, но почемуто в RM он так не выглядит, видимо точно со светом что-то нето, покопаюсь , попробую. Но думаю, что перегнать его в Delphi не составит никакого труда.


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
ALL
А может напишите красивую техно-демку?

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Ну я лично пока до этого не дошел :)


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
Halfback их и так полно... на nvidia например :)

Добавлено спустя 1 минуту, 30 секунд:
с исходниками... разбирайся - не хочу

_________________
forum.omskteam.ru- Все о керамограните


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Цитата:
с исходниками... разбирайся - не хочу

Да хотелось бы посмотреть на демки здешних а не нвидии.

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
не будет пока что демок :) шейдеры конечно вещьт крутая, но к сожалению 50% всех прелестех не только из-за шейдера, вообще 3Д графика это большой прикол, над нами издеваются! :) То что мы видим и востограемся на самом деле делается совсем уж простейшими способами и когда копаеш поглубже начинаеш задумываться на кой вообще раскручивают 3D ускорители если все равно 80% работы по созданию сцены не ложится на карту! :)


 

Member
Статус: Не в сети
Регистрация: 20.06.2003
Откуда: Ижевск
Ray Adams Ну почему.. попиксельное освещение и бамп - вещь убойная :)
Вот что-то красивое сделать используя возможности видяшки это уже талант надо
иметь...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 37 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan