All Projects → neefrehman → manyworlds

neefrehman / manyworlds

Licence: GPL-3.0 license
A scifi-inspired study of signed distanced functions and noise fields in WebGL

Programming Languages

typescript
32286 projects
GLSL
2045 projects
CSS
56736 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to manyworlds

Shader Doodle
A friendly web-component for writing and rendering shaders.
Stars: ✭ 356 (+1383.33%)
Mutual labels:  creative-coding, shaders, glsl
Retrace.gl
Create, ray trace & export programatically defined Signed Distance Function CSG geometries with an API suited for generative art - in your browser! 🎉
Stars: ✭ 149 (+520.83%)
Mutual labels:  shaders, glsl, generative-art
Awesome Creative Coding
Creative Coding: Generative Art, Data visualization, Interaction Design, Resources.
Stars: ✭ 8,696 (+36133.33%)
Mutual labels:  creative-coding, shaders, generative-art
SdfFontDesigner
Offline font tuning/bitmap generation via shaders
Stars: ✭ 56 (+133.33%)
Mutual labels:  creative-coding, shaders, glsl
Shadertoy React
6kB "Shadertoy" like react component letting you easily render your fragment shaders in your React web projects, without having to worry about implementing the WebGL part.
Stars: ✭ 74 (+208.33%)
Mutual labels:  creative-coding, shaders, glsl
Messier87
A realtime raytracing blackhole renderer
Stars: ✭ 53 (+120.83%)
Mutual labels:  shaders, glsl
shaping-functions
Visualisation of shaping functions
Stars: ✭ 75 (+212.5%)
Mutual labels:  glsl, generative-art
2d-diffusion-limited-aggregation-experiments
Visual experiments exploring diffusion-limited aggregation (DLA) as a 2D morphogenesis tool.
Stars: ✭ 41 (+70.83%)
Mutual labels:  creative-coding, generative-art
WaterColor
openframeworks parametric shader effect watercolor
Stars: ✭ 54 (+125%)
Mutual labels:  shaders, glsl
ModularMusicVisualizer
Project in Hiatus, unmaintained, being rewritten privately. Will Open Source when stuff is ready. Project will be Renamed.
Stars: ✭ 81 (+237.5%)
Mutual labels:  shaders, glsl
cellular-automata-explorer
(WIP) An interactive web app for exploring cellular automata.
Stars: ✭ 18 (-25%)
Mutual labels:  shaders, glsl
creative-coding-notebooks
🎨 An authorial collection of fundamental recipes on Creative Coding and Recreational Programming.
Stars: ✭ 17 (-29.17%)
Mutual labels:  creative-coding, generative-art
sparksl-noise
minimum proof of concept about procedural noise generation in SparkAR's shader language (SparkSL).
Stars: ✭ 16 (-33.33%)
Mutual labels:  shaders, glsl
Unity3D-Plane-Clipping
Plane clipping shaders for Unity3D 5. Extends the Standard shader!
Stars: ✭ 84 (+250%)
Mutual labels:  shaders, glsl
glsl-cos-palette
glsl function for making cosine palettes
Stars: ✭ 26 (+8.33%)
Mutual labels:  shaders, glsl
FNode
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.
Stars: ✭ 81 (+237.5%)
Mutual labels:  shaders, glsl
shaderview
A GLSL shader development tool for the LÖVE game framework.
Stars: ✭ 22 (-8.33%)
Mutual labels:  shaders, glsl
Shader-Playgrounds
A WebGL shaders editor for beginners and otherwise.
Stars: ✭ 28 (+16.67%)
Mutual labels:  shaders, glsl
microbium-app
Draw new worlds
Stars: ✭ 89 (+270.83%)
Mutual labels:  creative-coding, generative-art
pilka
Another live-coding tool for creating shader demos, Vulkan+Wgpu powered.
Stars: ✭ 84 (+250%)
Mutual labels:  shaders, glsl
a looping gif of the animations rendered by manyworlds

manyworlds 🌌🪐👽

A scifi-inspired study of signed distanced functions and noise fields in WebGL.

Signed Distance Functions are fun. With them, you can compute the distance to an object in a metric space, provided you have a function to describe that object's volume. When used alongside Ray Marching techniques, you can render views of these 3D objects as seen through a 2D plane. This project is an experiment in combining this method with various noise fields, to manipulate and distort these views. This project is named after the Many-worlds interpretation in quantum physics. Nerdy inspirations include science fiction book covers and visualisations.

See experiment: manyworlds.neef.co

Sharing and saving

Manyworlds uses a seeded random number generator. Clicking the share button on the site will give you a link that includes the seed for the current "world", allowing it to be revisited. Some of my favourites can be visited with the below seeds.

Project setup

This project is a simple single-page app built with TypeScript & Preact, and bundled with Snowpack & esbuild. The WebGL scene is rendered by a custom renderer component that uses React/Preact hooks to create and manage a WebGL context. The renderer can accept shader uniforms, a fragment shader as a glsl string, and an onFrame callback used to update the uniforms and other attributes of the sketch. The interfaces for the renderer and callback props can be found in the component's file.

Tools

  • Preact — Teeny React-like library
  • Snowpack — ESM-first build tool
  • esbuild — Blazing fast bundler
  • glslify — Enables importing inside glsl

Getting Started

To get started on your device, fork this repo and run:

npm install && npm run start

This will set up the dev server, and you should be good to go.

Fast refresh dev server workaround

As a workaround for an issue that causes builds to fail, I've disabled Fast Refresh (via prefresh) by commenting out the appropriate lines in snowpack.config.js and .babelrc.

Resources

The resources that I've found valuable regarding shaders, Ray Marching, SDFs are:

License

This repo is GNU Licensed.

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].