瀏覽代碼

Calculate pixel snap in canvas space instead of world space

This ensures that you are actually snapping to pixels in the viewport and not an arbitrary amount
clayjohn 11 月之前
父節點
當前提交
e75900e1ad
共有 2 個文件被更改,包括 4 次插入4 次删除
  1. 2 2
      drivers/gles3/shaders/canvas.glsl
  2. 2 2
      servers/rendering/renderer_rd/shaders/canvas.glsl

+ 2 - 2
drivers/gles3/shaders/canvas.glsl

@@ -262,6 +262,8 @@ void main() {
 
 	color_interp = color;
 
+	vertex = (canvas_transform * vec4(vertex, 0.0, 1.0)).xy;
+
 	if (use_pixel_snap) {
 		vertex = floor(vertex + 0.5);
 		// precision issue on some hardware creates artifacts within texture
@@ -269,8 +271,6 @@ void main() {
 		uv += 1e-5;
 	}
 
-	vertex = (canvas_transform * vec4(vertex, 0.0, 1.0)).xy;
-
 	vertex_interp = vertex;
 	uv_interp = uv;
 

+ 2 - 2
servers/rendering/renderer_rd/shaders/canvas.glsl

@@ -214,6 +214,8 @@ void main() {
 
 	color_interp = color;
 
+	vertex = (canvas_data.canvas_transform * vec4(vertex, 0.0, 1.0)).xy;
+
 	if (canvas_data.use_pixel_snap) {
 		vertex = floor(vertex + 0.5);
 		// precision issue on some hardware creates artifacts within texture
@@ -221,8 +223,6 @@ void main() {
 		uv += 1e-5;
 	}
 
-	vertex = (canvas_data.canvas_transform * vec4(vertex, 0.0, 1.0)).xy;
-
 	vertex_interp = vertex;
 	uv_interp = uv;