浏览代码

Make Drawable.color to not affect the filter (#714)

Pavel Alexandrov 5 年之前
父节点
当前提交
37e2c6fbcd
共有 2 个文件被更改,包括 5 次插入5 次删除
  1. 1 0
      h2d/Object.hx
  2. 4 5
      h2d/RenderContext.hx

+ 1 - 0
h2d/Object.hx

@@ -66,6 +66,7 @@ class Object #if (domkit && !domkit_heaps) implements domkit.Model<h2d.Object> #
 
 	/**
 		The post process filter for this object.
+		When set, `alpha` value affects both filter and object transparency (use `Drawable.color.a` to set transparency only for the object).
 	**/
 	public var filter(default,set) : h2d.filter.Filter;
 

+ 4 - 5
h2d/RenderContext.hx

@@ -311,12 +311,11 @@ class RenderContext extends h3d.impl.RenderContext {
 	}
 
 	inline function setupColor( obj : h2d.Drawable ) {
-		if( inFilter == obj )
-			baseShader.color.set(1,1,1,1);
+		if( inFilter == obj ) {
+			baseShader.color.set(obj.color.r,obj.color.g,obj.color.b,obj.color.a);
+		}
 		else if( inFilterBlend != null ) {
-			// alpha premult
-			var alpha = obj.color.a * globalAlpha;
-			baseShader.color.set(obj.color.r * alpha, obj.color.g * alpha, obj.color.b * alpha, alpha);
+			baseShader.color.set(globalAlpha,globalAlpha,globalAlpha,globalAlpha);
 		} else
 			baseShader.color.set(obj.color.r, obj.color.g, obj.color.b, obj.color.a * globalAlpha);
 	}