Compare commits
3 Commits
750fc2f7d5
...
2e7f3b6cc7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e7f3b6cc7 | ||
| baa18484ca | |||
| 7586133152 |
@ -17,15 +17,12 @@ function App() {
|
||||
localStorage.getItem("token") || ""
|
||||
);
|
||||
const [theme, setTheme] = useState<string>("default");
|
||||
const [isShaderTheme, setIsShaderTheme] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (theme !== "default") {
|
||||
document.body.classList.add("shader-theme");
|
||||
setIsShaderTheme(true);
|
||||
} else {
|
||||
document.body.classList.remove("shader-theme");
|
||||
setIsShaderTheme(false);
|
||||
}
|
||||
}, [theme]);
|
||||
|
||||
@ -88,7 +85,7 @@ function App() {
|
||||
<option value="clouds">Clouds Theme</option>
|
||||
</select>
|
||||
</div>
|
||||
{isShaderTheme && <ShaderBackground theme= {theme} />}
|
||||
<ShaderBackground theme= {theme} />
|
||||
<Routes>
|
||||
<Route path="/" element={<PersonList people={people} />} />
|
||||
<Route path="/games" element={<GameList />} />
|
||||
|
||||
@ -154,7 +154,6 @@ export const ShaderBackground: React.FC<ShaderBackgroundProps> = ({
|
||||
shader_code = CLOUDS_SHADER_CODE;
|
||||
break;
|
||||
default:
|
||||
console.error("Unknown shader theme:", theme);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -9,8 +9,8 @@ out vec4 FragColor;
|
||||
|
||||
float orb(vec3 p) {
|
||||
// orb time
|
||||
float t = T * 4.;
|
||||
return length(p - vec3(sin(sin(t * .2) + t * .4) * 6., 1. + sin(sin(t * .5) + t * .2) * 4., 12. + T + cos(t * .3) * 8.));
|
||||
float t = T * 4.f;
|
||||
return length(p - vec3(sin(sin(t * .2f) + t * .4f) * 6.f, 1.f + sin(sin(t * .5f) + t * .2f) * 4.f, 12.f + T + cos(t * .3f) * 8.f));
|
||||
}
|
||||
|
||||
void mainImage(out vec4 o, vec2 u) {
|
||||
@ -21,42 +21,41 @@ void mainImage(out vec4 o, vec2 u) {
|
||||
u = (u + u - p.xy) / p.y;
|
||||
|
||||
// camera movement
|
||||
u += vec2(cos(t * .1) * .3, cos(t * .3) * .1);
|
||||
u += vec2(cos(t * .1f) * .3f, cos(t * .3f) * .1f);
|
||||
|
||||
for(o *= i; i++ < 128.;
|
||||
for(o *= i; i++ < 128.f;
|
||||
|
||||
// accumulate distance
|
||||
d += s = min(.03 + .2 * abs(s), e = max(.5 * e, .01)),
|
||||
d += s = min(.03f + .2f * abs(s), e = max(.5f * e, .01f)),
|
||||
|
||||
// grayscale color and orb light
|
||||
o += 1. / (s + e * 3.))
|
||||
o += 1.f / (s + e * 3.f))
|
||||
|
||||
// noise loop start, march
|
||||
for(p = vec3(u * d, d + t), // p = ro + rd *d, p.z + t;
|
||||
|
||||
// entity (orb)
|
||||
e = orb(p) - .1,
|
||||
e = orb(p) - .1f,
|
||||
|
||||
// spin by t, twist by p.z
|
||||
p.xy *= mat2(cos(.1 * t + p.z / 8. + vec4(0, 33, 11, 0))),
|
||||
p.xy *= mat2(cos(.1f * t + p.z / 8.f + vec4(0, 33, 11, 0))),
|
||||
|
||||
// mirrored planes 4 units apart
|
||||
s = 4. - abs(p.y),
|
||||
s = 4.f - abs(p.y),
|
||||
|
||||
// noise starts at .8 up to 32., grow by a+=a
|
||||
a = .8; a < 32.; a += a)
|
||||
a = .8f; a < 32.f; a += a)
|
||||
|
||||
// apply turbulence
|
||||
p += cos(.7 * t + p.yzx) * .2,
|
||||
p += cos(.7f * t + p.yzx) * .2f,
|
||||
|
||||
// apply noise
|
||||
s -= abs(dot(sin(.1 * t + p * a), .6 + p - p)) / a;
|
||||
s -= abs(dot(sin(.1f * t + p * a), .6f + p - p)) / a;
|
||||
|
||||
// tanh tonemap, brightness, light off-screen
|
||||
o = tanh(o / 1e1);
|
||||
o = tanh(o / 1e1f);
|
||||
}
|
||||
|
||||
|
||||
void main() {
|
||||
mainImage(FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user