print("Rendering to file " .. filename .. "...")
local f = io.open(filename, "w")
- f:write("P3 ", width, " ", height, " 255\n")
+ f:write("P6 ", width, " ", height, " 255\n")
local c = scene.camera
local cam_dir = V.normalize(c.point_at - c.location)
for x=1,width do
local ray_dir = normalize(rayy + right*((x/width - 0.5)*c.fov))
local col = march(c.location, c.location, ray_dir, scene.sdf, 0)
- col = {math.min(col[1]*255, 255),
- math.min(col[2]*255, 255),
- math.min(col[3]*255, 255)}
+ col = {math.floor(math.min(col[1]*255, 255)),
+ math.floor(math.min(col[2]*255, 255)),
+ math.floor(math.min(col[3]*255, 255))}
- f:write(math.floor(col[1]), " ", math.floor(col[2]), " ", math.floor(col[3]), " ")
+ f:write(string.char(col[1]), string.char(col[2]), string.char(col[3]))
end
- f:write("\n")
end
- f:write("\n")
f:close()
make_count_texture = make_count_texture,
make_solid_pigment = make_solid_pigment,
make_checkered_pigment = make_checkered_pigment,
+ make_image_pigment = make_image_pigment,
make_mandelbrot_pigment = make_mandelbrot_pigment,
map_rectangular = map_rectangular,
map_spherical = map_spherical
T.make_phong_texture(lights,
T.map_rectangular(
T.make_mandelbrot_pigment(
- make_image_pigment("images/wood1.ppm",1),
- make_image_pigment("images/wood2.ppm",1),
+ T.make_image_pigment("images/wood1.ppm",1),
+ T.make_image_pigment("images/wood2.ppm",1),
20),
texture_x, texture_y),
0.2, 1.0, 0, 1)),
- -- sdf = P.make_plane(V.origin, plane_normal,
- -- T.make_phong_texture(
- -- lights,
- -- T.map_rectangular(
- -- -- T.make_solid_pigment({0.5,0.2,1.0}),
- -- T.make_checkered_pigment(
- -- make_image_pigment("images/wood1.ppm", 1),
- -- make_image_pigment("images/wood2.ppm", 1)),
- -- texture_x, texture_y), 0.2, 1.0, 0.5, 20)),
-
camera = {location = V.new{0,-5,0},
point_at = V.new{0,0,0},
right = V.x,