All Projects → GrimoireGL → Grimoirejs

GrimoireGL / Grimoirejs

Licence: mit
A WebGL framework for Web development.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Grimoirejs

Demos
One repo to rule them all.
Stars: ✭ 204 (-39.82%)
Mutual labels:  webgl, canvas
Three.js
JavaScript 3D Library.
Stars: ✭ 78,237 (+22978.76%)
Mutual labels:  webgl, canvas
Canvas2dtowebgl
Ports (almost) all Canvas2D functions to the GPU so it can be mixed with a WebGL canvas.
Stars: ✭ 206 (-39.23%)
Mutual labels:  webgl, canvas
Pixi Haxe
Externs of Pixi.js for Haxe
Stars: ✭ 175 (-48.38%)
Mutual labels:  webgl, canvas
Melonjs
a fresh & lightweight javascript game engine
Stars: ✭ 3,721 (+997.64%)
Mutual labels:  webgl, canvas
Tilemap
Rectangular tilemap implementation for PixiJS
Stars: ✭ 177 (-47.79%)
Mutual labels:  webgl, canvas
Ol3echarts
🌏 📊 ol3Echarts | a openlayers extension to echarts
Stars: ✭ 229 (-32.45%)
Mutual labels:  webgl, canvas
Proton
Javascript particle animation library
Stars: ✭ 1,958 (+477.58%)
Mutual labels:  webgl, canvas
Easycanvas
数据驱动、2D&3D、渐进式Canvas库,支持JSX,配备Chrome调试插件,支持微信小游戏、物理引擎等。
Stars: ✭ 281 (-17.11%)
Mutual labels:  webgl, canvas
Sessions
A series of creative coding sessions
Stars: ✭ 262 (-22.71%)
Mutual labels:  webgl, canvas
Mesh.js
A graphics system born for visualization 😘.
Stars: ✭ 156 (-53.98%)
Mutual labels:  webgl, canvas
Phaser3 Docs
Phaser 3 Documentation and TypeScript Defs
Stars: ✭ 339 (+0%)
Mutual labels:  webgl, canvas
Layaair discard
This is old LayaAir veriosn writetten by ActionScript 3.0 ,now LayaAir is using TypeScript as the Engine Script,Please use https://github.com/layabox/LayaAir instead.
Stars: ✭ 1,858 (+448.08%)
Mutual labels:  webgl, canvas
Gown.js
UI system for pixi.js inspired by feathers-ui
Stars: ✭ 195 (-42.48%)
Mutual labels:  webgl, canvas
Zen 3d
JavaScript 3D library.
Stars: ✭ 155 (-54.28%)
Mutual labels:  webgl, canvas
Flvplayer
🍭 FlvPlayer.js is a JavaScript player for decode flv to the canvas
Stars: ✭ 210 (-38.05%)
Mutual labels:  webgl, canvas
Alien.js
Future web pattern
Stars: ✭ 141 (-58.41%)
Mutual labels:  webgl, canvas
Wechart
Create all the [ch]arts by cax or three.js - Cax 和 three.js 创造一切图[表]
Stars: ✭ 152 (-55.16%)
Mutual labels:  webgl, canvas
Pancake
Lightweight, Fast, Easy-to-use HTML5 2D game framework!
Stars: ✭ 79 (-76.7%)
Mutual labels:  webgl, canvas
Modv
modular audio visualisation powered by JavaScript
Stars: ✭ 292 (-13.86%)
Mutual labels:  webgl, canvas

Grimoire.js

Slack Status Circle CI LICENSE Dependency Status devDependency Status Greenkeeper badge

Overview

Grimoire.js provide a bridge between Web engineers and CG engineers

There were big gap between the development flows used for each.

Web engineers have typically used event driven javascript programs for daily works. And they mutate DOM APIs to make Web pages dynamic.

However, CG engineers has typically used loop based programs for daily works. These are mostly build with a programming language with strong type like C++ or C#. And recently CG engineers more like to use strongly structured engines like Unity.

