@@ -374,7 +374,7 @@ private void updateRenderState(Scene scene) {
374374 }
375375 }
376376
377- private static final int SPS_AVERAGE_TIME = 180 ;
377+ private static final int SPS_AVERAGE_TIME = 1 ;
378378 private LinkedList <Integer > spp_history = new LinkedList <Integer >();
379379 private LinkedList <Double > spp_history_times = new LinkedList <Double >();
380380
@@ -386,6 +386,12 @@ private int samplesPerSecond() {
386386 int canvasHeight = bufferedScene .canvasHeight ();
387387 long pixelsPerFrame = (long ) canvasWidth * canvasHeight ;
388388 double renderTime = bufferedScene .renderTime / 1000.0 ;
389+
390+ // Avoid incorrect output if the average time per render pass were to exceed SPS_AVERAGE_TIME
391+ // Somewhat hacky, as it will break if there is an outlier pass that's >SPS_AVERAGE_TIME, and 0 will be returned
392+ if (renderTime / spp >= SPS_AVERAGE_TIME )
393+ return (int ) ((bufferedScene .spp * pixelsPerFrame ) / renderTime );
394+
389395 if (renderTime < SPS_AVERAGE_TIME ) {
390396 return (int ) ((bufferedScene .spp * pixelsPerFrame ) / renderTime );
391397 } else {
@@ -417,6 +423,9 @@ private void updateRenderProgress() {
417423 spp_history_times .removeFirst ();
418424 spp_history .removeFirst ();
419425 }
426+ System .out .println (renderTime );
427+ System .out .println (Arrays .toString (spp_history .toArray ()));
428+ System .out .println (Arrays .toString (spp_history_times .toArray ()));
420429 // Update render status display.
421430 renderStatusListeners .forEach (listener -> {
422431 listener .setRenderTime (bufferedScene .renderTime );
0 commit comments