npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@dono/lemon-js

v1.0.1

Published

Javascript rendering library

Downloads

8

Readme

Lemon-JS

An accessible rendering engine in Javascript.

Note: The goal of this project is to stay simple to make people understand and experiment with 3D rendering

Demonstrations

Features

  • Access to the low level API
  • Rendering queues and commands system
  • Lights support
  • Shaders
  • Scene management (nodes, hierrachy, …)
  • Separated "engine" logic from the low level part
  • Post processing
  • Loading models, sprites, videos and custom mesh

Todo

  • Fonts support
  • Advanced lighting
  • Batching

Installation

  • Download the latest version of LemonJS or install it with npm install @dono/lemon-js
  • Copy "shaders" folder to your project to get default shaders
  • Enjoy!

The Hello world of 3D : A cube

import {
  ProgramLibrary,
  RenderCanvas,
  Camera,
  Mesh,
  Scene,
  PointLight,
  Geometry,
  Material,
  Color
} from "@dono/lemon-js";

// Use the ProgramLibrary helper to build a shader with lights and texture support
ProgramLibrary.loadFromFile('DefaultShader', './shaders/GLSL/default.vert', './shaders/GLSL/default.frag', ['USE_LIGHT', 'USE_TEXTURE']);

// Create a new renderer using HTML identifier
const renderer = new RenderCanvas("simulation");

// A camera to draw the scene
const camera = new Camera();
camera.move(3, 3, 3);
camera.setViewport(0, 0, renderer.getWidth(), renderer.getHeight());

// Create a scene where we can add sprites, lights, objects, …
const scene = new Scene();

// Now we can create our first cube
const cube = new Mesh(
    Geometry.createCube(0.5, 0.5, 0.5),
    Material.Create('default'),
    ProgramLibrary.get('DefaultShader'),
);
scene.add(cube);

// A light to see something
const light = new PointLight();
light.setPosition(0, 3, 0);
scene.add(light);
let previous = 0;
let deltatime = 0;
const applicationLoop = (timestamp) => {
    requestAnimationFrame(applicationLoop);

    // Calculate elapsed time between two frames
    deltatime = timestamp - previous;
    previous = timestamp;

    // Update scene …
    scene.update(deltatime);

    // … then draw it!
    renderer.clear(new Color(30, 30, 30));
    renderer.render(scene, camera);
    renderer.display();
};
requestAnimationFrame(applicationLoop);

The result can be found here.

How to contribute

  • Clone this repository
  • npm install from the folder
  • npm run dev (developement) or npm run build (production)
  • Enjoy!

License

MIT