Skip to content

Pigment

Rendering function

from fdray import *


def render(*attrs):
    return Scene(
        Camera(30, 20, view_scale=2),
        LightSource(0, "white"),
        Box((-1, -1, -1), (1, 1, 1), *attrs),
    ).render(300, 300)

Solid color

render(Color("red"))

Color list

Brick

render(Pigment("brick", Color("red", 0.4), Color("blue")).scale(0.2))

Checker

render(Pigment("checker", Color("ivory"), Color("cyan")).scale(0.4))

Hexagon

render(
    Pigment(
        "hexagon",
        Color("teal"),
        Color("navy"),
        Color("purple"),
    )
    .scale(0.2)
    .rotate("90*z"),
)

Color map

Gradient

cmap = ColorMap((0, Color("red")), (0.5, Color("blue")), (1, Color("red")))
render(Pigment("gradient x", cmap))

Checker

a = Pigment("granite", ColorMap((0, Color("red")), (0.9, Color("white"))))
b = Pigment("granite", ColorMap((0, Color("blue")), (0.9, Color("white"))))
p = Pigment("checker", a, b).scale(0.5)
render(p)

Pigment map

p = Pigment("gradient z", PigmentMap((0, a), (0.5, b), (1, a)))
render(p)

a = Declare(Pigment("agate", ColorMap((0, Color("red")), (0.9, Color("white")))))
b = Declare(Pigment("agate", ColorMap((0, Color("blue")), (0.9, Color("white")))))
p = Pigment("gradient x", PigmentMap((0, a), (0.5, b), (1, a)))
render(p)