This is why these 2 engineers have so much different flow for workings. This is why it is hard to learn CG stuff by Web engineers. And CG engineers are also hard to make suitable APIs for Web engineers working with.

Grimoire.js is a javascript(Typescript) framework to solve this problem with strong architecture

Features

You can see several feature of Grimoire.js providing in this section.

We strongly recommend to see our top page to learn these features. Most of written things are same as this README.md. But our samples on the top pages are working!!.

HTML like markup

We provides a syntax like XML to compose WebGL canvas. This is kind of HTML for Web engineers. You can create 360 degree image viewer on browser only by writing the code below.(See official page to see working example)

<goml>
  <scene>
    <camera></camera>
    <mesh geometry="sphere" cull="front" texture="360.jpg">
      <mesh.components>
        <Rotate speed="0.1" />
      </mesh.components>
    </mesh>
  </scene>
</goml>

DOM operation API

Web engineers typically write javascript to mutate DOM structures or attributes. All that kinds things are same at Grimoire. Web engineers can use query-based operation API to changing attributes, modifying structures of DOM or registering event handlers.

These are codes to co-work WebGL canvas and Web UIs that made with ordinal web development way. (You can see working example on our official top page)

<goml>
  <scene>
    <camera></camera>
    <mesh texture="logo.png" geometry="cube">
      <mesh.components>
        <Rotate speed="0,0.1,0" />
      </mesh.components>
    </mesh>
  </scene>
</goml>
gr(function() {
  var mesh = gr('#simple .canvas')('mesh')
  $('#simple .red').on('click', function () {
    mesh.setAttribute('color', 'red')
  })
  $('#simple .blue').on('click', function () {
    mesh.setAttribute('color', 'blue')
  })
  mesh.on('mouseenter', function () {
    mesh.setAttribute('scale', '2.0')
    $("#simple .bigger").addClass("bold-label");
    $("#simple .smaller").removeClass("bold-label");
  })
  mesh.on('mouseleave', function () {
    mesh.setAttribute('scale', '1.0')
    $("#simple .smaller").addClass("bold-label");
    $("#simple .bigger").removeClass("bold-label");
  })
})

Simple and powerful architecture, Typescript ready

If you really want to make WebGL stuff on your page, it is hard to make only by Web engineers if that contents requires highly customized representation. In this situation, Web engineers and CG engineers need to co-work.

CG engineers can write a component. And these are reusable.

And these are able to be written by Typescript. Safe and effective environment for development.

This is a sample to make objects waving movement. (You can see full comprehensive this sample at our top page)

import Component from "grimoirejs/ref/Node/Component";
import ISceneUpdateArgument from "grimoirejs-fundamental/ref/SceneRenderer/ISceneUpdateArgument";
import TransformComponent from "grimoirejs-fundamental/ref/Components/TransformComponent";
import Vector3 from "grimoirejs-math/ref/Vector3";
import gr from "grimoirejs";
class Wave extends Component{
  public static attributes = {
    amp:{
      default:1.0,
      converter:"Number"
    },
    speed:{
      default:1.0,
      converter:"Number"
    }
  };

  public amp:number;

  public speed:number;

  private transform: TransformComponent;

  public $mount():void{
    this.transform = this.node.getComponent(TransformComponent);
    this.__bindAttributes(); // bind component attributes to fields
  }
  public $update(t:ISceneUpdateArgument):void{
    this.transfrom.position = new Vector3(this.transform.position.X,Math.sin(this.speed * t.timer.timeInSecound) * this.amp,this.transform.position.Z);
  }
}
gr.registerComponent("Wave",Wave);

Download

Please see official site and Download page.

Useful Links

API Reference

See here.

This document is automatically generated.

Make sure the API reference is only containing core stuff(Mutating goml stuff, operating attributes, methods being available on Component instance and so on).

If you want to see WebGL related feature of API, you should see renderer plugin page.

LICENSE

MIT License

(See the LICENSE file for more detail.)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].