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

Фрагментный шейдер. Какие команды выполняются при стандартной обработке?

Страницы: 1 2 Следующая »
#0
16:08, 12 окт 2009

Здравствуйте! Сразу к делу:
В вершинном шейдере "обычными"(стандартными - не знаю как называется) являются команды:

void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_FrontColor = gl_Color;                  
gl_TexCoord[0] = gl_MultiTexCoord0;
}

То есть с помощь них мы получаем обычную картинку(как без шейдеров).
С этим можно ковыряться и т.д. - то есть делать свой шейдер.

Внимание вопрос(точнее просьба):
Приведите, пожалуйста, "обычный"(стандартный) кусок кода для ФРАГМЕНТНОГО шейдера. (То есть какие надо команды использовать для получения нормальной картинки, чтобы с ними потом возиться?)

Очень надо! =)

#1
16:16, 12 окт 2009

начни с gl_FragColor = texture2D( TexDiffuse,  gl_TexCoord[0].st );

#2
16:31, 12 окт 2009

Ничего нет.
(Зачем вообще нужна текстура диффузии?)

Вы имеете ввиду gl_FragColor?

Что-то типа такого надо:

void main(void)
{
gl_FragColor =  ??? * gl_Color;
}

Напишите пожалуйста!

#3
16:34, 12 окт 2009

_Goshan_
> Вы имеете ввиду gl_FragColor?

да

#4
16:34, 12 окт 2009

_Goshan_
> Ничего нет.
> (Зачем вообще нужна текстура диффузии?)

а это зачем gl_TexCoord[0] = gl_MultiTexCoord0; ?

#5
16:44, 12 окт 2009

Затем, что без этого текстуры не заполняются - на экране разноцветные примитивы без текстур.

Вы не могли бы привести полный код?

#6
16:47, 12 окт 2009

_Goshan_
> Вы не могли бы привести полный код

начни с gl_FragColor = texture2D( TexDiffuse,  gl_TexCoord[0].st );

должна быть просто текстура...

вообще, полно примеров же

#7
16:58, 12 окт 2009

Решение нашлось, но я не понимаю смысла!

1) мне пришлось сделать Uniform  "Textura"  посылать значение "0"
2) а в Фрагментном шейдере использоват "Textura" после texture2D(
3) всё работает, отлично.

Парадокс: при замене "Textura" на 0 фрагшейдер не работает.

#8
16:59, 12 окт 2009

Понял! Отправляется не значение а указатель на значение! ))) Ура!!

#9
17:02, 12 окт 2009

_Goshan_
> Решение нашлось, но я не понимаю смысла!

:):):)

Эх, мне бы так сейчас на работе !

#10
17:17, 12 окт 2009

_Goshan_
Я мало что понял... Но юниформ самплер задаётся не ИД текстуры, а номер текстурного юнита...

#11
17:28, 12 окт 2009

Метод перебора не совместим с большими проектами! ))

#12
17:40, 12 окт 2009

Я думаю это вмести с первым кодом надо отправить в статью про GLSL, для новичков. Именно это мне было непонятно.

uniform sampler2D dgTexture;

void main(void)
{
vec4 tColor = texture2D( dgTexture, gl_TexCoord[0].st ); 
// всевозможные изменения tColor
gl_FragColor = tColor;
}
#13
21:41, 12 окт 2009

Подскажите, люди! Почему при включении шейдеров у меня исчезло солнце?(состоящий из треугольников яркий  круг, непрозрачный в середине и прозрачный на концах)

#14
23:41, 12 окт 2009

_Goshan_
> Почему при включении шейдеров у меня исчезло солнце?
Странно, у меня Солцне (состоящее из полностью непрозрачной сферы, которая в свою очередь состоит их полностью непрозрачных треугольников) наоборот - при отключении шейдеров пропадает. В чем дело?

Какие шейдеры, как ты их "включаешь"? Как рисуешь Солнце?

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

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