#version 460 in vec2 TexCoord; in vec4 WldPos; in vec3 Normal; in mat3 TBN; layout(location = 0) out vec4 FragColor; layout(location = 1) out int ObjId; layout(location = 2) out vec4 WorldPos; uniform sampler2D TextureSampler; uniform sampler2D NormalMapSampler; uniform sampler2D EmmissionMapSampler; uniform sampler2D SpecularMapSampler; uniform sampler2D TeamcolorMap; uniform sampler2D ShadowMapSampler; uniform int ObjIdIn; uniform vec4 ObjColor; uniform vec3 LightDirection; uniform vec3 CameraPosition; uniform vec3 CamFwdDir; uniform int TeamId; vec4 TeamIdColors[3] = vec4[3](vec4(0.41568628f, 0.74901962f, 0.04705882f, 1.00000000f ), vec4(1.00000000f, 0.89999998f, 0.00000000f, 1.00000000f ), vec4(0.55000001f, 0.05000000f, 0.50000000f, 1.00000000f )); float calcMissing(vec3 normal){ return abs(sqrt(1-(normal.x*normal.x+normal.y*normal.y))); } vec4 transition(vec4 v1,vec4 v2,float val){ return v1 * val + v2 * (1-val); } void main(){ vec3 CamDir = normalize(CameraPosition - WldPos.xyz); vec3 normal = vec3(texture(NormalMapSampler, TexCoord)); normal = normal * 2.0 - 1.0; normal.y = -normal.y; normal.z = calcMissing(normal); normal = normalize(TBN * normal); ObjId = ObjIdIn; WorldPos = vec4(WldPos.xyz,1); //if(WldPos.w == 0) WorldPos=vec4(WldPos.xyz,1); vec4 textel = texture(TextureSampler,TexCoord); if(textel.a < 0.3) discard; //textel.a = (CamPos.z / CamPos.w) / 100; vec4 col = textel * ObjColor; FragColor = vec4(col.rgb * min(0.35 + dot(CamDir,normal),1),col.a); FragColor *= transition(TeamIdColors[TeamId],vec4(1,1,1,1), texture(TeamcolorMap, TexCoord).a); //FragColor = vec4(1,1,1,1); }