automated snapshot
This commit is contained in:
30
main.go
30
main.go
@@ -60,15 +60,17 @@ func main() {
|
|||||||
|
|
||||||
sierpinskiLayer := &SierpinskiArrow { dirty: true }
|
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-black", rl.Black)
|
||||||
sketch.AddColorLayer("background-magenta", rl.Magenta)
|
//sketch.AddColorLayer("background-magenta", rl.Magenta)
|
||||||
sketch.AddLayer("field", &FieldLayer{field: field, dirty: true})
|
sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: rl.Magenta, dirty: true})
|
||||||
contourLayer := NewContourLayer(&sketch, rng, field)
|
contourLayer := NewContourLayer(&sketch, rng, field)
|
||||||
sketch.AddLayer("contours", contourLayer)
|
sketch.AddLayer("contours", contourLayer)
|
||||||
sketch.AddLayer("sierpinski", sierpinskiLayer)
|
sketch.AddLayer("sierpinski-arrowhead", sierpinskiLayer)
|
||||||
sketch.AddLayer("aurora", imageLayer)
|
sketch.AddLayer("aurora", aurora)
|
||||||
|
sketch.AddLayer("cave", cave)
|
||||||
|
|
||||||
ports := MakePorts()
|
ports := MakePorts()
|
||||||
ports["sierpinskiArrowAngle"] =
|
ports["sierpinskiArrowAngle"] =
|
||||||
@@ -218,25 +220,27 @@ func main() {
|
|||||||
|
|
||||||
type FieldLayer struct {
|
type FieldLayer struct {
|
||||||
field Field
|
field Field
|
||||||
|
loColor rl.Color
|
||||||
|
hiColor rl.Color
|
||||||
dirty bool
|
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 x := range ctx.SourceWidth {
|
||||||
for y := range ctx.SourceHeight {
|
for y := range ctx.SourceHeight {
|
||||||
v := s.field.Get(float32(x), float32(y))
|
v := fl.field.Get(float32(x), float32(y))
|
||||||
clr := GrayCurve(v, 1.0)
|
clr := LerpCurve(v, 1.0, fl.loColor, fl.hiColor)
|
||||||
rl.DrawPixel(x, y, clr)
|
rl.DrawPixel(x, y, clr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.dirty = false
|
fl.dirty = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *FieldLayer) IsDirty() bool {
|
func (fl *FieldLayer) IsDirty() bool {
|
||||||
return s.dirty
|
return fl.dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -283,6 +283,7 @@ func (cl *ColorLayer) Update(ctx *RenderCtx) {
|
|||||||
|
|
||||||
func (cl *ColorLayer) Draw(ctx *RenderCtx) {
|
func (cl *ColorLayer) Draw(ctx *RenderCtx) {
|
||||||
rl.DrawRectangle(0, 0, ctx.SourceWidth, ctx.SourceHeight, cl.color)
|
rl.DrawRectangle(0, 0, ctx.SourceWidth, ctx.SourceHeight, cl.color)
|
||||||
|
cl.dirty = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cl *ColorLayer) IsDirty() bool {
|
func (cl *ColorLayer) IsDirty() bool {
|
||||||
|
|||||||
5
utils.go
5
utils.go
@@ -21,6 +21,11 @@ func GrayCurve(v, k float32) rl.Color {
|
|||||||
return rl.Color{R: c, G: c, B: c, A: 255}
|
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 {
|
func Brightness(c rl.Color) float32 {
|
||||||
r := float32(c.R) / 255
|
r := float32(c.R) / 255
|
||||||
g := float32(c.G) / 255
|
g := float32(c.G) / 255
|
||||||
|
|||||||
Reference in New Issue
Block a user