Изменение свойства alpha цвета gl - PullRequest
1 голос
/ 28 января 2020

Я использую следующий код для уменьшения или увеличения яркости gl_FragColor.

 void main()
 {
     #ifdef SHADER_API_GLES3
     vec2 uvTop = mix(_UvTopLeftRight.xy, _UvTopLeftRight.zw, gl_MultiTexCoord0.x);
     vec2 uvBottom = mix(_UvBottomLeftRight.xy, _UvBottomLeftRight.zw, gl_MultiTexCoord0.x);
     textureCoord = mix(uvTop, uvBottom, gl_MultiTexCoord0.y);

      gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
      #endif
 }

Но как мне изменить альфа-свойство gl_color?

Я пытался изменить gl_FragColor.a = 100, но по какой-то причине он просто создает странные строки.

Я что-то упустил?

1 Ответ

0 голосов
/ 28 января 2020

Значения цветовых каналов и альфа-канала являются нормализованными значениями с плавающей запятой в диапазоне [0,0, 1,0].
Альфа-канал можно изменить, установив gl_FragColor.a. Например:
(См. также Swizzling )

gl_FragColor.a = 0.6;

или

gl_FragColor = vec4(pow(texture(_MainTex, textureCoord).rgb, vec3(2.2)), 0.6);

Подробнее Спецификация языка затенения OpenGL :

5.5 Векторные и скалярные компоненты и длина

Имена компонентов вектора или скаляра обозначаются одной буквой. Для удобства обозначения несколько букв связаны с каждым компонентом на основе общего использования векторов координат положения, цвета или текстуры. Отдельные компоненты можно выбрать, следуя имени переменной с точкой (.), А затем именем компонента.

Поддерживаемые имена компонентов:

  • {x, y, z, w} Полезно при доступе к векторам, которые представляют точки или нормали

  • {r, g, b, a} Полезно при доступе к векторам, которые представляют цвета

  • {s, t, p, q} Полезно при доступе к векторам, которые представляют координаты текстуры />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...