• Stars
    star
    378
  • Rank 113,272 (Top 3 %)
  • Language Janet
  • License
    MIT License
  • Created over 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a playground for making 3D art with lisp and math

Bauble

Bauble is a toy for composing signed distance functions in a high-level language (Janet), compiling them to GLSL, and rendering them via WebGL.

Bauble is still in its early days, but it's progressed to the point that you can do some pretty neat stuff with it. Try it out at https://bauble.studio/, or watch this video introduction where I model an infinite number of hot air balloons:

Livecoding a hot air balloon (1/3)

For more examples, I sometimes tweet videos of Bauble's development:

Dependencies

Bauble requires at least Janet 1.28.0. It may work with newer versions of Janet, assuming that the image format is compatible, but it's better to update the version of Janet that Bauble includes to match your local version.

Afterwards, install JavaScript dependencies with:

$ yarn
$ (cd ui && yarn)

bauble is being developed alongside codemirror-lang-janet. If you want to make changes to the grammar, clone that repo and run yalc publish from the root of it. Then run yalc link codemirror-lang-janet in this repository, and you'll be able to see your changes locally.

Development

To build Bauble, all you have to do is run:

$ redo

To create a minified, optimized build, use:

$ BUILD_MODE=prod redo

Lint the JS with:

(cd ui/; yarn eslint .)

You can serve a local Bauble like this:

$ node_modules/.bin/alive-server public

Known bugs

  • Bauble will cast and calculate lights even for shaders that don't need lights, making it slower than it needs to be in the default RGB-normal shading view.

More Repositories

1

sd

a cozy nest for your scripts
Shell
704
star
2

zsh-autoquoter

automatically quote arguments to commands like `git commit -m`
Shell
114
star
3

basilica

It's kinda like a forum.
Haskell
114
star
4

mixologician

optimize your home bar with ✨logic programming✨
Prolog
75
star
5

judge

self-modifying test library for janet
Janet
68
star
6

toodle.studio

turtle graphics playground
TypeScript
66
star
7

dotfiles

My dotfiles. For easy clonin'.
Emacs Lisp
49
star
8

macaroni

macro spaghetti code
Janet
28
star
9

ocamlsyntax.com

How do you do that recursive GADT thing again?
CSS
27
star
10

cmd

command-line argument parser for Janet
Janet
24
star
11

jimmy

Janet bindings for the persistent data structure library "immer"
C++
18
star
12

tightrope

Making Slackbots is hard! But wait: now it's easy.
Haskell
14
star
13

janet-stuff

an index of all of my public-facing janet projects
11
star
14

pat

a better pattern matching macro for janet
Janet
10
star
15

sd-nix

some helpers for working with nix
Shell
10
star
16

privy

inline output for the ivy array language
Janet
9
star
17

effing.js

Function functions.
CoffeeScript
9
star
18

bytemap

text-based canvas
Janet
9
star
19

basilica-client

An Om client for basilica
Clojure
8
star
20

janet-cross-compile

demonstration of using zig cc to cross-compile native janet binaries
C
8
star
21

codemirror-lang-janet

Janet support for CodeMirror 6
TypeScript
7
star
22

memegen

A meme generator for discriminating meme enthusiasts
Haskell
7
star
23

banquet

fancy tables
Janet
7
star
24

aoc-2023

advent of code 2023 in janet
Janet
6
star
25

square

alternate PEG syntax for Janet
Janet
5
star
26

petal

my pet array language
Rust
5
star
27

janet-midi

Janet bindings for RtMidi, a cross-platform MIDI library
C++
5
star
28

janet-module

a simple module macro
Janet
5
star
29

utf8-parser

A fun way to learn about UTF-8 and parser combinators
Haskell
5
star
30

janet-clipper

Janet bindings for clipper, a polygon utility library
C++
3
star
31

to-do

a very simple plain-text todo list
Janet
3
star
32

zsh-expander

predictable fzf-based completion for zsh
Shell
3
star
33

cmp

comparison combinators for Janet
Janet
3
star
34

rogue

A roguelike, in Haskell
Haskell
3
star
35

janet-whereami

a janet wrapper around the whereami library
C
2
star
36

matchbook

Declarative pattern matching for JavaScript
CoffeeScript
2
star
37

heap

comparator-based min-max heap for janet
Janet
2
star
38

httprintf

Some scripts for creating a development HTTP server.
Shell
2
star
39

steno

command-line snapshot testing tool
Janet
2
star
40

spoon

command line interface for lambda soup
OCaml
2
star
41

territory

An abstract game of territory control made in a single sitting
Objective-C
1
star
42

nix-zshell

Hack to make nix-shell play nicely with zsh
Shell
1
star
43

brinks

Algebraic data types for JavaScript
JavaScript
1
star
44

privy-mode

emacs major mode for the ivy array language and privy preprocessor
Emacs Lisp
1
star
45

overtone-demo

A demo of overtone. For a tech talk.
Clojure
1
star
46

dismissive-clojure

Send emails... to the future!
Clojure
1
star
47

ctrl-c

Being interrupted as a service
Shell
1
star
48

inline

Inline: offline outlining.
JavaScript
1
star
49

rundown

running with markdown
Rust
1
star
50

ianthehenry

1
star
51

dismissive

Emailing the future as a service
Haskell
1
star
52

tales

An adventure in collaborative storytelling.
Haskell
1
star