#version 300 es
// 全ての浮動小数点型の変数に高い精度を指定
precision highp float;
uniform vec2 uResolution;
uniform float uTime;
out vec4 outColor;
// 算術積に使う大きな桁数の定数
uint k = 0x456789abu;
// 符号なし整数の最大値
const uint UINT_MAX = 0xffffffffu;
// 符号なし整数の1dハッシュ関数
uint uhash11(uint n) {
n ^= (n << 1);
n ^= (n >> 1);
n *= k;
n ^= (n << 1);
return n * k;
}
// 浮動小数点数の1dハッシュ関数
float hash11(float b) {
// ビット列を符号なし整数に変換
uint n = floatBitsToUint(b);
// 値の正規化
return float(uhash11(n)) / float(UINT_MAX);
}
void main() {
vec2 pos = gl_FragCoord.xy;
// フラグメント座標を時間変動させる(1秒間に60カウント)
pos += floor(60.0 * uTime);
outColor = vec4(vec3(hash11(pos.x)), 1.0);
}