呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
Infinite Canvas: Building a Seamless, Pan-Anywhere Image Space | Codrops
AI 摘要:本教程深入探讨了如何利用 React Three Fiber 构建一个无缝、可无限平移的 3D 图像画布。文章核心在于通过“区块” (chunk) 分块渲染、确定性 (deterministic) 内容生成、基于距离的剔除 (culling) 与渐隐,以及惯性 (inertia) 驱动的相机控制器等技术,创造出无限探索的视觉错觉,同时确保在高性能设备上达到 120 帧的流畅体验。它还详细介绍了包括延迟加载、像素密度限制、禁用抗锯齿等多种性能优化策略,为开发者提供了构建响应式、沉浸式 3D 体验的实用指南和未来扩展方向。
author Edoardo Lunardi
Demo 这个也很酷。
How to Create a Pixel-to-Voxel Video Drop Effect with Three.js and Rapier
AI 摘要:本教程详细介绍了如何利用 Three.js、着色器 (shaders) 和 Rapier 物理引擎,将 2D 视频流转化为动态的 3D 体素 (voxel) 下落效果。文章从核心概念——像素和重力——出发,逐步讲解了如何构建一个由 InstancedMesh 和刚体 (rigid bodies) 组成的平面,通过着色器实现平铺像素到 3D 体素的涟漪 (ripple) 变形效果,并最终通过 JavaScript 模拟涟漪进程来激活物理引擎,使体素在逼真的物理作用下散射和恢复。作者还分享了实现过程中的技术细节、优化考量以及未来扩展的可能性。
author Junichi Kasahara
很有创意的一个滚动驱动的 portfolio 页面:Mr. Panda's Psychologically Safe Portfolio
• 开源在:GitHub - andrewwoan/mr-pandas-psychologically-safe-portfolio
• 技术解析视频:How I created a Hand-drawn Papercraft Portfolio with Three.js, Blender, React, and Krita
author Andrew Woan
#优质博文 #前端 #WebGL #Shaders #demo
很 NB 的 ASCII 艺术生成网站 https://efecto.app/ 之前发过,这篇是作者的详细技术解析。
Efecto: Building Real-Time ASCII and Dithering Effects with WebGL Shaders | Codrops
author Pablo Stanley
很 NB 的 ASCII 艺术生成网站 https://efecto.app/ 之前发过,这篇是作者的详细技术解析。
Efecto: Building Real-Time ASCII and Dithering Effects with WebGL Shaders | Codrops
AI 摘要:本文作者 Pablo Stanley 分享了他如何开发 Efecto 应用,在网络上实时实现图像抖动(dithering)和 ASCII 艺术效果,并结合 WebGL 着色器(shaders)模拟 CRT 显示器视觉效果的经验。文章详细介绍了抖动算法(如 Floyd-Steinberg、Atkinson 等)的原理与代码实现,多色调色板的应用,以及如何通过数学函数在着色器中绘制 ASCII 字符。此外,还探讨了扫描线(scanlines)、屏幕曲率(screen curvature)、色差(chromatic aberration)等 CRT 特效的实现,并讨论了 CPU 和 GPU 在这些效果实现中的分工,最后总结了从历史算法到现代 Web 开发的宝贵经验。
author Pablo Stanley
#前端 #demo #动画
https://fixupx.com/sujen_p/status/2004467491284910554
https://fixupx.com/sujen_p/status/2005536330579927481
https://fixupx.com/sujen_p/status/2004467491284910554
https://fixupx.com/sujen_p/status/2005536330579927481
Sujen Phea (@sujen_p): Unfurling paper
Demo 👉 https://paper-scroll.sujen.co/
#webgl #threejs
Spinning disco vibes
Demo 👉 https://disco.sujen.co
#webgl #threejs
#前端 #demo #three #WebGL
https://particles.sujen.co/
很丝滑的粒子爆炸效果,可更换其他模型文件。
https://fixupx.com/i/status/2002999796341297514
https://particles.sujen.co/
很丝滑的粒子爆炸效果,可更换其他模型文件。
使用自定义模型实现粒子爆炸,精确地限定在圆柱体内。
演示 particles.sujen.co
https://fixupx.com/i/status/2002999796341297514
#优质博文 #前端 #WebGPU #WebGL
用 WebGPU 来造一场雪 | Cyandev
author Cyandev
用 WebGPU 来造一场雪 | Cyandev
AI 摘要:本文详细介绍了作者如何利用 WebGPU 为个人博客实现下雪背景效果。文章从 WebGPU 的基本概念、与 Metal 等现代图形 API 的对比入手,逐步深入到 Metal 的基础知识,再结合 WebGPU 的实际应用,例如 Bind Group 和 Compute Shader,展示了如何高效地绘制雪花粒子并计算其运动。为了进一步提升性能,作者还分享了如何将渲染逻辑转移到 Web Worker 中的 OffscreenCanvas 进行,确保动画流畅不卡顿。文末展望了 WebGPU 在未来前端动画和机器学习领域的应用潜力。
author Cyandev
#demo #WebGL #WebGPU #three
https://planpoint-webgpu.vercel.app
Three Example WebGPU Occlusion
https://fixupx.com/Andersonmancini/status/2000589287515959496
https://planpoint-webgpu.vercel.app
Three Example WebGPU Occlusion
Anderson Mancini(@Andersonmancini): 🎵 太阳出来了 ☀️
我终于完成了将我的“终极镜头光晕”移植到 #threejs WebGPU 的工作。性能简直令人难以置信,因为现在 threejs 已经将遮挡查询直接集成到了渲染管线中。如果你需要知道某个物体是否被遮挡,只需直接向 threejs 查询即可。文档中有示例。
这样一来,我就不再需要光线投射器来检测遮挡了,这就是性能大幅提升的原因。
如果您想查看结果: https://planpoint-webgpu.vercel.app
https://fixupx.com/Andersonmancini/status/2000589287515959496
#趣站 #CSS #WebGL #前端 #新动态 #动画
Shopify Editions Winter 2026
这是每半年固定发布,用于介绍 Shopify 又做了哪些功能更新的网站!之前是 summer2025 网站。
性能和兼容性可能相对一般,但做了完整的移动端适配,纯炫技网页,浓缩了超多细节和彩蛋和 CSS 新特性。
彩蛋 1:点击钥匙,会弹出一个新的无边框窗口来进行解锁。应该用到了跨窗口通信
彩蛋2:解锁后这个窗口还能跟着原来的页面滚动。
彩蛋3:点击帽子
技术解析:
Shopify Editions Winter 2026
这是每半年固定发布,用于介绍 Shopify 又做了哪些功能更新的网站!之前是 summer2025 网站。
性能和兼容性可能相对一般,但做了完整的移动端适配,纯炫技网页,浓缩了超多细节和彩蛋和 CSS 新特性。
彩蛋 1:点击钥匙,会弹出一个新的无边框窗口来进行解锁。应该用到了跨窗口通信
以前有一个类似的尝试用 three.js 实现了这个跨窗口的粒子动画有用到这个类似的场景,我猜应该是和这个一个原理,GitHub 仓库
彩蛋2:解锁后这个窗口还能跟着原来的页面滚动。
彩蛋3:点击帽子
技术解析:
https://x.com/jh3yy/status/1999131244345405664
jhey ʕ•ᴥ•ʔ(@jh3yy):今年的版本页面真是太棒了——有太多精彩的细节了 👨🍳
很荣幸能参与其中,团队表现出色 👏
除了令人惊叹的 WebGL 技术之外,还巧妙地运用了 CSS 容器查询、计数器、过渡/动画和 SVG!
#demo #codepen #WebGL #前端
好萌🎄
https://codepen.io/creativeocean/pen/zxqEWYd
好萌
https://codepen.io/creativeocean/pen/zxqEWYd
Tom Miller 用这段精美的 JavaScript 圣诞树点亮视频拉开了节日季的序幕。将鼠标悬停在树上,即可让它闪耀夺目!
#demo #codepen #WebGL #前端
Cinematic Ocean Scroll Scene
Cinematic Ocean Scroll Scene
在这个由 Filip Zrnzevic 创作的交互式 Three.js/GSAP Pen 中,您可以漫步于 JavaScript 海洋,欣赏日落美景,感受宁静祥和的氛围。别忘了尝试各种控件,打造属于您自己的独特体验。
#优质博文 #WebGL #GSAP #three #r3f #前端 #动画 #趣站
太有创意了。
网站:https://www.romanjeanelie.com/
文章:Letting the Creative Process Shape a WebGL Portfolio
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Roman Jean-Elie
太有创意了。
网站:https://www.romanjeanelie.com/
文章:Letting the Creative Process Shape a WebGL Portfolio
AI 摘要:这篇文章详细记录了制作 WebGL 个人作品集的全过程。文章展现了一个从最初构想到最终实现的探索旅程。文中涉及诸多技术,包括 Next.js、Three.js、React Three Fiber 以及 GSAP(含 MorphSVG 插件),并分享了多个实现细节,如 Fold 效果、MeshPortal 场景嵌入系统、基于滚动速度的 Shader 动效,以及 SVG 到 Canvas 的性能优化。最终,作品以戏剧化的视觉语言融合作者在戏剧、电影与编程三重背景下的美学追求。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 起点:Fold 效果与创意萌芽
• 以 Vector Projection 实现自由方向的折叠效果
• Shader 中的假阴影计算增加立体感
• 从最初“主特效”到成为创意起点的自我修正
2. 构建中:角色与 MeshPortal 系统
• 创建带角色的屏幕,利用 Mixamo 动作资源
• 引入 MeshPortal 技术,将独立 3D 场景限制在屏幕范围内
• 建立系统实现 WebGL 与 DOM 布局同步(mask 区域)
• 采用 hash-based 导航配合 GSAP 动画实现平滑过渡
3. 节奏延伸:让角色起舞与滚动动效
• 通过基于速度的 Stretch Shader 让文字响应滚动加速度
• 利用 depth-aware 动线制造空间层次
• 前端 JS 调控 Shader uniform 实现自然的运动衰减与模糊
4. 创意突破:不再拘泥于“屏幕”
• 从平面屏幕过渡到文字形态(Morphing Plane to Text)
• 借助 GSAP MorphSVG 插件实现路径平滑过渡
• 优化性能:通过 Canvas 渲染替代 SVG DOM 调用,保持 60fps
• 将“WHO” 文字转化为剧场式的舞台: Cinema、Theater、Code 三部分,用视频投影营造剪影效果
5. 闭环:Contact 页与「MEET ME」交互收尾
• 通过算得精确的 DOM 与 WebGL 匹配 mask 完成动态过渡
• 使用 GSAP 的 back.out 缓动创造富表现力的弹性动画
• 利用镜头视角(FOV)和空间深度营造收尾的视觉叙事
• 以贴纸元素作为呼应起点的个人符号,为项目画上圆满句号
6. 总结与思考
• 作品的发展不是强行设计,而是对“创意呼吸”的倾听
• 通过“让过程塑形”,实现技术与自我表达的统一
• 最终成果是一种情感与视觉共鸣的体验,而非单纯代码演示
author Roman Jean-Elie
#优质博文 #前端 #GLSL #Shader #WebGL #数学艺术 #代码压缩
真美啊,各种意义上。
Code golfing a tiny demo using maths and a pinch of insanity
可在此处查看 demo
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author ubitux
真美啊,各种意义上。
Code golfing a tiny demo using maths and a pinch of insanity
可在此处查看 demo
AI 摘要:本文展示了如何通过极端的代码压缩(Code Golfing)和数学技巧,用 448 个字符的 GLSL 片段着色器绘制出包含山体、云雾、光照与动态相机的 3D 场景。作者详细讲解了每一步的构建过程:噪声函数的构造、空间旋转矩阵压缩、相机设置、光线步进(ray-marching)技术、体积光照(volumetric lighting)及色彩调制等,最后以创作性的数学与艺术融合收尾,展示了“极简代码亦能造美”的魔法。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 环境与灵感
• 项目灵感:用 448 字符实现完整 GLSL 视觉作品。
• 无网格、无贴图,仅用数学公式生成画面。
• 社区协作帮助进一步缩短代码。
2. 基础模板与开发环境
• 介绍 GLSL 片段着色器执行流程(per fragment)。
• 输入变量:分辨率 R、时间 T、像素位置 P。
• 使用自建工具 ShaderWorkshop 代替 Shadertoy,实现本地实时测试。
3. 噪声 (Noise)
• 从梯度噪声到基于正弦波(sin wave)的“假噪声”。
• 展示如何组合正弦波、取绝对值形成山峰与云层的纹理。
• 使用 fbm(Fractal Brownian Motion)叠加多频率噪声。
• 通过旋转与相移实现伪随机性。
4. 空间旋转 (Rotation)
• 推导二维旋转矩阵 mat2(cos θ, -sin θ, sin θ, cos θ)。
• 优化表示法——用 vec4 版余弦近似减少字符。
• 探讨不同矩阵近似方案与三角函数替代。
• 引入快速硬编码旋转矩阵(如 mat2(8,6,-6,8)*.1)。
5. 相机与坐标系统 (Camera & Axis)
• 将 2D 像素空间转换为 3D 射线坐标。
• 简化 lookAt 矩阵计算,通过归一化实现方向向量。
• 最终极简相机代码:vec3 rd = normalize(vec3(P+P - R, R.y));。
6. 山脉高度图 (Height Map)
• 使用累积噪声作为山体高度。
• 将循环条件反向(a+=a),节省字符。
• 内联常量、减少变量与花括号。
• 提供无栈化的简洁函数版本。
7. 光线步进 (Ray-Marching for Solids)
• 根据“距离场”(Distance Field)计算表面交点。
• 步长控制为 20% 安全缩进,避免穿透几何。
• 输出基于深度衰减与亮度法线的初步灰度效果。
8. 云与雾 (Volumetric Effects)
• 拓展噪声至 3D,模拟云层与体积雾。
• 引入 Beer-Lambert 光吸收模型。
• 使用固定步长和动态步长结合模拟体积光。
• 改写密度函数,使云雾兼容在一个表达式中。
9. 合并体积与固体光线步进
• 将 solid 与 volumetric 模型结合为统一循环。
• 条件控制判定 solid 命中及光散射抑制。
• 调整吸收与发光系数,实现光滑过渡与层次感。
• 通过 tanh() 实现快速色调映射(tone mapping)。
10. 色彩与气氛 (Color & Atmosphere
• 将红色分量独立增强,模拟落日光辉。
• 添加地平线散射光层(haze effect)。
• 通过 p.y 高度衰减生成神秘气氛。
• 小幅参数扰动制造动态呼吸式景深。
11. 代码极简与 Golfing 优化
• 减少变量名与类型声明,合并循环表达式。
• inlined 子函数、数学等价式替换、去注释。
• 最终仅 448 个字符实现所有视觉要素。
• 展示终极版本的可读及压缩形式。
12. 总结与艺术性思考
• 将算法、噪声、几何与物理模型浓缩为艺术。
• 代码之美在于极简纯粹,数学与光的共鸣。
• 作者反思现代开发生态与“纯代码艺术”的价值。
• 鼓励读者通过探索 GLSL 寻求创造与自由。
author ubitux
#优质博文 #WebGL #CSS #前端 #动画 #course
How to Animate WebGL Shaders with GSAP: Ripples, Reveals, and Dynamic Blur Effects
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Andrea Biason
How to Animate WebGL Shaders with GSAP: Ripples, Reveals, and Dynamic Blur Effects
AI 摘要:本文通过实例展示如何将 GSAP 动画库与 WebGL 着色器(Shaders)结合,以构建沉浸式网页交互视觉。作者从基础的 HTML 布局与 Three.js 场景搭建开始,逐步扩展至通过 GSAP 动画驱动着色器 uniform 参数,实现包括灰阶渐变、点击波纹、鼠标揭示遮罩、点击与按压的流体扭曲、以及基于滚动的动态模糊等复杂 GPU 动效。文章强调 JavaScript 动画时间线与 GLSL 实时渲染逻辑的联动,让网站视觉能以自然、物理感与交互性呈现。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 基础设置与 HTML/CSS 结构
• 构建页面容器与隐藏溢出内容,准备 GSAP Draggable 和 ScrollTrigger 绑定。
• 在 Three.js 环境中创建 Stage 类,负责 Renderer、Camera、Scene 管理。
• 使用 GSAP ticker 同步渲染循环,实现动画与渲染一致更新。
2. WebGL Stage 与平面载入
• 使用 TextureLoader 创建平面 (PlaneGeometry),加载 DOM 中的图片纹理。
• 将 DOM 元素与 Canvas 中的物体同步,通过正交相机的坐标转换函数转换屏幕坐标到世界坐标。
• 替换标准材质为 ShaderMaterial,导入自定义 vertex/fragment shader。
3. 点击波纹与灰阶渐变效果(Ripple + Grayscale)
• 使用 GSAP Observer 监听点击事件。
• 点击后修改 shader uniform uGrayscaleProgress 在彩色与灰阶之间平滑过渡。
• 添加鼠标点击点 uMouse uniform,使过渡从点击中心扩散。
• 加入顶点波动(Ripple)动画,在 vertex shader 中用正弦函数生成波形变形。
• 结合 GSAP Timeline 同步控制灰度和波纹周期。
• 管理多平面状态,实现点击切换与反向第二动画效果。
4. 纹理遮罩揭示(Texture Reveal Mask Effect)
• 引入双纹理 (uTexture, uTextureBack) 并使用 uMixFactor 控制混合。
• 通过鼠标 hover 事件,使用 Raycaster 定位交互对象。
• 在 fragment shader 中基于鼠标坐标生成圆形遮罩,平滑混合两张纹理。
• 悬停时 reveal 动画开启,离开时渐出还原。
5. 点击按压揭示(Click & Hold Mask Reveal)
• 通过 GSAP Observer 监听 onPress/onRelease/onMove,管理按压持续状态。
• 使用异步 Timeline 表现“按住充能—释放复位”的动画逻辑。
• shader 中使用噪声函数 (noise) 与 uTime 动态扰动 mask,制造液态波动感。
• 实现交互中的纹理扭曲、流动与时间关联视觉。
6. 动态模糊轮播(Dynamic Blur Effect Carousel)
• 结合 GSAP Draggable 与 ScrollTrigger 使轮播支持拖动与滚动同步。
• 计算每个平面到屏幕中心的距离,根据距离动态更新 uBlurAmount。
• 在 shader 中使用多重 Kawase 模糊算法,混合多层模糊采样和平滑区间。
• blur 与 scroll 动态联动,创造景深般的焦点模糊效果。
7. 总结与启发
• GSAP 为动画时序与交互逻辑提供流畅控制。
• Shaders 提供像素级视觉自由度与 GPU 实时渲染性能。
• 在 Web 前端中实现生动视觉,展现设计与技术融合的趋势。
author Andrea Biason
#前端 #demo #codepen #webgl #着色器
一组抛光的着色器
Orbs N Ringz by Matthias Hurrle
是建立在 tw_orbsNringz 上的着色器实现
via CodeSparkle#467
一组抛光的着色器
Orbs N Ringz by Matthias Hurrle
是建立在 tw_orbsNringz 上的着色器实现
Orbs N Ringz
Matthias Hurrle carves out a set of polished shapes in this "Fun little shader doodle, heavily influenced by KomaTebe's tw_OrbsNRingz. I just wanted to recreate it with only a fragment shader so I could play around with it."
via CodeSparkle#467