modern-renderer
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

modern-renderer

Minzip Version Downloads Issues License

Features

  • All operations return WebGL native objects (no additional encapsulation)

  • Automatically adapted to WebGL or WebGL2 (default)

  • Cache WebGL state to avoid unwanted GPU communication

  • The native WebGL object extension state is associated with WeakMap to avoid memory leaks

  • Provides simple VAO call

  • TypeScript, of course

Install

npm i modern-renderer

Usage

import { WebGLRenderer } from 'modern-renderer'

const renderer = new WebGLRenderer(document.querySelector('canvas'))

const program = renderer.createProgram({
  vert: `precision mediump float;
attribute vec2 position;
void main() {
  gl_Position = vec4(position, 0, 1);
}`,
  frag: `precision mediump float;
uniform vec4 color;
void main() {
  gl_FragColor = color;
}`,
})

const vertexBuffer = renderer.createBuffer({
  target: 'array_buffer',
  data: new Float32Array([
    -1, -1, +1, -1,
    -1, +1, +1, +1,
  ]),
  usage: 'static_draw',
})

const elementArrayBuffer = renderer.createBuffer({
  target: 'element_array_buffer',
  data: new Uint16Array([
    0, 1, 2,
    1, 3, 2,
  ]),
  usage: 'static_draw',
})

const vertexArray = {
  attributes: {
    position: vertexBuffer,
  },
  elementArrayBuffer,
}

const vao = renderer.createVertexArray(program, vertexArray)

renderer.activeProgram(program)
renderer.activeVertexArray(vao ?? vertexArray)
renderer.updateUniforms({
  color: [0, 1, 0, 1],
})
renderer.draw()

Global function style

import {
  WebGLRenderer,
  setCurrentRenderer,
  glCreateProgram,
  glCreateBuffer,
  glCreateVertexArray,
  glActiveProgram,
  glActiveVertexArray,
  glUpdateUniforms,
  glDraw,
} from 'modern-renderer'

setCurrentRenderer(new WebGLRenderer(document.querySelector('canvas')))

const program = glCreateProgram({
  vert: `precision mediump float;
attribute vec2 position;
void main() {
  gl_Position = vec4(position, 0, 1);
}`,
  frag: `precision mediump float;
uniform vec4 color;
void main() {
  gl_FragColor = color;
}`,
})

const vertexBuffer = glCreateBuffer({
  target: 'array_buffer',
  data: new Float32Array([
    -1, -1, +1, -1,
    -1, +1, +1, +1,
  ]),
  usage: 'static_draw',
})

const elementArrayBuffer = glCreateBuffer({
  target: 'element_array_buffer',
  data: new Uint16Array([
    0, 1, 2,
    1, 3, 2,
  ]),
  usage: 'static_draw',
})

const vertexArray = {
  attributes: {
    position: vertexBuffer,
  },
  elementArrayBuffer,
}

const vao = glCreateVertexArray(program, vertexArray)

glActiveProgram(program)
glActiveVertexArray(vao ?? vertexArray)
glUpdateUniforms({
  color: [0, 1, 0, 1],
})
glDraw()

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.5.03latest

Version History

VersionDownloads (Last 7 Days)Published
0.5.03
0.4.00
0.3.40
0.3.30
0.3.20
0.3.10
0.3.00
0.2.140
0.2.130
0.2.120
0.2.110
0.2.100
0.2.90
0.2.80
0.2.70
0.2.60
0.2.50
0.2.40
0.2.30
0.2.20
0.2.10
0.2.00
0.1.50
0.1.40
0.1.30
0.1.20
0.1.10
0.1.00
0.0.100
0.0.90
0.0.80
0.0.70
0.0.60
0.0.50
0.0.40
0.0.30
0.0.20
0.0.10

Package Sidebar

Install

npm i modern-renderer

Weekly Downloads

3

Version

0.5.0

License

MIT

Unpacked Size

92.1 kB

Total Files

33

Last publish

Collaborators

  • wengxiangmin