Skip to content

Instantly share code, notes, and snippets.

View akella's full-sized avatar
🏠
Working from home

Yuri Artiukh akella

🏠
Working from home
View GitHub Profile
@akella
akella / simplex-tsl.js
Created December 5, 2024 20:16
simplex TSL noise
// from https://mameson.com/experiment/glsl/proven_2/proven_2.html
function mm_hash12( iw){ //★ x, y とも 0〜2,000,000 の整数入力。
const w = iw.mul( 0.000303) //★ 入力の 6 ケタとも活かす。
.add( fract( iw.mul( 0.707))); //★ 入力の上位ケタは捨てて下位ケタ拾い上げ。
const a = w.x.add( w.y.mul( 0.3)); //★ 斜めにする。
//★ 最近気に入っているフェイク sin。
a.assign( fract( a));
a.assign( a.sub( a.mul( a)));
@akella
akella / facebook-normalize-wheel.js
Created November 25, 2017 22:49
Facebook attempt at normalizing wheel event
/**
* Copyright (c) 2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule normalizeWheel
* @typechecks
@akella
akella / curl.glsl
Created November 5, 2023 09:03
curl.glsl
#define PI 3.1415926538
const float EPS = 0.001;
vec4 mod289(vec4 x) {
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
float mod289(float x) {
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
vec4 permute(vec4 x) {
<snippet>
<content><![CDATA[
<!-- begin $1 -->
<div class="$1">
$2
</div>
<!-- end $1 -->
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>di</tabTrigger>
@akella
akella / saturation.js
Last active August 29, 2025 21:16
TSL snippets
const sat = Fn(([rgb,intensity])=> {
const L = vec3(0.2125, 0.7154, 0.0721);
const grayscale = vec3(dot(rgb, L));
return mix(grayscale, rgb, intensity);
});
@akella
akella / oklab.glsl
Created October 8, 2023 07:55
oklab.glsl
float fixedpow(float a, float x)
{
return pow(abs(a), x) * sign(a);
}
float cbrt(float a)
{
return fixedpow(a, 0.3333333333);
}
@akella
akella / noise.glsl
Created January 24, 2021 08:42
noise4d
//
// Description : Array and textureless GLSL 2D/3D/4D simplex
// noise functions.
// Author : Ian McEwan, Ashima Arts.
// Maintainer : ijm
// Lastmod : 20110822 (ijm)
// License : Copyright (C) 2011 Ashima Arts. All rights reserved.
// Distributed under the MIT License. See LICENSE file.
// https://github.com/ashima/webgl-noise
//
@akella
akella / setup.md
Last active June 29, 2025 16:48
My Setup
@akella
akella / glitch.glsl
Created April 12, 2025 13:21
glitch effect from hatom
vec3 addGlitchEffect(vec3 render, vec2 uv, vec4 mouseFluid) {
vec2 st = uv;
vec2 offset = vec2(0.);
float strength = uFluidStrength*0.7-uLetterBox*0.3;
addFisheyeEffect(st, strength*0.5);
vec2 glitchUv = st*vec2(3., 6.)-uTime*0.01;
glitchUv = floor(glitchUv*15.)/15.;
glitchUv *= vec2(0.08, 0.1);
vec2 glitchUv2 = st*vec2(2., 5.)+uTime*0.03;
glitchUv2 = floor(glitchUv2*vec2(10., 15.))/vec2(10., 15.);
@akella
akella / sobel.glsl
Created April 12, 2025 13:20
sobel.glsl
float intensity(in vec4 c) {
return sqrt((c.x*c.x)+(c.y*c.y)+(c.z*c.z));
}
float sobel(float step, vec2 res, vec2 center, sampler2D tex) {
float stepX = step/res.x*uDpr;
float stepY = step/res.y*uDpr;
float tLeft = intensity(texture(tex, center+vec2(-stepX, stepY)));
float left = intensity(texture(tex, center+vec2(-stepX, 0)));
float bLeft = intensity(texture(tex, center+vec2(-stepX, -stepY)));
float top = intensity(texture(tex, center+vec2(0, stepY)));