# noeidelon

Foxes dream of electron beams.

**noe** + **eidelon** _(n. a thing, an image, a reflection)_

https://art.mekanoe.com

## Artworks

<!--/INSERT/-->

## Development

`nix` to install bun... or do it globally.

`bun run .` to generate HTMLs

`bun serve` to serve them locally

`bun dev` if you're developing the templates for auto-generation.

### Infrastructure

- **Output generation**

  - Bun renders TypeScript and GLSL to html/
  - src/public/ is copied to html/
    - This doubles as an "archival" system to preserve scuffedness
  - .ply files are converted to JS typed arrays and Mesh objects
  - .html files (and README.md) are generated from rendered TypeScript main.ts files.

- **Platform**

  - WebGLApp provides render loop, canvas, and other stuff
  - Behavior provides automatic registration of WebGLApp events (like Unity MonoBehaviors)
  - Shader provides GLSL shader tooling
  - Mesh is a DTO with vertex position, color, UVs, and faces
  - MeshRenderer sends WebGL instructions for rendering a Mesh object with a Shader object.
  - Renderable is a container of a Transform and Renderer (like a Unity GameObject)
  - Transform is a tuplet of a position vec3, rotation quat, and scale vec3; to be used anywhere needed.
  - Scene is a group of Renderables

## License

Code and images are licensed under the AGPLv3 license. See [LICENSE](./LICENSE) for more information.
