glsl-worley - Worley noise implementation for WebGL shaders

  •        95

From this module, a GLSL implementation of Worley Noise written by Stefan Gustavson can be imported. worley3D is defined as vec2 worley3D(vec3 P, float jitter, bool manhattanDistance). It returns a vec2 where x is F1 and y is F2(it is assumed that the reader knows the meaning of these two). P is the input point, jitter is the amount of jitter in the pattern, and if manhattanDistance is true, then a manhattan distance is used to generate the pattern, instead of the usual Euclidean distance(this basically makes the noise appear more "jagged").



Related Projects

glslify - :sparkles: A node.js-style module system for GLSL!

  •    Javascript

It forms one of the core components of the ecosystem, allowing you to install GLSL modules from npm and use them in your shaders. This makes it trivial to piece together different effects and techniques from the community, including but certainly not limited to fog, noise, film grain, raymarching helpers, easing functions and lighting models. A full list can be found on the packages list under the "Shader Components" category.

webgl-noise - Procedural Noise Shader Routines compatible with WebGL

  •    C

Procedural Noise Shader Routines compatible with WebGL

simplex-noise.js - A fast simplex noise implementation in Javascript.

  •    Javascript

simplex-noise.js is a fast simplex noise implementation in Javascript. It works in the browser and on nodejs. By default simplex-noise.js will use Math.random() to seed the noise.

glsl-optimizer - GLSL optimizer based on Mesa's GLSL compiler

  •    C++

A C++ library that takes GLSL shaders, does some GPU-independent optimizations on them and outputs GLSL or Metal source back. Optimizations are function inlining, dead code removal, copy propagation, constant folding, constant propagation, arithmetic optimizations and so on. Apparently quite a few mobile platforms are pretty bad at optimizing shaders; and unfortunately they also lack offline shader compilers. So using a GLSL optimizer offline before can make the shader run much faster on a platform like that. See performance numbers in this blog post.

noisejs - Javascript 2D Perlin & Simplex noise functions

  •    Javascript

This is a simple library for 2d & 3d perlin noise and simplex noise in javascript. Noise is pretty. The library is pretty fast (10M queries / sec). But its still way slower than using a shader. For example, if you try and update an entire screen's worth of pixels, it'll be slow.


  •    C++

A general-purpose library that generates three-dimensional coherent noise. Useful for terrain generation and procedural texture generation. Uses a broad number of techniques (Perlin noise, ridged multifractal, etc.) and combinations of those techniques.

glslCanvas - Simple tool to load GLSL shaders on HTML Canvas using WebGL

  •    Javascript

GlslCanvas is JavaScript Library that helps you easily load GLSL Fragment and Vertex Shaders into an HTML canvas. I have used this in my Book of Shaders and glslEditor. That's all! glslCanvas will automatically load a WebGL context in that <canvas> element, compile the shader and animate it for you.

infnoise - The world's easiest TRNG to get right

  •    C

For instructions for compiling the and using Infinite Noise TRNG driver, go to the software sub-directory, and read the README file there. Both Linux and Windows are supported. The Infinite Noise TRNG is a USB key hardware true random number generator. It uses what I call a "Modular Entropy Multiplier" architecture (previously Infinite Noise Multiplier or FireBug). Besides being simple, low-cost, and fast, it is much easier to get right than other TRNGs. It naturally defends against influence from outside signals, such as radio interference and power supply noise, making it simple to build securely, without requiring an expert in analog design. Modular entropy multipliers produce a provable and easily measured level of entropy based on thermal noise, approximately equal to log2(K) per output bit, where K is a gain between 1 and 2 set by two resistors around an op-amp. A "health monitor" can track this and verify that the output entropy is within the expected range, which for the Infinite Noise TRNG described below is within 2% of log2(1.82).

glslEditor - Simple WebGL Fragment Shader Editor

  •    Javascript

Friendly GLSL Shader editor based on Codemirror compatible with glslViewer (C++/OpenGL ES) and glslCanvas (JS/WebGL). Was originaly develop to work as a embebed editor for The Book of Shaders. But now have grown as a stand alone Web app. Thanks to their compatibility with other apps of this ecosystems like glslViewer that runs in the RaspberryPi directly from console, GlslEditor interact with other projects like allowing the user to export the shaders to frames with only one button.

gamma - glsl shaders made simple

  •    Clojure

