メインコンテンツまでスキップ

Introduction

What does it look like?

glre simplifies WebGl2 / WebGPU programming via TypeScript, React, Solid and more

4
import { createRoot } from 'react-dom/client'
import { useGL } from 'glre/react'
import { vec4, uv } from 'glre/node'
const Canvas = () => {
const gl = useGL({ frag: vec4(uv, 0, 1) })
return <canvas ref={gl.ref} />
}

createRoot(document.getElementById('root')).render(<Canvas />)

Varying

ライブエディター
function Canvas() {
        const a_position = attribute([0, 0.73, -1, -1, 1, -1])
        const a_color = attribute([1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1])
        const gl = useGL({
                count: 3,
                width: 256,
                height: 256,
                isWebGL: true,
                vert: vec4(a_position, 0.0, 1.0),
                frag: vertexStage(a_color),
        })
        return <canvas ref={gl.ref} />
}
結果
Loading...

Uniforms

ライブエディター
function Canvas() {
        const gl = useGL({
                width: 256,
                height: 256,
                isWebGL: true,
                frag: vec4(uv.sub(iMouse).fract(), 0, 1),
        })
        return <canvas ref={gl.ref} />
}
結果
Loading...

Attributes

ライブエディター
function Canvas() {
        const a_position = attribute([0, 0.73, -1, -1, 1, -1])
        const gl = useGL({
                count: 3,
                width: 256,
                height: 256,
                isWebGL: true,
                vert: vec4(a_position, 0, 1),
        })
        return <canvas ref={gl.ref} />
}
結果
Loading...

Textures

ライブエディター
function Canvas() {
        const iTexture = uniform('https://avatars.githubusercontent.com/u/40712342')
        const gl = useGL({
                width: 256,
                height: 256,
                isWebGL: true,
                frag: texture(iTexture, uv),
        })
        return <canvas ref={gl.ref} />
}
結果
Loading...