palmdrop / surfaces

A web app for controlling a recursive domain warping effect. Also has a 3D mode.

Home Page:https://palmdrop.github.io/surfaces/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SURFACES - A Recursive Domain Warping Controller

LIVE AT palmdrop.github.io/surfaces/

Surfaces is a web application for controlling a shader that implements recursive domain warping using simplex noise. WebGL and GLSL are used to implement the shader itself, while React is used for the user interface. The idea behind Surfaces is to make some of the techniques developed in my ongoing sandbox project accessible and easy to explore. The application runs in real-time and should work in most modern browsers. However, to ensure good quality, a browser with support for WebGL2 is required.

There also exists a 3D mode, powered by three.js. This mode has some separate settings, but is just a 3D mesh which uses variations of the WebGl domain warp as a texture, normal map and displacement map.

Below are some screenshots of the user interface and some possible shader configurations.

Example 1 Example 2 Example 4

For an explanation of the underlying techniques, I suggest reading my blog post about domain warping, and possibly also this post which describes how domain warping can be done recursively, and when combined with modified noise, produce extremely complex visual effects.

The project was created using create-react-app. A GLSL loader (glslify) is used to simplify shader source management. To use this loader, webpack had to be configured slightly. Instead of ejecting, rescripts was used, with this .rescriptrc file.

Under img/example you'll find a few example images generated using this application. Feel free to use the app as you like, and post your creations wherever you wish. However, please leave a link to this repository if you do.

Usage

Go to palmdrop.github.io/surfaces/ or clone this repository and run it using npm. You'll find a short installation tutorial in the following section.

You can start the program using npm start. The page will then open at localhost:3000.

Once running, you can use the sliders to control the shader.

Installation

Make sure you install node.js and npm. Clone this repository and enter the created folder. Run npm install to install the necessary dependencies, then run npm start to start the application.

Contact and social media

📬 Email (the most reliable way of reaching me)

📷 Instagram (where I showcase a lot of my work)

💻 Site (experimental personal website)

About

A web app for controlling a recursive domain warping effect. Also has a 3D mode.

https://palmdrop.github.io/surfaces/

License:MIT License


Languages

Language:JavaScript 82.3%Language:CSS 10.8%Language:GLSL 5.9%Language:HTML 1.0%