Gamma is a substrate for graphics software, such as games and data visualization tools. It presents a simple, composable language for representing GLSL shaders. Technically, Gamma is an EDSL that hosts GLSL within Clojurescript. It is inspired by Carlos Scheidegger's Lux and Conal Elliot's Vertigo and Pan. Gamma targets the WebGL subset of the OpenGL ES 1.0 Shading Language. Gamma can be used a la carte to compile shader source, without adopting Clojure/Clojurescript for your runtime application.

gl-react - [gl-react v3 alpha] – a React library to write and compose WebGL shaders

  •    Javascript

This repository hosts gl-react v3. For gl-react v2, please see ProjectSeptemberInc/gl-react. gre/gl-react repository is a complete rewrite of ProjectSeptemberInc/gl-react library (gl-react v2). It plans to be the gl-react v3. We keep both repository at same time because (1) this work is not yet finished and (2) this repository is now a "multi libraries" repository (it's just easier to maintain that way).

KGNoise - Cocoa noise drawing code plus a ready to go noise view!

  •    Objective-C

KGNoise generates random black and white pixels into a static 128x128 image that is then tiled to fill the space. The random pixels are seeded with a value that has been chosen to look the most random, this also means that the noise will look consistent between app launches. KGNoise is retina compatible on both iOS and the Mac. An identical interface is provided for both platforms through the use of compile time #if checks.

noise - A decentralized P2P networking stack written in Go.

  •    Go

noise is an opinionated, easy-to-use P2P network stack for decentralized applications, and cryptographic protocols written in Go by Perlin Network. noise is made to be robust, developer-friendly, performant, secure, and cross-platform across multitudes of devices by making use of well-tested, production-grade dependencies.

glslViewer - Live GLSL coding render for MacOS and Linux

  •    C++

Live-coding console tool that renders GLSL Shaders. Every file you use (frag/vert shader, images and geometries) are watched for modification, so they can be updated on the fly. This was tested with Ubuntu 16.04.

ShaderEditorExtension - Google Chrome DevTools extension to live edit WebGL GLSL shaders

  •    Javascript

Alternatively, you can pack the extension yourself and load by dropping the .crx file in the Extensions page.

ShaderParticleEngine - A GLSL-heavy particle engine for THREE

  •    Javascript

The purpose of this library is to make creating particle effects using THREE.js and WebGL as simple as possible. The heavy-lifting is done by the GPU, freeing up CPU cycles. Emitters are created by first creating an instance of SPE.Group. It is in the group where ShaderMaterial settings are applied, and the texture for all emitters added to that group is set. Multiple groups can be created, but if efficiency is a high-priority then as few groups as possible should be created. The group takes care of uploading emitter data to the GPU for simulation and rendering, so the fewer chunks of data that get sent the better.


  •    C++

[2017/11/12] - Added simple tessellation shader sample. Fixed misc issues with pipeline setup for tessellation. [2017/11/10] - Added ChessSet demo. Added geometry shader sample. Fixes to depth stencil handling. [2017/11/10] - Added TexturedCube sample. Updated depth attachment handling on swapchain render pass. Switched out lc_image for stb_image. Added DXC shader build script. [2017/05/27] - Fixed some annoying buffer state transitions. Added build script for shaders. Updated shader naming convention to be more exact. Added OpaqueArgs and PassingArrays for investigation. [2017/05/20] - Updated Append/Consume sample for Vulkan. Requires latest glslang. ConstantBuffer also works for both platforms. [2017/05/13] - Added Linux support. Moved to project files to cmake. Moved glsl shaders to glsl sub directory - forcing HLSL for now. [2017/04/30] - Clarified shader usage in some sample programs to point out which source they're coming from. [2017/04/27] - Added ConstantBuffer sample (D3D12 only for now). Updated Vulkan samples to use negative viewport height. [2017/04/25] - Updated SimpleCompute and StructuredBuffer to work on Vulkan. [2017/04/24] - Added compute samples (D3D12 only for now). One for simple compute and another for structured buffers.

psx_retroshader - Shader that "emulates" the rendering style of ps1

  •    GLSL

All shaders supports Fog, polygon cut-out & distortion amount. #Warning Like the original ps1 this shader use affine texture mapping, so if you apply a texture on a large quad you'll see it very distored. To avoid excessive distortion you have to add triangless to the mesh.

glsl-lighting-walkthrough - :bulb: phong shading tutorial with glslify

  •    Javascript

It is not intended as a full-blown beginner's guide, and assumes prior knowledge of WebGL and stackgl rendering. Although it is implemented with stackgl, the same concepts and shader code could be used in ThreeJS and other frameworks. If you have questions, comments or improvements, please post a new issue.