浏览代码

don't overwrite absolutePosition in vertex shader (will prevent modifying it)

ncannasse 8 年之前
父节点
当前提交
69b4e0fe2e
共有 1 个文件被更改,包括 8 次插入5 次删除
  1. 8 5
      h3d/shader/Base2d.hx

+ 8 - 5
h3d/shader/Base2d.hx

@@ -56,13 +56,16 @@ class Base2d extends hxsl.Shader {
 		function vertex() {
 			// transform from global to render texture coordinates
 			var tmp = vec3(absolutePosition.xy, 1);
-			absolutePosition.x = tmp.dot(filterMatrixA);
-			absolutePosition.y = tmp.dot(filterMatrixB);
+			var outPos = vec4(
+				tmp.dot(filterMatrixA),
+				tmp.dot(filterMatrixB),
+				absolutePosition.zw
+			);
 			// transform to viewport
-			absolutePosition.xy = (absolutePosition.xy + viewport.xy) * viewport.zw;
+			outPos.xy = (outPos.xy + viewport.xy) * viewport.zw;
 			// http://msdn.microsoft.com/en-us/library/windows/desktop/bb219690(v=vs.85).aspx
-			if( pixelAlign ) absolutePosition.xy -= halfPixelInverse;
-			output.position = absolutePosition;
+			if( pixelAlign ) outPos.xy -= halfPixelInverse;
+			output.position = outPos;
 		}
 
 		function fragment() {