更改gl颜色的alpha属性

问题描述 投票:2回答:1

我使用以下代码减少或增加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的alpha属性?

我曾尝试通过gl_FragColor.a = 100进行更改,但由于某些原因,它只是在创建怪异的行。

我想念东西吗?

unity3d opengl glsl shader fragment-shader
1个回答
1
投票

颜色通道和alpha通道的值是[0.0,1.0]范围内的标准化浮点值。可以通过设置gl_FragColor.a更改Alpha通道。例如:(另请参见Swizzling

gl_FragColor.a = 0.6;

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

请参见The OpenGL Shading Language specification

5.5矢量和标量分量和长度

向量或标量的组成部分的名称用单个字母表示。为方便起见,根据位置,颜色或纹理坐标矢量的常用用法,几个字母与每个组件相关联。可以通过在变量名后加上句号(。),然后选择组件名来选择各个组件。

支持的组件名称是:

  • {x, y, z, w}在访问代表点或法线的向量时很有用

  • [{r, g, b, a}在访问代表颜色的矢量时很有用

  • [{s, t, p, q}在访问表示纹理坐标的矢量时很有用/>]]]

© www.soinside.com 2019 - 2024. All rights reserved.