From e6538d221fbfce670cf0715ef2ceaf434d02315b Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Sat, 4 Jul 2026 01:49:17 +0200 Subject: [PATCH] fixing FragCoord derivatives --- build.zig.zon | 4 ++-- src/software/device/fragment.zig | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 4db0e6c..122b3a8 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -32,8 +32,8 @@ // Soft dependencies .SPIRV_Interpreter = .{ - .url = "git+https://github.com/Kbz-8/SPIRV-Interpreter#6e1fa9db32f3e596e30d60f94b2909f3609ec03a", - .hash = "SPIRV_Interpreter-0.0.1-ajmpn_CXCQB0GIcZz8ioOFOW9yLr5Ka-Qir3v3Y1r5Bi", + .url = "git+https://github.com/Kbz-8/SPIRV-Interpreter#32806def90a68f5f0514405d0ff8c1b0cb16772e", + .hash = "SPIRV_Interpreter-0.0.1-ajmpn0qdCQANEex9HEO44N5dcyyOjYGzPCXlzdXhvnr7", .lazy = true, }, //.SPIRV_Interpreter = .{ diff --git a/src/software/device/fragment.zig b/src/software/device/fragment.zig index 175df24..a02a3a3 100644 --- a/src/software/device/fragment.zig +++ b/src/software/device/fragment.zig @@ -70,8 +70,14 @@ pub fn shaderInvocation( }; if (rt.getBuiltinResult(.FragCoord)) |frag_coord_word| { - const frag_coord_dx = zm.f32x4(1.0, 0.0, 0.0, 0.0); - const frag_coord_dy = zm.f32x4(0.0, 1.0, 0.0, 0.0); + const pixel_x: i32 = @intFromFloat(position[0]); + const pixel_y: i32 = @intFromFloat(position[1]); + const dx: f32 = if (@mod(pixel_x, 2) == 0) 1.0 else -1.0; + const dy: f32 = if (@mod(pixel_y, 2) == 0) 1.0 else -1.0; + rt.derivative_sign_x = dx; + rt.derivative_sign_y = dy; + const frag_coord_dx = zm.f32x4(dx, 0.0, 0.0, 0.0); + const frag_coord_dy = zm.f32x4(0.0, dy, 0.0, 0.0); try rt.setDerivativeFromMemory(allocator, frag_coord_word, std.mem.asBytes(&frag_coord_dx), std.mem.asBytes(&frag_coord_dy)); }