diff --git a/src/main_view.rs b/src/main_view.rs index 4ed35a0..d2d9a48 100644 --- a/src/main_view.rs +++ b/src/main_view.rs @@ -674,7 +674,7 @@ impl MainView { let high_accuracy_shader_src = self .shader_src .replace("let h: f32 = 0.05;", "let h: f32 = 0.001;") - .replace("let steps: i32 = 100;", "let steps: i32 = 4000;"); + .replace("let steps: i32 = 100;", "let steps: i32 = 5000;"); self.reload_shader( device, Some(&high_accuracy_shader_src), diff --git a/src/main_view.wgsl b/src/main_view.wgsl index c903944..36e171b 100644 --- a/src/main_view.wgsl +++ b/src/main_view.wgsl @@ -239,7 +239,7 @@ fn nonlinear_ray_color(start_point: vec3, start_dir: vec3) -> Nonlinea for (var i: i32 = 0; i < steps; i = i + 1) { // Runge-Kutta method - let k1 = field_function(cur_point - cur_dir * h, cur_point, start_dir, cur_dir, t); + let k1 = field_function(cur_point, cur_point, start_dir, cur_dir, t); let k2 = field_function(cur_point, cur_point + 0.5 * h * k1, start_dir, k1, t + 0.5 * h); let k3 = field_function(cur_point, cur_point + 0.5 * h * k2, start_dir, k2, t + 0.5 * h); let k4 = field_function(cur_point, cur_point + h * k3, start_dir, k3, t + h); @@ -278,7 +278,7 @@ fn sample_rays(start_point: vec3, start_dir: vec3, samples_index: i32, for (var i: i32 = 0; i < steps; i = i + 1) { // Runge-Kutta method - let k1 = field_function(cur_point - cur_dir * h, cur_point, start_dir, cur_dir, t); + let k1 = field_function(cur_point, cur_point, start_dir, cur_dir, t); let k2 = field_function(cur_point, cur_point + 0.5 * h * k1, start_dir, k1, t + 0.5 * h); let k3 = field_function(cur_point, cur_point + 0.5 * h * k2, start_dir, k2, t + 0.5 * h); let k4 = field_function(cur_point, cur_point + h * k3, start_dir, k3, t + h);