Войти
ПрограммированиеФорумГрафика

Введение в GLSL. (Комментарии к статье)

Страницы: 1 2 3 Следующая »
#0
16:38, 3 янв. 2004

Комментарий к Статье Введение в GLSL
Введение в язык высокого уровня GLSL (OpenGL Shading Language), используемого для создания фрагментных и вершинных шейдеров. В статье описан синтаксис GLSL, приведены примеры вершинного и пиксельного шейдеров. Статья демонстрируется примером на Delphi.


#1
16:38, 3 янв. 2004

Поразительное сходство с Cg. Я бы даже назвал ГЛСЛ тем чем должен был бы стать Cg. Даже форма использования, бинды, загрузка, сэмплеры, юниформ, вариинг и т.д. почти один в один совпадают. Если бы в Cg были бы циклы, и другие фичи шейдеров 2.0 я был бы рад. И чем мне Cg особенно симатичен так тем что он и для ДХ и ГЛ, так сказать мультиапи рулит. Короче ничего революционного я не увидел в ГЛСЛ, или там ничего такого не должно быть ?
З.Ы. Делфи мастдай.

#2
17:19, 3 янв. 2004

>> юниформ, вариинг

Тут как раз значительная разница. В частности, биндинг параметров шейдеров осуществляется совсем по-разному.

>>Если бы в Cg были бы циклы, и другие фичи шейдеров 2.0 я был бы рад.

Так есть там все... В тех профилях, которые поддерживают динамический бранчинг, тот самый динамический бранчинг и есть.  А циклы типа for(int i=0;i<n;i++)  для заранее известного n компилятор раскрутит. Бранчинг по предикатам, которые известны на этапе компиляции, тоже будет раксручен (см. HL2).

А динамический бранчинг, во-первых, выходит за спецификации пиксельных шейдеров 2.0. А, во-вторых, динамический бранчинг в VS медленен на картах э... ведущего вендора.

>>Короче ничего революционного я не увидел в ГЛСЛ, или там ничего такого не должно быть ?

Было пару лет назад.

PS. Cg масдай, HLSL рулезы.

#3
18:14, 3 янв. 2004

Короче надо писать компилер абстрактного языка, который компилирует и в GLSL и HLSL. И будет нам счастье :-)

#4
20:28, 3 янв. 2004

Код пиксельного шейдера я бы писал компактнее... Вот так, к примеру:

void main()
{
  vec4 texColor = texture2D(u_texture, vec2(gl_TexCoord[0]))*gl_Color;
  vec4 gryColor = vec4(dot(texColor.xyz,vec3(0.2125, 0.7154, 0.0721)));
  gl_FragColor  = mix(texColor,gryColor,v_t);
}
#5
21:07, 3 янв. 2004

Статья хорошая. А когда я говорю хорошая, то это значит-супер!!!
Только я не пойму: чё лучше имплементировать в игру GLSL, CG или ARBшные программы???

#6
22:34, 3 янв. 2004

Картинок по тексту маловато :-(.

Sark7
>>Компиляция GLSL-шейдеров возложена на драйвер, поэтому не требуются внешние библиотеки (как в Cg).
В драйверах 3dlabs (создателя GLSL всё-таки) компилятор находиться в отдельной библиотеке, поставляемой с драйвером. Кажется, у NVidia схема похожая. :-).

>>Из-за высокоуровневости языка можем получить более оптимизированный код, чем при использовании ассемблероподобных шейдеров, так как у компилятора в этом случае больше простора для творчества ;)
а можем и получить обратный результат (проверялось на компиляторе ATI Ashli(GLSL -> ARB_vp/fp), который, похоже, как раз и входит в состав драйверов 3.10).

viv
>>Короче надо писать компилер абстрактного языка, который компилирует и в GLSL и HLSL.
Короче, все к RenderManу, от которого произошли и Cg, и GLSL и HLSL. И который сам имел С в качестве предтеча :-).

#7
12:33, 4 янв. 2004

ЗЫ: у меня мх440(как я понял, эти фичи она не поддерживает). так вот прога просто виснет:) неужели никаких проверок нету?

#8
12:37, 4 янв. 2004

Вполне читаемая статья, эт хорошо что хоть кто-то взялся расписать на русский язык такую вещь. Огромная благодарность. Повезло, что шейдерный код пишется на С, а то разбирали бы тут Дельфи :))

IronPeter
Я думаю он прав был, что написал НЕКОМПАКТНО. Людям надо все полностью пояснить - что к чему, а если он сделал как ты, то было бы много вопросов. После этапа разброрки того, как все устроено нужно уже писать так, как ты привел пример, но на начальном этапе думаю пускай будет громоздко, но понятно :))

#9
12:59, 4 янв. 2004

//В GLSL fs умеет читать из framebuffer'а цвет (но не альфу) и знает позицию обрабатываемого фрагмента.

А возможно ли прочитать весь framebuffer с Альфой. ??
и как это зделать..

#10
1:38, 5 янв. 2004

IronPeter
>>Код пиксельного шейдера я бы писал компактнее...
Да, конечно. Я старался запихнуть максимум фишек языка на квадратный метр шейдера ;)

Ilyasim
Ну, спасиба ;)

azazello
>>Картинок по тексту маловато :-(.
Гм ;)
>>В драйверах 3dlabs (создателя GLSL всё-таки) компилятор находиться в отдельной библиотеке, поставляемой с драйвером. Кажется, у NVidia схема похожая. :-).
Ключевые слова здесь - поставляемой с драйвером. Я таки и имел в виду, что компиляция возложена на вендора ;)
>>а можем и получить обратный результат (проверялось на компиляторе ATI Ashli(GLSL -> ARB_vp/fp), который, похоже, как раз и входит в состав драйверов 3.10).
Ну, вообще это говорит о качестве Ashli ;) Тем более, что для ARB и GLSL в железе могут быть разные path.

IROV..
Я тут ошибся немного. В последней редакции GLSL запретили читать из фреймбуфера.

P.S. А вот вам бонус ;) - http://www.gamedev.ru/download/?id=399

#11
9:09, 5 янв. 2004

Sark7
Thanks за статью!
Я перед Новым годом выкроил малость времени на маханький перевод на Delphi примера из 3DLabs OpenGL2.0 SDK (у  меня на страничке)

#12
13:45, 5 янв. 2004

Спасибо за статью,

некотрый коммент:

Cg и GLSL  сильно напоминают Аду с С подобным синтаксом.
Вообще,видимо ада лучше всего и подошла бы.
(ада - язык программирования с паскаль-подобным синтаксом,разработан по поддержке USA  DOD и предназначен для использования в военно-космической области,имеет развитые средства проверки правильности кода)

Например, позволяет(опционально) описывать структуры и вызовы на уровне битов, так-же имеет in , out , in out параметры ,итп, все что только нужно для работы в железе(в ракете или в видеокарте).
Имеет несколько плохих вещей типа дурацкого вида "определить a=b" как  "a=>b"
(в константах-структурах) ,но это терпеть можно.

(все мастдай, прилетает ракета с прогой на аде)

#13
12:50, 15 янв. 2004

Мдя, на первый взгляд GLSL не шибко похож на RenderMan.
Философский вопрос, насколько сложно написание компилятора RenderMan SL -> GLSL/hw shaders?
И такой вопрос. Каким образом можно поиграться с GLSL сейчас (т.е. какие либы, железо, драйверы нужны)?

#14
13:11, 15 янв. 2004

hoknamahn
Ты статью читал? Нужна поддержка трёх расширений.. Если твоя карточка может а драйвер умеет, то вперёд.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.