A modern, interactive portfolio website featuring custom WebGL shader animations and glassmorphism design.
- Custom WebGL Shaders - Real-time animated topographic contour background using Three.js
- Glassmorphism UI - Frosted glass design with backdrop-filter effects
- RGB Glitch Effects - Dynamic chromatic aberration animations
- Smooth Animations - CSS transforms and Intersection Observer API for scroll-triggered effects
Detailed visual/features:
- Animated topographic contour background with adjustable parameters (levels, thickness, speed, zoom).
- Two GLSL animation variants supported:
- Embedded shader (primary): shader sources embedded and driven by
scripts/background.jsβ implements RGB-separated contour bands, gradient tinting, glitch bursts, and runtime uniform control. - External shader files (alternate):
shaders/contour.vertandshaders/contour.fragβ an external fragment/vertex pair that produces anti-aliased contour lines optimized for overlay and transparency.
- Embedded shader (primary): shader sources embedded and driven by
- Graceful degradation: checks for
OES_standard_derivativesand falls back or reduces effects on unsupported devices. - Accessibility-aware motion: honors
prefers-reduced-motionand exposes a visible/keyboard-accessible UI with focus-visible styles.
- Flip Cards - 3D perspective transforms for project and artwork displays
- Modal System - Detailed project information with dynamic content
- Contact Form - Integrated form with validation
- GitHub Integration - Live contribution activity graph
- Social Media Widgets - Twitter/X timeline integration
More interactive details:
- Flip cards are keyboard focusable and toggle via
Enter/Space; they includearia-labelandrole="listitem"for screen readers. - Modals trap focus while open and restore focus on close; images and extended content include descriptive
alttext.
- Performance Optimized - Efficient animation loops and rendering
- Fully Responsive - Mobile-first design with CSS Grid layouts
- Cross-Browser Compatible - Works on Chrome, Firefox, Safari, and Edge
- Vanilla JavaScript - No framework dependencies (except Three.js for graphics)
- HTML5 - Semantic markup
- CSS3 - Grid, Flexbox, Glassmorphism, Animations
- JavaScript ES6+ - Modern vanilla JavaScript
- Three.js - WebGL shader rendering
- GLSL - Custom vertex and fragment shaders
- Intersection Observer API - Scroll animations
- Three.js (v0.158.0): used for scene setup, camera, renderer, and shader material bootstrapping. Custom GLSL shaders live in the
/shadersdirectory and are compiled at runtime by thebackground.jsmodule. - GLSL (vertex + fragment): custom shaders implement 3D simplex noise, contour banding, and RGB glitch effects. Shaders are loaded and passed uniforms (time, resolution, mouse) from
background.js. - GLSL (vertex + fragment): custom shaders and animation wiring are original work by Jinzurei. Shaders implement 3D simplex noise, contour banding, and RGB glitch effects; they are stored in
/shadersand are compiled/controlled at runtime byscripts/background.jswhich handles uniforms, render loop, and graceful degradation. - Accessibility tooling: focus-visible polyfill (CSS-based focus styles), ARIA roles and labels on interactive components, skip-to-main-content link, and reduced-motion support via
prefers-reduced-motionmedia query. - Assets: Images and media are stored in
/photos. Large assets are WebP where possible for compression; also included a fallback mechanism for older browsers. - Development tooling: This project uses simple dev workflow (no bundler). Recommended tools for contributors:
- EditorConfig for consistent indentation
- Prettier (optional) for formatting
- ESLint (optional) with the
eslint:recommendedrules if you add a build step
These detailed notes are intended to help contributors understand where to find shader code, asset locations, and accessibility considerations.
portfolio/
βββ index.html # Main HTML file
βββ styles/
β βββ portfolio.css # All styling (glassmorphism, animations, responsive)
βββ scripts/
β βββ background.js # Three.js WebGL shader implementation
βββ photos/ # Images and videos
βββ shaders/ # GLSL shader files (archived)
βββ CREDITS.md # Attribution and licensing
βββ LICENSE # MIT License
βββ README.md # This file
Correct structure (actual files present):
portfolio/
βββ index.html
βββ styles/portfolio.css
βββ scripts/background.js
βββ photos/ (webp and fallback images)
βββ shaders/contour.vert
βββ shaders/contour.frag
βββ CREDITS.md
βββ LICENSE
βββ README.md
The portfolio uses modern glassmorphism design principles with:
- Semi-transparent backgrounds (
rgba(0, 0, 0, 0.7)) - Backdrop blur filters for frosted glass effect
- Subtle borders for depth
- Layered visual hierarchy
Custom GLSL shaders create an animated topographic visualization:
- 3D simplex noise for organic movement
- 20 contour elevation levels
- White to cyan gradient
- Random glitch bursts with RGB color separation
- Modern web browser (Chrome, Firefox, Safari, or Edge)
- Local web server (optional, but recommended for best performance)
-
Clone the repository
git clone https://github.com/jinzurei/Portfolio.git cd Portfolio -
Open in browser
- Option A: Open
index.htmldirectly in your browser (double-click the file or use your editor's preview) - Option B: Use a local server (recommended):
# Python 3 python -m http.server 8000 # Node.js (with http-server) npx http-server
- Option C (Windows PowerShell quick preview):
Start-Process msedge -ArgumentList "--new-window", "file:///$PWD/index.html"
- Navigate to
http://localhost:8000(if using a server)
- Option A: Open
-
Personal Information - Edit
index.html:- Update name, bio, and contact info
- Replace social media links
- Update GitHub username in contribution graph URL
-
Projects - Modify the projects array in
index.html:const projects = [ { title: "Your Project", description: "Project description", tech: ["Tech1", "Tech2"], features: ["Feature 1", "Feature 2"] } ];
-
Styling - Customize colors in
styles/portfolio.css:- Primary color:
#007bff - Glass backgrounds:
rgba(0, 0, 0, 0.7) - Text colors: Modify color tokens near the top of the file
- Primary color:
-
Images - Replace files in
photos/folder:- Profile picture:
profile.webp - Background video:
backgroundbydancristianpaduret.mp4 - Project/artwork images
- Profile picture:
This project is licensed under the MIT License - see the LICENSE file for details.
Jinzurei (@jinzurei)
- Background Video: Dan Cristian PΔdureΘ (Pexels)
- Three.js: v0.158.0 (threejs.org)
- GitHub Charts: ghchart.rshah.org
Note: The GLSL shader code and the JavaScript that drives the WebGL animation (uniforms, render loop, shader compilation) are original work by Jinzurei and are included in this repository.
See CREDITS.md for complete attribution.
This project is licensed under the MIT License (see LICENSE). The MIT License does not legally require attribution, but attribution and credit to third-party authors is appreciated. Recommended guidelines when reusing this project:
- Keep the
LICENSEfile in your distribution - Retain or adapt
CREDITS.mdto acknowledge third-party assets you include - If you redistribute the background video or any third-party media, follow the asset's original license and attribution rules
β If you found this helpful, please consider giving it a star!
Last Updated: October 20, 2025