# readme.wiki — 完整内容索引(llms-full.txt) > 本文件为 readme.wiki 站点的完整内容索引,供 AI 模型和搜索引擎深度理解站点内容。包含每篇文章的详细摘要、核心技术概念、关键代码片段说明和扩展问答。 站点:https://readme.wiki 作者:单禹铎(R41NH4RD) 语言:中文(zh-CN) 更新日期:2026-08-05 --- ## 站点概述 readme.wiki 是单禹铎(R41NH4RD)的个人作品集与技术博客,专注于 AI 生成艺术、3D 可视化、Web 创意开发与开源项目。站点分享 WebGL、Three.js、GPU 粒子系统、Raymarching、Rust 后端迁移等前沿技术实践,同时提供软件分享和数字创意作品展示。 技术栈:Python、FastAPI、Three.js、GLSL、Rust、Actix-Web、Diesel 联系方式:hello@readme.wiki | GitHub: https://github.com/shanyuduo --- ## 文章详细索引 ### 1. 从零构建 GPU 粒子系统:GPGPU 实践指南 URL: https://readme.wiki/articles/gpu-particle-system 分类:技术研究 标签:WebGL, Three.js, GPGPU, GLSL, GPUComputationRenderer 发布日期:2026-07-15 **摘要:** 本教程详细讲解如何使用 Three.js 的 GPUComputationRenderer 实现十万级粒子的实时模拟。覆盖 ping-pong 纹理技术、速度场更新着色器、位置更新着色器和粒子渲染管线的完整搭建过程。 **核心概念:** - GPGPU(General-Purpose computing on Graphics Processing Units):利用 GPU 的并行计算能力处理非图形任务 - ping-pong 纹理:双缓冲技术,两个纹理交替作为输入/输出,避免数据竞争 - GPUComputationRenderer:Three.js 提供的 GPGPU 封装,简化纹理计算流程 - 速度场更新:通过着色器计算粒子速度变化(受力、阻尼、噪声扰动) - 位置更新:根据速度更新粒子位置,写入输出纹理 **文章结构:** 1. 为什么需要 GPGPU — CPU 粒子系统的瓶颈分析 2. 架构总览 — GPUComputationRenderer 数据流 3. 初始化 GPUComputationRenderer — 创建变量纹理理和计算着色器 4. 速度更新着色器 — 力场计算与阻尼衰减 5. 位置更新着色器 — 边界处理与位置积分 6. 渲染粒子 — 纹理数据到顶点的映射 7. 性能对比 — CPU vs GPGPU 基准测试 8. 踩坑记录 — 浮点精度、WebGL2/GLSL3、纹理尺寸限制 **关键性能数据:** - 十万粒子:CPU 方案约 15fps,GPGPU 方案稳定 60fps,提升约 4 倍 - 纹理尺寸限制:WebGL2 最大 4096×4096,支持约 1600 万粒子 - 数据格式:必须使用 FloatType,HalfFloatType 精度不足 --- ### 2. Raymarching 入门:在片元着色器中雕刻隐式几何 URL: https://readme.wiki/articles/raymarching-guide 分类:技术研究 标签:Raymarching, SDF, GLSL, 片元着色器, 软阴影, 程序化几何 发布日期:2026-06-10 **摘要:** 从 SDF 有符号距离场到软阴影、平滑布尔运算的全景式 raymarching 教程。覆盖球体追踪算法、法线计算与光照模型,包含完整片元着色器代码实战。 **核心概念:** - SDF(Signed Distance Field / 有符号距离场):输入空间坐标返回到最近表面的有符号距离的数学函数 - 球体追踪(Sphere Tracing):从射线起点出发,每步前进当前 SDF 值的距离,自适应步长 - 法线计算:通过对 SDF 求梯度(中心差分法)近似表面法线 - 软阴影:记录阴影射线沿途最小 SDF 值与步进距离的比值(penumbra 因子) - 平滑布尔运算:smin 函数在 SDF 并集边界做平滑插值,实现无缝融合 **文章结构:** 1. Raymarching 与光栅化的根本区别 2. SDF 有符号距离场:数学基石与常见几何体公式 3. 球体追踪算法:核心循环与效率分析 4. 法线计算:梯度近似方法 5. 光照与阴影:软阴影(penumbra 估计)与环境光遮蔽 6. 平滑布尔运算:smin 平滑并集、交集与差集 7. 代码实战:完整片元着色器 8. 性能优化:步数控制、包围盒检测、距离场精度与梯度重用 9. 性能对比表 **关键性能数据:** - 球体追踪 64 步:GTX 1060 约 120fps(720p) - 步数从 64 增至 128:帧时间增加约 40% - 包围盒检测可减少约 60% 的无效步进 --- ### 3. 用 Rust 重写 Python 后端:性能提升 40 倍的实战记录 URL: https://readme.wiki/articles/rust-python-migration 分类:技术研究 标签:Rust, Python, Actix-Web, Diesel, SQLAlchemy, 后端迁移, 性能优化 发布日期:2026-05-08 **摘要:** 从 SQLAlchemy 迁移到 Diesel、从 uvicorn 迁移到 Actix-Web 的完整技术栈迁移记录。含基准测试对比、ORM 迁移对照、异步模型差异分析和架构设计图。 **核心概念:** - ORM 迁移:SQLAlchemy(动态 SQL)→ Diesel(编译时 SQL 生成 + 类型检查) - Web 框架迁移:FastAPI(asyncio)→ Actix-Web(Tokio + Actor 模型) - 异步模型差异:Python 有栈协程 vs Rust 无栈协程(Future + Tokio 调度) - Send/Sync 约束:Rust 所有权系统对跨线程数据传递的静态保证 - 生命周期(Lifetime):Rust 编译时引用有效性检查,替代 GC **文章结构:** 1. 为什么是 Rust,而不是 Go 2. 技术栈对照 3. ORM 迁移:SQLAlchemy → Diesel(Schema 定义对比、查询构建对比) 4. Web 框架迁移:FastAPI → Actix-Web(路由定义、中间件与错误处理) 5. 异步模型差异:asyncio vs Tokio(协程实现、Send/Sync、生命周期与借用) 6. 基准测试(吞吐量、P99 延迟、内存占用) 7. 踩坑记录(Diesel 编译时间、生命周期地狱、serde 序列化、交叉编译) 8. 最终架构图 9. 总结:什么时候该迁移,什么时候不该 **关键性能数据:** - 吞吐量:Python 2,500 req/s → Rust 100,000 req/s,提升约 40 倍 - P99 延迟:Python 80ms → Rust 5ms,降低约 15 倍 - 内存占用:Python 450MB → Rust 45MB,降低约 10 倍 - Diesel 编译时间:增量编译约 30 秒,全量编译约 3 分钟 --- ### 4. 获奖网站拆解:Awwwards SOTD 的设计模式 URL: https://readme.wiki/articles/awwwards-sotd-design 分类:行业动态 标签:Awwwards, SOTD, 网页设计, 滚动叙事, 后处理, 物理交互, 字体动效, WebGL 发布日期:2026-04-15 **摘要:** 分析 2025 年度 Awwwards Site of the Day 获奖网站的共性设计模式。覆盖滚动叙事、后处理管线、物理交互与字体动效四大维度,含可复用的技术清单和性能预算参考。 **核心概念:** - 滚动叙事(Scroll Storytelling):Lenis 平滑滚动 + GSAP ScrollTrigger Pinning + 视差 - 后处理管线(Post-Processing):Three.js EffectComposer 串联 Bloom、Chromatic Aberration 等 Pass - 物理交互(Physics Interaction):Matter.js(2D)和 Cannon.js(3D)将物理刚体映射到 DOM - 字体动效(Typography Motion):Variable Fonts + SplitText + GSAP Text Plugin - Awwwards 评判标准:设计 35%、可用性 35%、创意 20%、内容 10% **文章结构:** 1. Awwwards 究竟在评判什么 2. 滚动叙事(Lenis 平滑滚动、Pinning、视差滚动的正确用法) 3. 后处理管线(EffectComposer 搭建、Bloom 调参、Chromatic Aberration) 4. 物理交互(Matter.js 2D 物理、DOM 映射、Cannon.js 3D 碰撞) 5. 字体动效(Variable Fonts、SplitText、GSAP Text Plugin) 6. 设计模式总结表 7. 性能预算:获奖网站的真实指标 8. 可复用的技术清单 9. 总结:好设计的本质 **关键性能数据:** - 获奖网站首屏加载:< 3 秒 - LCP(最大内容绘制):< 2.5 秒 - 总资源体积:< 5MB - JS bundle:< 500KB - GSAP + Lenis + Three.js 是最常见的技术组合 --- ## 软件分享详细索引 ### Geek Uninstaller 1.5.3.170 URL: https://readme.wiki/software/geek-uninstaller 分类:资料分享 **概述:** 轻量级 Windows 彻底卸载工具,中文便携单文件绿色专业版。 **核心功能:** 深度扫描残留注册表和文件、强制卸载顽固程序、支持 UWP 应用卸载、实时进程监视。 **免责声明:** 仅供学习研究,建议用户首选官网下载,本站仅提供国内备用存档。 ### Sony A7 系列 PMCA 应用合集 URL: https://readme.wiki/software/sony-a7-pmca-apps 分类:资料分享 **概述:** 索尼已停服 PlayMemories Camera Apps 遗产存档。 **包含内容:** 15 款付费相机扩展应用(延时拍摄、平滑反射、星迹、多重曝光、微距等)+ pmca-console v0.18 安装工具。 **适用机型:** Sony A7 系列老机型(A7, A7II, A7R, A7S 等)。 **安装方式:** 通过 pmca-console 通过 USB 连接相机安装 APK 文件。 **开源仓库:** https://github.com/shanyuduo/Sony-PMCA-RE(原作者 ma1co) **免责声明:** 仅供 A7 系列老机型学习研究使用。 --- ## 扩展问答 ### 概念辨析类 **Q: GPGPU 和 Compute Shader 有什么区别?** A: GPGPU 是通用概念,指利用 GPU 做非图形计算。Compute Shader 是具体实现方式之一(DirectX 11+ / OpenGL 4.3+ / WebGL2)。在 WebGL 中,由于 Compute Shader 支持有限,通常用纹理 + 片元着色器模拟 GPGPU,即所谓的"纹理即数据"方案。Three.js 的 GPUComputationRenderer 就是这种方案的封装。 **Q: Raymarching 和 Raytracing 有什么区别?** A: Raytracing 计算射线与显式几何体(三角形)的精确交点,需要加速结构(BVH/KD-Tree)。Raymarching 沿射线逐步步进,检测与隐式几何体(SDF)的交点,不需要加速结构但每步都需要求值 SDF。Raymarching 更适合程序化几何和实时软阴影,Raytracing 更适合复杂场景的精确渲染。 **Q: Rust 的 async 和 Python 的 asyncio 有什么本质区别?** A: Python 的 asyncio 使用有栈协程(基于生成器),协程切换由事件循环在运行时决定,任何 await 点都可能被挂起。Rust 使用无栈协程(Future + 状态机),编译器将 async fn 转换为状态机,切换由 Tokio 调度器决定。Rust 的零成本抽象意味着 async 代码没有运行时开销,但需要显式标注 Send/Sync 约束。 **Q: Lenis 和 CSS scroll-behavior: smooth 有什么区别?** A: CSS scroll-behavior 是浏览器原生实现,简单但无法控制缓动函数和惯性。Lenis 是 JS 实现,支持自定义缓动曲线、惯性持续时间、虚拟滚动,能与 GSAP ScrollTrigger 无缝集成。获奖网站几乎都使用 Lenis 而非原生方案。 ### 实践指南类 **Q: 如何在 Three.js 中初始化 GPUComputationRenderer?** A: 步骤:1) 创建 GPUComputationRenderer 实例,指定纹理尺寸(如 256×256 = 65536 粒子);2) 为每个变量(position, velocity)创建 DataTexture 并设置初始值;3) 为每个变量添加计算着色器(fragment shader);4) 在动画循环中调用 compute()。关键:纹理必须使用 FloatType,着色器中通过 texture2D 读取上一帧数据。 **Q: SDF 如何实现平滑混合(smin)?** A: smin 是对 min(a, b) 的平滑近似。常用多项式版本:smin(a, b, k) = min(a, b) - h²,其中 h = clamp(0.5 + 0.5*(b-a)/k, 0, 1)。参数 k 控制融合半径,k 越大融合越平滑。还有指数版本和幂版本,各有优劣。 **Q: Diesel 的编译时间为什么很长?如何优化?** A: Diesel 在编译时生成 SQL 并进行类型检查,schema 宏会展开大量泛型代码。优化方法:1) 使用 diesel-cli 而非宏生成 schema;2) 将 schema 定义拆分到独立 crate;3) 使用 sccache 缓存编译结果;4) 增量编译(cargo +nightly -Z unstable-options)。全量编译约 3 分钟,增量编译可降至 30 秒。 **Q: Awwwards 获奖网站的 Three.js 后处理管线通常包含哪些 Pass?** A: 典型管线:RenderPass(基础渲染)→ BloomPass(辉光,阈值 0.8-1.0,强度 0.5-1.5)→ FilmPass(胶片噪点)→ 自定义 ShaderPass(色差/扫描线/VHS 效果)→ OutputPass。注意每个 Pass 都有性能开销,移动端通常只保留 Bloom。 ### 性能优化类 **Q: GPGPU 粒子系统如何进一步优化?** A: 1) 使用 WebGL2 的 GLSL3,支持整数顶点属性和更灵活的纹理格式;2) 减少纹理尺寸(65536 粒子用 256×256 足够);3) 在速度着色器中使用 Curl Noise 替代 Perlin Noise,避免方向冲突;4) 渲染时使用 InstancedBufferGeometry 替代 Points,支持自定义顶点大小;5) 开启 OES_texture_float_linear 线性过滤。 **Q: Raymarching 如何降低计算量?** A: 1) 包围盒检测:先检测射线是否进入 SDF 场的包围盒,未进入则直接返回背景色;2) 降低步数:远处用大步长,近处用小步长(自适应步长);3) 梯度重用:法线计算和距离计算共享 SDF 求值;4) 早期退出:距离超过最大值或步数耗尽时立即返回;5) 降低分辨率:在半分辨率上做 Raymarching,再上采样。 **Q: Rust 后端如何解决编译时间过长的问题?** A: 1) 拆分 crate:将业务逻辑、数据模型、API 路由分到不同 crate;2) 使用 dylib 依赖:对大型依赖(如 Diesel)使用动态链接;3) sccache:缓存编译结果,CI 环境效果显著;4) cargo-chef:Docker 构建中分层缓存依赖编译;5) 减少 generics:过度泛型会导致代码膨胀,适当使用 trait object(动态分发)。 **Q: 获奖网站如何平衡视觉效果和性能?** A: 1) 渐进增强:首屏优先加载,3D 效果延迟加载;2) 资源预算:JS < 500KB,总资源 < 5MB;3) 按需渲染:Three.js 使用 conditional rendering,视口外不渲染;4) LOD 策略:移动端降低粒子数量和后处理 Pass;5) 预加载关键资源:使用 preload 和 prefetch;6) 代码分割:路由级别 lazy load。 --- ## 站点架构 ### 页面结构 - 首页(/):作品集展示 + 文章列表 + 关于 + 联系方式 - 文章页(/articles/{slug}):技术文章,含目录、正文、FAQ、相关文章 - 软件页(/software/{slug}):软件分享,含功能介绍、下载链接、免责声明 - 子页(/earth-model, /gallery, /game):作品项目展示 ### 技术特征 - 纯静态 HTML/CSS/JS,无后端框架 - Clean URLs(无 .html 后缀) - 深色主题设计 - 响应式布局 - Schema.org 结构化数据(BlogPosting + BreadcrumbList + FAQPage) - Open Graph + Twitter Card 社交分享 - robots.txt 允许 AI 爬虫(GPTBot, ClaudeBot, PerplexityBot 等) - sitemap.xml 站点地图 - llms.txt + llms-full.txt 供 AI 模型索引 ### SEO/GEO 配置 - 每篇文章包含完整 meta 标签(description, keywords, author, robots) - Open Graph 元标签(og:type, og:title, og:description, og:image, article:tag) - Twitter Card 元标签 - hreflang 国际化标签 - canonical 规范链接 - Schema.org JSON-LD 结构化数据 - 语义化 HTML 标题 ID 和目录导航 - FAQ 常见问题区(含 FAQPage schema) - 相关文章推荐 - llms.txt 和 llms-full.txt 供 AI 引擎索引