glsl-projectron

WebGL demo to evolve data that projects into a given target image

  • Owner: fenomas/glsl-projectron
  • Platform:
  • License::
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

GLSL-Projectron


This is a WebGL/GPGPU demo I made to try out shader programming. It generates random 3D polygons which resemble a given target image when projected. Basically it's similar to this, but done in 3D and on the GPU.

After many generations, you get a chaotic bunch of polygons that align into an image, but only from just the right angle:

Screencap of sample output

Live demos:

I also put up a blog post here explaining the algorithm, and how I made it run fast on the GPU.

Installation & Usage

git clone [this repo]
cd glsl-projectron
npm install
npm start

That serves a local build of the "Create" demo linked above, in localhost:8080.

Use npm run build to rebuild the static version in /docs.

To use this as a dependency, follow the example in /demo/maker.js:

import { Projectron } from 'path/to/glsl-projectron'
var proj = new Projectron(canvasElement)

var img = new Image()
img.onload = () => { proj.setTargetImage(img) }
img.src = 'path/to/image.png'
//..
proj.runGeneration()    // many times..
proj.draw(x,y)          // once per frame..

Known issues:

  • Doesn't detect most error cases (just whether WebGL is supported)
  • Library treats input images as if they were square. To use for other aspects, just run it normally and change the aspect of the canvas you use to display the results.

Credits

Made with ? by Andy Hall. MIT license.

Main metrics

Overview
Name With Ownerfenomas/glsl-projectron
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 2)
Platform
License:
所有者活动
Created At2014-12-07 08:19:20
Pushed At2023-11-06 16:02:15
Last Commit At2023-11-07 01:02:13
Release Count0
用户参与
Stargazers Count321
Watchers Count10
Fork Count26
Commits Count48
Has Issues Enabled
Issues Count1
Issue Open Count1
Pull Requests Count3
Pull Requests Open Count21
Pull Requests Close Count6
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private