X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=Textures.lua;h=324a2d24287b0d487e15590abb998932e2da0816;hb=06059eb522f33574680bb75bb73f28e2b0f6e836;hp=ad805a6888971b357a351d4816f56c0784bfce2d;hpb=f385f4b589fc49dc55c3ce4447b4450c3e515123;p=raymarcher.git diff --git a/Textures.lua b/Textures.lua index ad805a6..324a2d2 100644 --- a/Textures.lua +++ b/Textures.lua @@ -3,6 +3,9 @@ require "Vector" local V = Vector +require "Colours" +local C = Colours + local function make_phong_texture(lights, mapped_pigment, amb, diff, spec, shiny) local normalize = V.normalize @@ -140,6 +143,18 @@ local function make_mandelbrot_pigment(set_pigment, nonset_pigment, max_iter) end end +local function make_rainbow_pigment(scale) + return function (x,y) + + local Ired = math.sin(x/math.pi/scale)^2 * math.sin(y/math.pi/scale)^2 + local Igreen = math.cos(x/math.pi/scale)^2 * math.sin(y/math.pi/scale)^2 + local Iblue = math.sin(x/math.pi/scale)^2 * math.cos(y/math.pi/scale)^2 + + return C.red*Ired + C.green*Igreen + C.blue*Iblue + end +end + + -- Mapping functions -- These functions define mappings from 3D world coordinates to 2D @@ -170,6 +185,7 @@ Textures = { make_solid_pigment = make_solid_pigment, make_checkered_pigment = make_checkered_pigment, make_image_pigment = make_image_pigment, + make_rainbow_pigment = make_rainbow_pigment, make_mandelbrot_pigment = make_mandelbrot_pigment, map_rectangular = map_rectangular, map_spherical = map_spherical