#version 100 precision mediump int; precision mediump float;

// Author: yh

uniform sampler2D uBaseTexture; uniform mediump float fUseAlpha; // If greater than 1, use this value instead of the alpha value in the texture #ifdef PARTIAL_COLOR uniform sampler2D uPartialMaskTexture; uniform int uIsPartialMask; uniform vec3 uTexTransformFactor; varying vec3 vPartialColor; #endif

varying vec2 vTextureCoord0; varying vec4 vVertexColor;

#ifdef ENABLE_FOG varying vec4 vFogColor; #endif

void main (void) { vec4 base = texture2D(uBaseTexture, vTextureCoord0.st);

#ifdef ALPHA_TEST if(base.a <= 0.0) discard ; #endif

#ifdef PARTIAL_COLOR if(bool(uIsPartialMask)) { vec4 maskColor = texture2D(uPartialMaskTexture, vTextureCoord0.st*uTexTransformFactor.x + uTexTransformFactor.yz); vec3 col = base.rgb; col.r *= vPartialColor.r; col.g *= vPartialColor.g; col.b *= vPartialColor.b; base.rgb = mix(base.rgb, col.rgb, maskColor.a); } else { base.r *= vPartialColor.r; base.g *= vPartialColor.g; base.b *= vPartialColor.b; } #endif

vec4 col = base;

#ifndef DISABLE_AMBIENT_LIGHT col *= vVertexColor; #endif

#ifdef ENABLE_FOG col = mix(col, vFogColor, vFogColor.a); #endif

float al = base.a;
if (fUseAlpha >= 1.0)
{
	al = fUseAlpha - 1.0;
}

gl_FragColor = vec4(base.rgb, al);; 

}

GLSL Fragment Shader with Alpha Override and Partial Color

原文地址: https://www.cveoy.top/t/topic/neqv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录