Deploy Caustify static build to HF Spaces
Browse files- LICENSE +21 -0
- README.md +12 -3
- assets/index-DQT_3j2n.js +0 -0
- assets/index-Z4vGlQzo.css +1 -0
- favicon.svg +1 -0
- icons.svg +24 -0
- index.html +31 -17
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2026 Linus Oskar Linhof (Immineal)
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
README.md
CHANGED
|
@@ -1,10 +1,19 @@
|
|
| 1 |
---
|
| 2 |
title: Caustify
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: blue
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: Caustify
|
| 3 |
+
emoji: 🔮
|
| 4 |
+
colorFrom: purple
|
| 5 |
colorTo: blue
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
license: mit
|
| 9 |
+
short_description: Real-time 3D spectral path tracer in the browser
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Caustify
|
| 13 |
+
|
| 14 |
+
A real-time 3D spectral path tracer running in WebGL2 — per-wavelength Cauchy
|
| 15 |
+
dispersion, volumetric caustics, and CIE 1931 colour matching, rendered live
|
| 16 |
+
in a browser tab, no plugin.
|
| 17 |
+
|
| 18 |
+
Free to use. Source: https://github.com/immineal/caustify (MIT)
|
| 19 |
+
Live also at: https://j4zz.eu/caustify/
|
assets/index-DQT_3j2n.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/index-Z4vGlQzo.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
:root{--bg-darker:#050608;--bg-dark:#0b0c10;--bg-card:#121620bf;--bg-card-hover:#1a202ed9;--border-color:#ffffff0f;--border-color-glow:#a855f766;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--text-muted:#6b7280;--accent-purple:#a855f7;--accent-purple-glow:#a855f733;--accent-blue:#3b82f6;--accent-cyan:#06b6d4;--accent-green:#10b981;--accent-red:#ef4444;--sans:"Inter", system-ui, -apple-system, sans-serif;--display:"Orbitron", sans-serif;--mono:"JetBrains Mono", monospace;font-family:var(--sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text-primary);background-color:var(--bg-darker)}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at 10% 20%,#0f0c1e 0%,#050608 90%);min-height:100vh;margin:0;overflow-x:hidden}#root{flex-direction:column;width:100%;min-height:100vh;display:flex}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-darker)}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-purple)}.glass-panel{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:12px;transition:border-color .2s,box-shadow .2s;box-shadow:0 8px 32px #0000005e}.glass-panel:hover{border-color:#ffffff1a}.glass-panel-glow:hover{border-color:var(--border-color-glow);box-shadow:0 8px 32px #a855f71a}.dashboard-grid{flex-grow:1;grid-template-columns:1fr 420px;gap:20px;width:100%;max-width:1600px;margin:0 auto;padding:20px;display:grid}@media (width<=1100px){.dashboard-grid{grid-template-columns:1fr}}.font-display{font-family:var(--display)}.font-mono{font-family:var(--mono)}h1{font-family:var(--display);letter-spacing:1.5px;background:linear-gradient(135deg, #fff 30%, var(--accent-purple) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-weight:700}.btn{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;font-family:var(--sans);background:#ffffff0d;border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-size:.9rem;font-weight:500;transition:all .2s;display:inline-flex}.btn:hover{background:#ffffff1a;border-color:#ffffff26}.btn-primary{background:var(--accent-purple);border-color:var(--accent-purple)}.btn-primary:hover{background:#b566ff;border-color:#b566ff;box-shadow:0 0 12px #a855f766}.btn-danger{color:#fca5a5;background:#ef444433;border-color:#ef444466}.btn-danger:hover{background:#ef44444d;border-color:#ef444480}.btn-active{border-color:var(--accent-purple);color:#e9d5ff;background:#a855f733}.tabs-header{border-bottom:1px solid var(--border-color);margin-bottom:16px;display:flex}.tab-btn{color:var(--text-secondary);font-family:var(--sans);cursor:pointer;text-align:center;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 14px;font-size:.85rem;font-weight:500;transition:all .2s}.tab-btn:hover{color:var(--text-primary);background:#ffffff05}.tab-btn.active{color:var(--accent-purple);border-bottom-color:var(--accent-purple);background:#a855f70d}.control-group{margin-bottom:18px}.control-label{color:var(--text-secondary);justify-content:space-between;align-items:center;margin-bottom:6px;font-size:.8rem;font-weight:500;display:flex}.control-value{font-family:var(--mono);color:var(--text-primary);background:#0003;border-radius:4px;padding:2px 6px;font-size:.8rem}input[type=range]{appearance:none;background:#ffffff1a;border-radius:3px;outline:none;width:100%;height:6px;margin:10px 0}input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;border:2px solid var(--bg-darker);background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .1s,background-color .1s;box-shadow:0 0 6px #00000080}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}.slider-wavelength::-webkit-slider-runnable-track{background:linear-gradient(90deg,red 0%,#ff7f00 12.5%,#ff0 25%,#0f0 37.5%,#0ff 50%,#00f 62.5%,indigo 75%,#9400d3 87.5%,#f0f 100%);border-radius:3px;height:6px}.slider-temp::-webkit-slider-runnable-track{background:linear-gradient(90deg,#ff3800 0%,#ff8912 20%,#ffc070 40%,#ffe4be 60%,#fff 80%,#cae0ff 100%);border-radius:3px;height:6px}select{border:1px solid var(--border-color);width:100%;color:var(--text-primary);font-family:var(--sans);cursor:pointer;background:#0000004d;border-radius:6px;outline:none;padding:8px 12px;font-size:.85rem;transition:border-color .2s}select:focus{border-color:var(--accent-purple)}.info-card{border-left:3px solid var(--accent-purple);color:var(--text-secondary);background:#0003;border-radius:4px;padding:10px 12px;font-size:.8rem;line-height:1.4}@keyframes pulse-glow{0%,to{opacity:.6}50%{opacity:1;filter:drop-shadow(0 0 4px var(--accent-purple))}}.animate-glow{animation:2s ease-in-out infinite pulse-glow}
|
favicon.svg
ADDED
|
|
icons.svg
ADDED
|
|
index.html
CHANGED
|
@@ -1,19 +1,33 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 7 |
+
<meta name="description" content="An interactive, real-time 3D spectral path tracer exploring chromatic dispersion, volumetric caustics, and perceptive color science. Built with WebGL2 and React." />
|
| 8 |
+
<title>Caustify | Real-Time 3D Spectral Path Tracer & Color Lab</title>
|
| 9 |
+
<!-- Google Fonts -->
|
| 10 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 11 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 12 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&family=Orbitron:wght@500;700;900&display=swap" rel="stylesheet">
|
| 13 |
+
<script type="module" crossorigin src="/assets/index-DQT_3j2n.js"></script>
|
| 14 |
+
<link rel="stylesheet" crossorigin href="/assets/index-Z4vGlQzo.css">
|
| 15 |
+
</head>
|
| 16 |
+
<body>
|
| 17 |
+
<div id="root"></div>
|
| 18 |
+
<a href="https://paypal.me/immineal" target="_blank" rel="noopener noreferrer"
|
| 19 |
+
style="position:fixed;bottom:10px;right:12px;z-index:9999;font:500 11px/1.4 Inter,sans-serif;
|
| 20 |
+
color:#c084fc;background:rgba(11,13,20,0.75);backdrop-filter:blur(6px);
|
| 21 |
+
border:1px solid rgba(168,85,247,0.3);border-radius:6px;padding:5px 10px;
|
| 22 |
+
text-decoration:none;">
|
| 23 |
+
Free to use — tip via PayPal ↗
|
| 24 |
+
</a>
|
| 25 |
+
<a href="https://github.com/immineal/caustify" target="_blank" rel="noopener noreferrer"
|
| 26 |
+
style="position:fixed;bottom:10px;right:145px;z-index:9999;font:500 11px/1.4 Inter,sans-serif;
|
| 27 |
+
color:#9ca3af;background:rgba(11,13,20,0.75);backdrop-filter:blur(6px);
|
| 28 |
+
border:1px solid rgba(255,255,255,0.15);border-radius:6px;padding:5px 10px;
|
| 29 |
+
text-decoration:none;">
|
| 30 |
+
Source on GitHub ↗
|
| 31 |
+
</a>
|
| 32 |
+
</body>
|
| 33 |
</html>
|