*/}}
Browse Source

Multiply mode support

YimingWu 6 hours ago
parent
commit
047a9123f8
2 changed files with 8 additions and 0 deletions
  1. 1 0
      la_tns.h
  2. 7 0
      resources/la_tns_shaders.cpp

+ 1 - 0
la_tns.h

@@ -59,6 +59,7 @@ extern const char* LA_SELECTION_FRAGMENT_SHADER;
 
 #define TNS_MIX_NORMAL 0
 #define TNS_MIX_ADD    1
+#define TNS_MIX_MULTIPLY 2
 
 //typedef real tnsMatrix33d[9];
 

+ 7 - 0
resources/la_tns_shaders.cpp

@@ -823,6 +823,13 @@ void main(){
 			color1=(color1.a!=0.)?vec4(color1.rgb/color1.a,color1.a):vec4(0.,0.,0.,0.);
 			color2=(color2.a!=0.)?vec4(color2.rgb/color2.a,color2.a):vec4(0.,0.,0.,0.);
 		}
+	}else if(TextureMode==7){
+        vec4 color1=texture1(fUV.st); if(MultiplyColor!=0){color1*=fColor;}
+		vec4 color2=texture2();
+		if(TexPremultiplied!=0){ color1.rgb=color1.a>0.?color1.rgb/color1.a:vec3(0.,0.,0.); color2.rgb=color2.a>0.?color2.rgb/color2.a:vec3(0.,0.,0.); }
+		color.rgb = mix(color2.rgb,color1.rgb*color2.rgb,color1.a);
+		color.a=color2.a;
+		if(TexPremultiplied!=0){ color1.rgb=color1.rgb*color1.a; color2.rgb=color2.rgb*color2.a; }
 	}else if(TextureMode==101){ // YUYV
 		ivec2 tsize = textureSize(TexColor,0);
 		vec2 pixel = fUV.st * vec2(tsize);