JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q47232F
  • License MIT

Package Exports

  • demolishedrenderer
  • demolishedrenderer/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (demolishedrenderer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

demolishedRenderer

About

demolishedRenderar is a lightweight high-performance, easy to use multi-pass (1-n shader programs/buffers) rendering engine that supports 1-n textures,custom uniforms.

DR is written mainly for a demo-scene purpose.

Install

npm install demolishedrenderer

Get started

Create an instance of the renderer

 constructor(canvas: HTMLCanvasElement, mainVertexShader: string, mainFragmentShader: string, customUniforms?: ICu);

Methods

addAssets (aA)

Add assets shared, global assets that can be used 1-n buffers

aA(assets: any, cb: () => void): DR;

addBuffer (aB)

Create a render buffer, shader that produces a texture that can be use for output etc within main fragment.

   aB(name: string, vertex: string, fragment: string, textures?: Array<string>, customUniforms?: ICu): DR;

R(time:number)

Render a frame based on time

run(startTime:number,fps:number)

Start a render loop at startTime, fps sets a maximum frame rate (FPS)

sP(key: string, state: boolean):void

Enable or disable a buffer/program. Can be toggled during render loop.

Texture's & Custom Uniforms

Pass 1-n textures to the engines as an Array<Itx> , textures is shared among 1-n buffers / shader programs. When adding a buffer you need to specify with textures to use.

   aB("myByffer,vertexShader,fragmentShader",["myTexture1","myTexture2],cU):

Texture (ITx)

interface ITx {
    src?: any,
    fn?(currentProgram:WebGLProgram,src:any): Function
}

example

let textures = [
    {
         "myTexture1": {
           src: "/test/assets/texture.jpg"
        },
    },
    {
         "myTexture2": {
            (gl,c) => {
                    // do stuff with your gl program texture...
            }
        },
    }

]

Custom Uniform's

Bulit in uniforms are , this are updated for each frame, this also applies to customUniforms,

uniform float time; 
uniform int frame;
uniform int deltaTime; 
uniform vec2 resolution;
uniform sampler2D {bufferName}; // bufferName = the name of your buffer, contains previous frame.  ( applies to main fragment shader)

Add custom uniform(s)

const customUniforms = {
        "fRnd": (location, currentGlProgram, mainGlProgram, renderTime) => { 

            currentGlProgram.uniform1f(location,Math.random()); 
        
        },
        ....

Custom uniforms can be passed to each buffer as well as the main program.

Kind regards, Magnus 'Bagzy' Thor