small performance improvements
This commit is contained in:
parent
d5173c2d5a
commit
2c28b10a6e
@ -12,9 +12,9 @@ public record Ray(@NotNull Vec3 origin, @NotNull Vec3 direction) {
|
||||
|
||||
public @NotNull Vec3 at(double t) {
|
||||
return new Vec3(
|
||||
origin().x() + t * direction.x(),
|
||||
origin().y() + t * direction.y(),
|
||||
origin().z() + t * direction.z()
|
||||
Math.fma(t, direction.x(), origin.x()),
|
||||
Math.fma(t, direction.y(), origin.y()),
|
||||
Math.fma(t, direction.z(), origin.z())
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -23,15 +23,20 @@ public record Vec3(double x, double y, double z) {
|
||||
|
||||
public static @NotNull Vec3 random(@NotNull RandomGenerator random, boolean unit) {
|
||||
var vec = new Vec3(
|
||||
2 * random.nextDouble() - 1,
|
||||
2 * random.nextDouble() - 1,
|
||||
2 * random.nextDouble() - 1
|
||||
Math.fma(2, random.nextDouble(), -1),
|
||||
Math.fma(2, random.nextDouble(), -1),
|
||||
Math.fma(2, random.nextDouble(), -1)
|
||||
);
|
||||
return unit ? vec.unit() : vec;
|
||||
}
|
||||
|
||||
public static @NotNull Vec3 reflect(@NotNull Vec3 vec, @NotNull Vec3 normal) {
|
||||
return vec.minus(normal.times(2 * normal.times(vec)));
|
||||
var factor = - 2 * normal.times(vec);
|
||||
return new Vec3(
|
||||
Math.fma(factor, normal.x(), vec.x()),
|
||||
Math.fma(factor, normal.y(), vec.y()),
|
||||
Math.fma(factor, normal.z(), vec.z())
|
||||
);
|
||||
}
|
||||
|
||||
public static @NotNull Optional<Vec3> refract(@NotNull Vec3 vec, @NotNull Vec3 normal, double ri) {
|
||||
@ -56,10 +61,11 @@ public record Vec3(double x, double y, double z) {
|
||||
}
|
||||
|
||||
public static @NotNull Vec3 average(@NotNull Vec3 current, @NotNull Vec3 next, int index) {
|
||||
var factor = 1d / index;
|
||||
return new Vec3(
|
||||
current.x() + (next.x() - current.x()) / index,
|
||||
current.y() + (next.y() - current.y()) / index,
|
||||
current.z() + (next.z() - current.z()) / index
|
||||
Math.fma(factor, next.x() - current.x(), current.x()),
|
||||
Math.fma(factor, next.y() - current.y(), current.y()),
|
||||
Math.fma(factor, next.z() - current.z(), current.z())
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import eu.jonahbauer.raytracing.math.Ray;
|
||||
import eu.jonahbauer.raytracing.scene.Hittable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class HittableList extends HittableCollection {
|
||||
@ -12,7 +13,7 @@ public final class HittableList extends HittableCollection {
|
||||
private final @NotNull AABB bbox;
|
||||
|
||||
public HittableList(@NotNull List<? extends @NotNull Hittable> objects) {
|
||||
this.objects = List.copyOf(objects);
|
||||
this.objects = new ArrayList<>(objects);
|
||||
this.bbox = AABB.getBoundingBox(this.objects).orElse(AABB.EMPTY);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user