require "Vector" local V = Vector require "Primitives" local P = Primitives require "Operations" local O = Operations require "Textures" local T = Textures require "Render" local lights = {V.new{3,-3,1}} local scene = { sdf = O.union{ O.diff{ P.make_sphere(V.new{0,0,0}, 1, T.make_phong_texture(lights, T.map_spherical( T.make_solid_pigment({0,1,0}), V.origin, 1, 1), 0.2, 0.7, 1.0, 100)), P.make_sphere(V.new{0,0,0}, 0.8), P.make_pipe(V.new{0,0,0}, 0.5, V.new{0,1,0}), P.make_pipe(V.new{0,0,0}, 0.5, V.new{1,0,0})}, P.make_plane(V.new{0,0,-1.0}, V.new{0,0,1}, T.make_phong_texture(lights, T.map_rectangular( T.make_checkered_pigment({0.5,0,0.2}, {1,1,1}), V.x, V.y), 0.2, 1.0, 0, 1))}, camera = {location = V.new{2,-5,1}, point_at = V.new{0,0,0}, right = V.x, fov = 1}} Render.render(scene, 1280, 960, "holy_sphere.ppm")