private static Camera getCamera(Model model) { Camera result = new Camera(); result.setFrom(model.getFrom()); result.setTo(model.getTo()); result.setUp(model.getUp()); result.setFov(model.getFov()); result.setWidth(model.getW()); result.setHeight(model.getH()); result.init(); return result; }
public static BufferedImage render(Model model) { Camera cam = getCamera(model); BufferedImage result = new BufferedImage(model.getW(), model.getH(), BufferedImage.TYPE_INT_RGB); IntStream xs = IntStream.range(0, model.getW()).parallel(); Date startTime = new Date(); xs.forEach( x -> { IntStream ys = IntStream.range(0, model.getH()); ys.forEach( y -> { Ray ray = rayThruPixel(cam, x, y); Intersection hit = intersect(ray, model); result.setRGB(x, y, findColor(hit, cam, model)); }); }); Date endTime = new Date(); final float time = endTime.getTime() - startTime.getTime(); System.out.println("Executing time: " + time / 1000); return result; }