LINUX.ORG.RU

[OpenGL, GLSL] Несколько вопросов по программированию шейдеров


1

1

У меня в процессе изучения языка GLSL возникло несколько вопросов. Если скажите, где можно на русском языке (на англ. плохо получается читать такой непросто материал) прочитать про это буду благодарен, но порой лучше чтобы собственными словами объяснили некоторые моменты - так просто понятнее.

Есть например функция texture2D, которая как написано в документации читает из текстуры. А что конкретно она читает? Что обозначает gl_TexCoords[0] ? vec4 t0 = texture2D(uniform sampler2D mySampler2D, gl_TexCoords[0]); что обозначает gl_TexCoord[0].st конкретно st ?я так понимаю, что это относится к текстурному вектору? Или например мы обращаемся в функции main шейдера к gl_TexCoords[0].x, т.е. мы получаем текующую координату по x для конкретного текселя ?



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

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

vec.st - вспомогательная конструкция, показывающая, что из вектора делается двумерный и для этого берутся две первых координаты (еще есть .x, .xyz, .xyzw, .xz и т.д.).

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

да там как-то всё уровне ассемблера описывается, не так просто понять, но постараюсь вниунуть

goliath
() автор топика

texture2D - устаревшее. Сейчас используется функция texture. Функция возвращает «цвет» тектуры для соответсвующих координат. В зависимости от вида текстурной фильтрации и параметров самой текстуры результаты могут быть разные.

gl_TexCoords[0] - аттрибут вершины - текстурные координаты. Тоже устаревшее, т.к. сейчас все аттрибуты задаются вручную.

.st, .xy, .rg - всё одно и тоже, синонимы вобщем.

gl_TexCoords[0].x - мы просто получаем значение первого элемента вершинного аттрибута (с именем gl_TexCoords[0]). К текселям(пикселям тектуры) нет никакого отношения.

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