Skip to content

Instantly share code, notes, and snippets.

View kchapelier's full-sized avatar
💬
On hiatus

Kevin Chapelier kchapelier

💬
On hiatus
View GitHub Profile
@kchapelier
kchapelier / JSPerf
Last active August 29, 2015 14:04
JSPerfs of interest
http://jsperf.com/array-cloning-2 : concat vs slide(0)
http://jsperf.com/proxy-or-not : proxy vs function ref copy
http://jsperf.com/for-vs-array-foreach/11 : iterating an array
http://jsperf.com/named-vs-unnamed-function : Named vs unnamed function (and method)
"use strict";
var multipliers = {
k: Math.pow(1024, 1),
m: Math.pow(1024, 2),
g: Math.pow(1024, 3),
t: Math.pow(1024, 4)
};
var regex = /([0-9]+[.,]?[0-9]*) *([kmgt]?)/ig;
@kchapelier
kchapelier / hg_sdf.glsl
Created December 16, 2015 16:27
Port of hg_sdf ( http://mercury.sexy/hg_sdf/ ) to OpenGL ES 2.0 for compat with WebGL
////////////////////////////////////////////////////////////////
//
// HG_SDF
//
// GLSL LIBRARY FOR BUILDING SIGNED DISTANCE BOUNDS
//
// version 2015-12-15 (initial release)
//
// Check http://mercury.sexy/hg_sdf for updates
// and usage examples. Send feedback to spheretracing@mercury.sexy.
@kchapelier
kchapelier / sdfexample.glsl
Created December 21, 2015 12:39
hg_sdf + antialiase raymarch by iq + ashima noise
////////////////////////////////////////////////////////////////
//
// HG_SDF
//
// GLSL LIBRARY FOR BUILDING SIGNED DISTANCE BOUNDS
//
// version 2015-12-15 (initial release)
//
// Check http://mercury.sexy/hg_sdf for updates
// and usage examples. Send feedback to spheretracing@mercury.sexy.
@kchapelier
kchapelier / packed-texture.glsl
Last active January 15, 2016 12:01
Test reading integer values from texture in Webgl
struct CARule {
int type;
int iterations;
int bufferLength;
bool[9] birthValues;
bool[9] survivalValues;
};
ivec2 pTGetSize(sampler2D pT) {
@kchapelier
kchapelier / cellular-automata.glsl
Created January 15, 2016 20:24
Working base for a full feature GPU-based CA runner in javascript
# original : https://www.shadertoy.com/view/Xd33WS
int getNeighbourhoodMoore1 (vec2 relativePos) {
int u = 0;
u+=int(texture2D(iChannel0,(relativePos+vec2(-1.0,-1.0))/iResolution.xy).x);
u+=int(texture2D(iChannel0,(relativePos+vec2( 0.0,-1.0))/iResolution.xy).x);
u+=int(texture2D(iChannel0,(relativePos+vec2( 1.0,-1.0))/iResolution.xy).x);
u+=int(texture2D(iChannel0,(relativePos+vec2(-1.0, 0.0))/iResolution.xy).x);
u+=int(texture2D(iChannel0,(relativePos+vec2( 1.0, 0.0))/iResolution.xy).x);
u+=int(texture2D(iChannel0,(relativePos+vec2(-1.0, 1.0))/iResolution.xy).x);
@kchapelier
kchapelier / GLSL-Noise.md
Created April 17, 2016 09:53 — forked from patriciogonzalezvivo/GLSL-Noise.md
GLSL Noise Algorithms

Generic 1,2,3 Noise

float rand(float n){return fract(sin(n) * 43758.5453123);}

float noise(float p){
	float fl = floor(p);
  float fc = fract(p);
	return mix(rand(fl), rand(fl + 1.0), fc);
}
// all code under the DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2
// all code written by Carl Olsson (surt)
// simple moore neighbourhod
var neighbourOffsets = [[-1, -1], [0, -1], [+1, -1], [+1, 0], [+1, +1], [0, +1], [-1, +1], [-1, 0]];
// retrieve the colours of all the pixels in moore neighbourhood of the given coordinates
function getNeighbours(data, x, y) {
var neighbours = new Array();
for(var i = 0; i < 8; i++) {
@kchapelier
kchapelier / hack-mesh-materials-with-ssao.js
Last active March 4, 2018 13:33
Hacking MeshBasic/Phong/Lambert/Standard/Physical to use built-in SSAO (no post process = "free" antialias). Compatible with Three.js r84.
"use strict";
// The SSAO shader itself is taken and adapted from https://threejs.org/examples/webgl_postprocessing_ssao.html
// courtesy of alteredq
var ssaoShader = `
// packing stuff, packing is not loaded in basic shader, but is in phong and lambert
// this means we can't just blindly load the packing ShaderChunk
const float aoUnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1)
const vec3 aoPackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
@kchapelier
kchapelier / nefertiti.json
Last active March 24, 2017 11:40
Low-poly version of The Other Nefertiti. Original version : http://nefertitihack.alloversky.com/
This file has been truncated, but you can view the full file.
{
"indices":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279