lisyarus

Lisyarus,关于图形编程、游戏开发、C++ 与计算机图形技术的博客。

所以,你想做一个游戏引擎(2023)

作者基于三年自制引擎经验,论证开发游戏引擎的核心价值在于学习成长与消除对第三方工具的挫败感,而非追求商业替代。他提出引擎定义应回归工具本质,小型项目仅需处理输入、显示和音频等基础功能即可构成有效引擎。
评论点赞收藏18 天前

你能找到一个不与N个向量都正交的向量吗?

作者从线性代数直觉出发,探讨了如何在N个向量中找到一个不与它们正交的向量。文章提供了测度论、概率论和代数三种证明方法,并深入讨论了无限域与有限域的区别。最后给出了一种显式的二次时间复杂度算法,并对比了随机采样的效率。内容硬核,适合对数学基础和算法实现感兴趣的开发者。
评论点赞收藏60 天前

箭图:用画箭头重读一年线性代数

作者通过箭图(Quivers)表示论重新解读线性代数课程,将基变换、高斯消元、Jordan标准型等核心概念对应到不同箭图的不可分解表示分类上。文章提供了独特的数学视角,将抽象代数与基础线性代数直观联系,适合对数学结构、范畴论或算法底层逻辑感兴趣的读者。
评论点赞收藏66 天前

自制编程语言:比你想象的简单,但也更难

作者分享从零设计一门名为pslang的编程语言的实战经验。文章详细阐述了设计动机(特别是为了游戏模组支持)、核心设计目标(如低层级、易沙盒化、小编译器体积),并深入解析了语言特性,包括基于缩进的语法、类型系统、内存布局以及C互操作性。这是一篇充满工程细节和个人思考的技术博客。
评论点赞收藏100 天前

浮点数相等比较是可行的:为何epsilon比较往往是错误的工程选择

作者基于15年图形与物理编程经验,反驳了浮点数比较必须使用epsilon的教条。文章通过网格移动、球面线性插值、向量长度计算等具体案例,论证epsilon比较往往掩盖了设计缺陷、导致非传递性Bug且难以调试。作者主张理解IEEE 754标准,通过重构算法逻辑或使用精确比较来替代模糊的epsilon阈值,提供了极具工程价值的反常识观点。
评论点赞收藏120 天前

从零实现一个微型CPU光栅化器(2024)

作者作为大学教师,出于教学和理解底层原理的目的,从零开始用C++和SDL2实现了一个纯CPU端的3D光栅化渲染引擎。本文是第一部分,详细记录了如何创建窗口、建立绘图缓冲区、清除屏幕颜色,并设计了自定义的渲染API。文章提供了完整的代码示例和构建配置,旨在通过亲手实现来深入理解GPU光栅化算法,适合对图形学底层原理感兴趣的开发者。
评论点赞收藏202 天前

使用WebGPU在浏览器中实现Particle Life粒子模拟

作者分享在浏览器中使用WebGPU实现Particle Life粒子模拟的技术实践。文章详细解释了非物理的不对称力模型原理,并深入剖析了WebGPU计算着色器的实现细节,包括空间哈希、并行前缀和(parallel prefix sum)以及原子操作在GPU上的应用,以解决O(N^2)计算瓶颈。
评论点赞收藏446 天前

粒子生命2D模拟演示

一个基于WebGPU的2D粒子生命模拟演示,包含65536个粒子、8种类型及多种交互控制功能。
评论点赞收藏460 天前

(又一篇)四元数入门指南

作者从3D游戏开发中旋转表示的痛点出发,对比矩阵和欧拉角的优劣,引出四元数作为解决方案。文章详细推导了四元数的定义、乘法法则及其与3D旋转的关系,并尝试用直观的代数方式解释复杂的数学概念,适合希望深入理解图形学底层数学原理的技术读者。
评论点赞收藏508 天前

估算重要性采样中的方差降低量

作者针对光线追踪中的重要性采样(Importance Sampling)进行了深入的数学推导。文章不仅回顾了蒙特卡洛积分基础,还推导了实际采样分布与理想分布之间的相对误差与方差降低量之间的精确及近似公式,并通过数值实验验证了理论结果。这是一篇具有明确工程背景(光线追踪)和扎实数学推导的技术博客,适合对图形学算法底层原理感兴趣的开发者。
评论点赞收藏517 天前

地形水流模拟实战:从浅水方程到虚拟管道法

作者结合游戏开发实战,深入探讨了地形上水流模拟的技术方案。文章分析了传统流体模拟(如SPH、Stable Fluids)在游戏场景中的局限性,重点介绍了浅水方程、交错网格以及“虚拟管道法”的实现细节。这是一篇面向游戏引擎开发者和程序化生成爱好者的硬核技术教程,提供了从理论推导到代码实现的具体路径。
评论点赞收藏555 天前

探索Alpha测试纹理的Mipmap生成方案

作者在其村庄建造游戏中遇到alpha-tested纹理在生成mipmap时导致物体消失或变形的技术问题。文章深入分析了传统平均法导致透明度丢失的原因,并系统测试了多种解决方案,包括简单乘法、线性插值、基于覆盖率的重新映射以及SDF(有符号距离场)方法。作者通过实际代码和视觉效果对比,评估了各方法的优劣,最终倾向于使用基于最大值的线性插值方法,并讨论了Hashed Alpha Testing等高级技术的适用性限制。
评论点赞收藏579 天前

从零实现微型CPU光栅化引擎

这是一套从零开始用C++实现基础CPU光栅化引擎的教程系列。内容涵盖从清屏、绘制三角形、颜色插值到透视修正、深度测试等核心图形学概念,并计划涵盖光照、纹理、模型加载及优化等高级主题。代码开源在GitHub上,每篇文章对应一个提交记录,适合对计算机图形学和底层渲染管线感兴趣的开发者。
评论点赞收藏652 天前

用矩阵变换颜色:图形编程中的高效色彩处理技巧

文章介绍了如何利用矩阵变换在图形着色器中高效处理颜色操作,如变暗、变亮、调整对比度和饱和度、色相偏移等。作者结合游戏开发实战,解释了预乘Alpha的重要性及线性变换的局限性,提供了具体的数学公式和矩阵实现细节。
评论点赞收藏673 天前

我最喜欢的动画技巧:指数平滑

作者分享了一种在图形学和UI动画中广泛使用的指数平滑技巧。文章通过切换按钮和相机移动等具体案例,对比了线性、缓动函数与指数平滑的优劣,并深入推导了其背后的微分方程原理,解释了为何该公式能完美处理不同帧率下的动画稳定性,避免抖动和过冲。
评论点赞收藏891 天前

利用四元数进行3D形状匹配

作者结合WebGPU布料模拟的实际开发需求,深入推导了如何利用四元数和特征值方法解决3D形状匹配问题。文章从2D复数解法过渡到3D矩阵推导,并提供了具体的WGSL着色器代码实现和梯度下降优化技巧,是一篇兼具理论深度与工程落地价值的硬核技术博客。
评论点赞收藏934 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。