The purpose of the module is to create and update path-traced 2D lightmaps. For example, to create interesting dynamic top-down lighting in a 2D game.
lm := lightmap.New(image.Rect(0, 0, 100, 100))
light := lightmap.Light{
#!/usr/bin/env bash | |
set -euxo pipefail | |
# Idempotent deck setup script | |
# Expects to live with other dotfiles: | |
# - ~/.bashrc | |
# - ~/.flat/docker | |
# - ~/.flat/docker-compose | |
# ref: https://askubuntu.com/a/30157/8698 |
import { ReactiveController, LitElement } from 'Lit'; | |
/* | |
class Component extends LitElement { | |
bounds = new BoundsControllerBasic(this); | |
render() { | |
// use this.bounds.width, this.bounds.height | |
} |
// node clobber.mjs -> demonstrate common filesystem anti-pattern that creates race conditions | |
// node clobber.mjs safe -> demonstrate safe filesystem manipulation | |
import cluster from 'cluster'; | |
import process from 'process'; | |
import fs from 'fs'; | |
import path from 'path'; | |
import { fileURLToPath } from 'url'; | |
const __dirname = path.dirname(fileURLToPath(import.meta.url)); |
Format: JSON | |
Protocol: HTTP | |
Type: Post (always Post, or just for transactions? Can I GET a query as well?) | |
Concept: Query | |
--- | |
Protocol Method | |
(Concept) | |
--- | |
HTTP Post | |
(Query) |
for (let i = 1; i <= 100; i++) { | |
const match = [] | |
if (i % 3 === 0) match.push('fizz') | |
if (i % 5 === 0) match.push('buzz') | |
if (match.length === 0) match.push(i) | |
console.log(match.join('')) | |
} |
// Start starts rendering based on CLI parameters | |
func (c Cli) Start() { | |
out := flag.String("out", "render.png", "Output png filename.") | |
concurrency := flag.Int("frames", runtime.NumCPU(), "Number of frames to combine.") | |
samples := flag.Float64("samples", math.Inf(1), "Average per pixel samples to take.") | |
heat := flag.String("heat", "", "Heatmap png filename.") | |
flag.Parse() | |
running := make(chan struct{}) | |
ch := make(chan os.Signal, 2) |
func main() { | |
scene := trace.Scene{} | |
camera := trace.Camera{Width: 960, Height: 540} | |
sampler := trace.NewSampler(&camera, &scene, 10) | |
renderer := trace.NewRenderer(&camera) | |
light := trace.NewLight(1000, 1000, 1000) | |
redPlastic := trace.NewPlastic(1, 0, 0, 1) | |
bluePlastic := trace.NewPlastic(0, 0, 1, 1) | |
whitePlastic := trace.NewPlastic(1, 1, 1, 0) | |
silver := trace.NewMetal(0.972, 0.960, 0.915, 1) |
package main | |
import "fmt" | |
// fibonacci is a function that returns | |
// a function that returns an int. | |
func fibonacci() func() int { | |
prev := [2]int{0, 1} | |
return func() int { | |
n := prev[0] |
<!doctype html> | |
<html> | |
<head> | |
<title>JS Paint</title> | |
<style> | |
* { margin: 0; padding: 0; box-sizing: border-box; font-family: arial, sans-serif; } | |
body { background: #eee; } | |
#wrap { position: relative; margin: 50px auto 0 auto; width: 800px; } | |
#canvas { width: 800px; height: 600px; background: #fff; box-shadow: 1px 1px 32px #ddd; cursor: crosshair; } | |
#tools { position: absolute; width: 150px; top: 0; left: -150px; font-size: 18px; } |