Skip to main content
Deno 2 is finally here 🎉️
Learn more

susurrus

a simple lightweight javascript library intended to help create highly performant visualizations for the web.

Well that’s the plan at least.

In reality, Susurrus is essentially a blank slate that will be etched as I learn WebGL. Moving forward Susurrus will take inspiration from much cooler libraries (e.g. MonoGame, p5.js, three.js) and design principles from morro (another open-source project I am working on).

Usage

// TODO: write a paragraph or something too

import * as Susurrus from "./dist/susurrus.esm.min.js";

class Sketch extends Susurrus.Sketch {
  constructor() {
    super("//TODO: replace with a valid id");
  }

  initialize() {
    this.graphics.setCanvasDimensions(400, 400);
    this.graphics.setSketchResolution(4, 4);

    this.camera = new Susurrus.Camera(
      this.canvas.width / this.graphics.scale,
      this.canvas.height / this.graphics.scale
    );

    this.basicEffect = new Susurrus.BasicEffect(this.graphics);

    this.triangleData = new Susurrus.PolygonData(
      this.graphics,
      [0, 0, 0, 0, 1, 0, 1, 1, 0],
      [0, 1, 2]
    );

    this.triangle = new Susurrus.Polygon(this.graphics, this.triangleData);
    this.triangle.color = new Susurrus.Color(0xffffff);
    this.triangle.scale = new Susurrus.Vector3(1, 1, 1);
    this.triangle.applyChanges();
  }

  update(deltaTime) {
    this.triangle.rotation += 0.5 * deltaTime;
    this.triangle.applyChanges();
  }

  draw() {
    this.graphics.clear(Susurrus.Colors.SkyBlue);

    this.triangle.draw(this.graphics, this.basicEffect, this.camera);
  }
}

const sketch = new Sketch();
sketch.run();