automated snapshot

This commit is contained in:
sumi
2025-12-23 15:29:58 -06:00
parent 644423f86b
commit cc59845233
3 changed files with 23 additions and 13 deletions

30
main.go
View File

@@ -60,15 +60,17 @@ func main() {
sierpinskiLayer := &SierpinskiArrow { dirty: true }
imageLayer := NewImageLayer("/home/d/Dropbox/photos/Events/2025/Aurora/Photo Nov 11 2025, 9 52 03 PM.jpg")
aurora := NewImageLayer("/home/d/Dropbox/photos/Events/2025/Aurora/Photo Nov 11 2025, 9 52 03 PM.jpg")
cave := NewImageLayer("/home/d/Dropbox/photos/Events/2025/ Chelsea and James visit Lindell/Photo Nov 29 2025, 5 26 40 PM (29).jpg")
//sketch.AddColorLayer("background-black", rl.Black)
sketch.AddColorLayer("background-magenta", rl.Magenta)
sketch.AddLayer("field", &FieldLayer{field: field, dirty: true})
sketch.AddColorLayer("background-black", rl.Black)
//sketch.AddColorLayer("background-magenta", rl.Magenta)
sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: rl.Magenta, dirty: true})
contourLayer := NewContourLayer(&sketch, rng, field)
sketch.AddLayer("contours", contourLayer)
sketch.AddLayer("sierpinski", sierpinskiLayer)
sketch.AddLayer("aurora", imageLayer)
sketch.AddLayer("sierpinski-arrowhead", sierpinskiLayer)
sketch.AddLayer("aurora", aurora)
sketch.AddLayer("cave", cave)
ports := MakePorts()
ports["sierpinskiArrowAngle"] =
@@ -218,25 +220,27 @@ func main() {
type FieldLayer struct {
field Field
loColor rl.Color
hiColor rl.Color
dirty bool
}
func (s *FieldLayer) Update(ctx *RenderCtx) {
func (fl *FieldLayer) Update(ctx *RenderCtx) {
;
}
func (s *FieldLayer) Draw(ctx *RenderCtx) {
func (fl *FieldLayer) Draw(ctx *RenderCtx) {
for x := range ctx.SourceWidth {
for y := range ctx.SourceHeight {
v := s.field.Get(float32(x), float32(y))
clr := GrayCurve(v, 1.0)
v := fl.field.Get(float32(x), float32(y))
clr := LerpCurve(v, 1.0, fl.loColor, fl.hiColor)
rl.DrawPixel(x, y, clr)
}
}
s.dirty = false
fl.dirty = false
}
func (s *FieldLayer) IsDirty() bool {
return s.dirty
func (fl *FieldLayer) IsDirty() bool {
return fl.dirty
}

View File

@@ -283,6 +283,7 @@ func (cl *ColorLayer) Update(ctx *RenderCtx) {
func (cl *ColorLayer) Draw(ctx *RenderCtx) {
rl.DrawRectangle(0, 0, ctx.SourceWidth, ctx.SourceHeight, cl.color)
cl.dirty = false
}
func (cl *ColorLayer) IsDirty() bool {

View File

@@ -21,6 +21,11 @@ func GrayCurve(v, k float32) rl.Color {
return rl.Color{R: c, G: c, B: c, A: 255}
}
func LerpCurve(v, k float32, lo rl.Color, hi rl.Color) rl.Color {
v = float32(math.Pow(float64(clamp01(v)), float64(k))) // k < 1 boosts highlights, k > 1 boosts shadows
return rl.ColorLerp(lo, hi, v)
}
func Brightness(c rl.Color) float32 {
r := float32(c.R) / 255
g := float32(c.G) / 255