• Stars
    star
    355
  • Rank 115,449 (Top 3 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 10 years ago
  • Updated about 1 year ago

Reviews

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

Repository Details

Lightweight Javascript WebGL library for handling Context, Meshes, Textures and Shaders. Relies on glMatrix 2.0, very easy to use.

litegl.js

Litegl.js is a library that wraps WebGL to make it more user-friendly by creating classes for managing different items like Buffer, Mesh, Texture, Shader and other common aspects of any WebGL applications.

It helps simplifying working with WebGL without having to handle all the low-level calls but without losing any freedom.

Some features are:

  • Easy context creation
  • Classes for:
    • Meshes and Buffers: Fill a buffer easily and upload it to the GPU
    • Textures: load, fill, clone, copy (even blur) for TEXTURE_2D and TEXTURE_CUBE_MAP
    • Shaders: compile from string, from file, insert preprocessor macros, extracts all the uniform locations
    • FrameBufferObjects: to render to a texture, to multiple textures, to depth texture.
  • Some basic primitive shapes (plane, cube, sphere, cylinder, hemisphere).
  • OBJ parser and encoder (easy to add new ones)
  • Loaders for Images and Meshes from URL (uses a placeholder till its loaded)
  • Uses typed-arrays for everything (uses glMatrix for all operations)
  • No garbage generated (reuses containers)
  • Basic Raytracing (for ray-sphere, ray-aabb, ray-plane, and ray-mesh)
  • Events system
  • Cross-browser input handling for mouse, keyboard and gamepad
  • Supports multiple WebGL contexts
  • Supports WebGL1 and WebGL2
  • Octree class

It is a fork from LightGL.js by Evan Wallace, but some major changes have been made. Some of the main differences:

  • Matrices have been replaced by glMatrix
  • Meshes are forced to be stored in ArrayBuffer formats
  • Meshes support range rendering with offset
  • Removed fixed pipeline behaviour
  • Better event handling (mouse position, mouse wheel, dragging)
  • Textures expanded to support Arraybuffers and Cubemaps
  • Events system to trigger events from any object
  • Support for multiple WebGL contexts in the same page

This library has been used in several projects like Rendeer.js or Canvas2DtoWebGL.

For a list of similar libraries check this list

If you need something more high-level like ThreeJS check Rendeer.js, my own SceneGraph + Renderer library that supports GLTF, Skeletal Animation and PBR rendering.

Demos

Demos are included in the Examples folder but you can check them in this website.

Usage

Include the library and dependencies

<script src="js/gl-matrix-min.js"></script>
<script src="js/litegl.js"></script>

Create the context

var gl = GL.create({width:800, height:600});

Attach to DOM

document.getElementById("mycontainer").appendChild( gl.canvas )

Get user input

gl.captureMouse();
gl.onmousedown = function(e) { ... }

gl.captureKeys();
gl.onkey = function(e) { ... }

Compile shader

var shader = new GL.Shader( vertex_shader_code, fragment_shader_code );

Create Mesh

var mesh = new GL.Mesh({vertices:[-1,-1,0, 1,-1,0, 0,1,0], coords:[0,0, 1,0, 0.5,1]});

Load a texture

var texture = GL.Texture.fromURL("image.jpg", { minFilter: gl.LINEAR_MIPMAP_LINEAR });

Render

gl.ondraw = function() {
	texture.bind(0);
	var my_uniforms = { u_texture: 0, u_color: [1,1,1,1] };
	shader.uniforms( my_uniforms ).draw( mesh );
}

gl.animate(); //calls the requestAnimFrame constantly, which will call ondraw

For better understanding of all the features and how to use them check the guides folder.

Documentation

The doc folder contains the documentation. For info about glmatrix.net check the documentation in its website.

Check the guides folder to see how to use all the features.

Utils

It includes several commands in the utils folder to generate doc, check errors and build minifyed version.

Feedback

You can write any feedback to [email protected]

More Repositories

1

webglstudio.js

A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more.
JavaScript
5,125
star
2

litegraph.js

A graph node engine and editor written in Javascript similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D. The engine can run client side or server side using Node. It allows to export graphs as JSONs to be included in applications independently.
JavaScript
4,788
star
3

litescene.js

A WebGL 3D Engine library with component-based node hierarchy. Used by WebGLStudio
JavaScript
354
star
4

Canvas2DtoWebGL

Ports (almost) all Canvas2D functions to the GPU so it can be mixed with a WebGL canvas.
JavaScript
297
star
5

litegui.js

Javascript Library to create webapps with a desktop look-alike interface. All the widgets are created from Javascript instead of using HTML.
JavaScript
172
star
6

litefilesystem.js

Library with client (js) and serverside (php) to have a filesystem with previews, quotas, metadata, and multiple users with privileges.
PHP
138
star
7

rendeer.js

Light-weight 3D Scene graph library with renderer in WebGL
JavaScript
82
star
8

collada.js

Collada parser in javascript. It supports skinning, morph targets and bone or node animation. It can parse inside a worker.
JavaScript
48
star
9

wide

A lightweight web IDE (mostly a coding editor) based in monaco-editor (with a one-file server made in php). It allows to navigate the server with commands.
JavaScript
46
star
10

GTR_Framework

OpenGL C++ Framework for the realtime rendering course
C
40
star
11

SillyServer.js

Simple WebSockets server in nodejs that bounces packets with some extra functionality (rooms and http request to store permanent information)
JavaScript
19
star
12

sidviz

A C64 Music chip 6581/8580 visualizer in javascript. It allows to playback SID files and shows the state of the chip during the playback.
JavaScript
12
star
13

litepixel.js

2D Game Engine in WebGL
JavaScript
11
star
14

litegraph_native

A Litegraph.js implementation in C++. It only supports the execution of nodes created using LiteGraph.JS
C
11
star
15

htmlcubemap

A simple class to embed a panoramic view in a website from six pictures
JavaScript
10
star
16

glui.js

An inmediate mode GUI that works on top of Canvas2D (it can also work in WebGL)
JavaScript
10
star
17

TJE_Framework

Basic C++ Framework for games, it wraps the basic GPU interface (Meshes, Textures, Shaders, Application).
C
10
star
18

liteos.js

Very simple browser operative system in javascript. Applications are executed in Workers.
PHP
8
star
19

webc

C++ from the web: CodeMirror + Emscripten
JavaScript
7
star
20

miniengine

Simple C++ OpenGL engine
C
7
star
21

game2d_2019

A C++ game made during a week for the Game's Dev course at UPF 2019
C++
6
star
22

gameshouse

Games host server in nodejs, it helps creating persistent online games by providing a dashboard to invite players, launch instances and check stats.
JavaScript
5
star
23

jstoolbits

A set of classes in Javascript I use in most of my projects.
JavaScript
4
star
24

evac3d

A 13Kb javascript game for the JS13K compo of 2022
HTML
3
star
25

litengine

C
2
star