项目全集
开源仓库 · 技术深读 · 技术写作 · 独立游戏 —— 全部可追溯、可验证

AutoSim
GitHub 原创项目 AutoSim(Python)。纯视觉端到端自动驾驶**离线批跑**仿真器。中国城市,运动学车辆,sim2real 落地。**自研、非商用。** 仓库:https://github.com/xslkim/AutoSim

AutoVideo
GitHub 原创项目 AutoVideo(TypeScript)。 仓库:https://github.com/xslkim/AutoVideo

MicroGptRes
GitHub 原创项目 MicroGptRes(Python)。 仓库:https://github.com/xslkim/MicroGptRes

TechAutoSim
GitHub 原创项目 TechAutoSim()。 仓库:https://github.com/xslkim/TechAutoSim

CARLA 入门:仿真环境与 Ego Vehicle
CARLA 入门:仿真环境与 Ego Vehicle。Client-Server 架构 两条通信通道,两种语义 CARLA 进程被显式分成两端: Server :Unreal Engine 进程( CarlaUE4.sh / CarlaUE5.sh ),独占 GPU,负责场景渲染、刚体物理、Actor 状态机。它本身不知道”自动驾驶”是什么,只是一个被驱动的世界。。视频:Carla1.mp4

CARLA 传感器全景:相机·LiDAR·RADAR
CARLA 传感器全景:相机·LiDAR·RADAR。传感器全景 三大类传感器的本质差异 CARLA 把传感器按 采集维度和输出形态 分成三类。理解这个分类的工程意义在于:不同类别的传感器,回调里拿到的数据结构、同步对齐方式、需要的后处理都不一样。。视频:Carla2.mp4

CARLA 同步模式与场景:交通流·天气·闭环
CARLA 同步模式与场景:交通流·天气·闭环。异步 vs 同步模式 两种模式的本质 模式 Server 行为 时间步 Client 等待 用途 异步 (Asynchronous) 全速渲染,按渲染帧率自走 delta_seconds 跟随渲染 否(随时读最新帧) 快速数据采集、调试可视化 同步 (Synchronous) 停在当前帧,等 tick() 才走 fixed_delta_seconds 固定 是(每帧等 Server) 闭环评测、可复现实验 异步模式为什么”不可复现” 异步模式下,Server 的推进由 渲染帧率 决定(受 GPU 负载、垂直同步、场景复杂度影响)。Client 调 get_world().snapshot 拿到的是”此刻最新的世界状态”,但这个状态对应哪个仿真时刻是模糊的——两次运行时 GPU 负载不同,相同时间点查到的世界状态可能完全不同。。视频:Calrla3.mp4

端到端驾驶:从模块化到 Sparse 范式
端到端驾驶:从模块化到 Sparse 范式。模块化方案的三个根本问题 传统 Pipeline 的结构 经典自动驾驶系统按功能切分五个串行模块: 感知 (Perception) → 跟踪 (Tracking) → 预测 (Prediction) → 规划 (Planning) → 控制 (Control) 每个模块独立训练,用前一个模块的输出作为输入。工程上成熟、可调试,但这条信息流有三个 结构性缺陷 。。视频:Carla4.mp4

SparseDriveV2 模型架构:采样·词典·打分
SparseDriveV2 模型架构:采样·词典·打分。整体架构概览 四模块流水线 SparseDriveV2 的端到端数据流: 6 × RGB (1920×1080) │ ▼ ┌──────────────────┐ │ Image Encoder │ ResNet-34 + FPN,提取多尺度图像特征 └──────────────────┘ │ ▼ ┌──────────────────┐ │ Symmetric Sparse │ Detection + Tracking(实例 query) │ Perception │ Online Mapping(地图 query) └──────────────────┘ │ ▼ ┌──────────────────┐ │ Scoring-Based │ 在 262K 候选轨迹中打分,选最优 │ Planner │ └──────────────────┘ │ ▼ 规划轨迹 τ* 为什么是这四块 这四块对应端到端驾驶的四个本质子任务: 看(。视频:Carla5.mp4

闭环评测:Bench2Drive 协议与成败案例
闭环评测:Bench2Drive 协议与成败案例。开环 vs 闭环 两种评测的本质区别 维度 开环 (Open-loop) 闭环 (Closed-loop) 数据来源 回放预录数据集 实时仿真,Agent 决策驱动 Agent 行为影响环境? 否 是 评测指标 L2 轨迹偏差(ADE/FDE) Driving Score(路线完成 + 违规惩罚) 协议感受性 不暴露累积误差 暴露所有累积误差 计算成本 低(一次前向) 高(持续运行 CARLA) 开环为什么不够 开环评测的流程:给定 nuScenes/NAVSIM 的图像序列 → 模型预测轨迹 → 和数据集里记录的真实轨迹比 L2 误差。问题: 预测不影响后续输入 模型在第 t t t 帧预测了一条偏离 GT 的轨迹,但第 t + 1 t+1 t + 1 帧的输入 仍然是 GT 轨迹对应的图像 ——回放数据集不会因为模型走偏而改变。。视频:Carla6.mp4

工程闭环调试:失败定位与修复实录
工程闭环调试:失败定位与修复实录。三类失败:ENG / ALG / SCN 为什么需要失败分类 闭环评测一个 case 失败了,第一件事不是”改模型”,而是 搞清楚失败的根因归属 。 verify_batch 这个验收脚本把每个失败 case 自动归到三类身份,每类的修法完全不同: 类别 含义 根因层 修法 ENG 工程问题 参数 / 控制管道 改配置、改参数、改控制逻辑 ALG 算法局限 模型本身 重训、微调、改架构 SCN 场景几何 Bench2Drive 场景设计 修场景(行为树、路线、NPC 编排) 混淆这三类会导致 修错地方 :把 SCN 当 ALG 去改模型,怎么改都没用(场景没真的发生交互);把 ALG 当 ENG 去调参数,掩盖了模型的真问题。。视频:Carla7.mp4

IMU 与双目相机联合标定
IMU 与双目相机联合标定。怎么测距:针孔加地平面 针孔模型:像素与射线的一一对应 针孔相机把三维世界投影到二维图像。设相机坐标系 O c X c Y c Z c O_c X_c Y_c Z_c O c X c Y c Z c ,光心在原点,光轴沿 + Z c +Z_c + Z c ,图像平面在 Z c = f Z_c = f Z c = f (焦距)处。。视频:imu-cam-calib.mp4

海洋着色器(上):噪声·高度场·求交
海洋着色器(上):噪声·高度场·求交。GPU:SIMD 大规模并行处理器 画面是 GPU 算出来的。CPU 和 GPU 的设计哲学根本不同: CPU GPU 核心数 几个到几十个 数千个(流处理器) 单核复杂度 高(乱序执行、分支预测、大缓存) 低(顺序执行、小缓存) 适合任务 复杂串行逻辑、低延迟 大规模数据并行、高吞吐 内存带宽 通用 DRAM 高带宽显存(GDDR/HBM) 一张 1080p 画面有 1920 × 1080 ≈ 2 × 10 6 1920 \times 1080 \approx 2\times10^6 1920 × 1080 ≈ 2 × 1 0 6 个像素,每个像素要独立算颜色——这是** embarrassingly parallel**(天然并行)任务,正是 GPU 的拿手好戏。。视频:ocean2.mp4/ocean.mp4

海洋着色器(下):菲涅尔·业界做法·FFT
海洋着色器(下):菲涅尔·业界做法·FFT。相机:射线怎么射出来 每个像素射出一条光线。相机放在水面上方 3.5 个单位,随时间向前移动。。视频:ocean2.mp4

Raymarching:SDF 距离场渲染器从零实现
Raymarching:SDF 距离场渲染器从零实现。全屏三角形:一个 shader 渲染整个 3D 世界 SDF Raymarching 的宿主 C++ 程序不加载任何 3D 模型,只画 一个覆盖全屏的三角形 (B17 详述技巧)。这个三角形唯一的作用是触发 GPU 为 每个像素 执行 fragment shader: 全屏三角形 (1 个 primitive) ↓ 光栅化 每像素 fragment shader 独立运行 ↓ 每个像素:算射线 → Sphere Tracing 求交 → 算光照 → 输出颜色 整个 3D 场景——几何、相机、光照、阴影—— 全部封装在一个 fragment shader 函数里 。。视频:Raymarching.mp4

路径追踪入门:99行渲染出 Cornell Box
路径追踪入门:99行渲染出 Cornell Box。Cornell Box 里的两个现象 Cornell Box(康奈尔盒子)是测试全局光照的标准场景。画面里有两个直接光照产生不了的现象: 全局光照 :光线在墙壁间反复弹射,角落和间接被照亮的区域也有柔和的光,不是死黑。。视频:smallpt1.mp4

radiance 函数逐行拆解:漫反射·镜面·折射
radiance 函数逐行拆解:漫反射·镜面·折射。radiance() 是渲染方程的递归求解器 radiance 递归求解的是某条射线的 出射辐射度 (outgoing radiance)。它把光传输方程(Light Transport Equation, LTE)拆成五步代码: Vec radiance ( const Ray & r , int depth ){ double t; // 交点参数 int id = 0 ; if ( ! intersect (r, t, id)) return Vec (); // 1. 未命中 → 环境黑 const Object & obj = objects[id]; Vec x = r.o + r.d * t; // 2. 交点 Vec n = (x - obj.p). norm (); // 几何法线 Vec nl = n. dot (r.d) < 0 ? n : n *- 1 ; // 朝向射线来源的定向法。视频:smallpt2_remotion.mp4

路径追踪全貌:三种材质与收敛演示
路径追踪全貌:三种材质与收敛演示。为什么这么慢:一笔账 把渲染一张图掰成算术题 路径追踪慢,不是写法烂,是计算量本来就大。把这笔账精确化: 量 数值 分辨率 1024 × 768 = 786432 1024 \times 768 = 786432 1024 × 768 = 786432 像素(约 80 万) 每像素采样 1000 1000 1000 条路径 每条路径平均弹射 8 8 8 次 总射线数 786432 × 1000 × 8 ≈ 6.3 × 10 9 786432 \times 1000 \times 8 \approx 6.3 \times 10^9 786432 × 1000 × 8 ≈ 6.3 × 1 0 9 约 60 亿次射线-场景求交 ,这就是一张干净画面的代价。。视频:smallpt3.mp4

用 CPU 复刻 URP(上):光栅化全流程
用 CPU 复刻 URP(上):光栅化全流程。导出器与场景文件格式 一套数据,两种文件 C# 导出器遍历场景后产出两类文件,按”文本/二进制”分家: JSON :相机、光源、物体列表、材质、贴图路径、环境光系数、雾参数。描述”场景里有什么”,体积小、可读、便于人眼对照。。视频:urp1.mp4

用 CPU 复刻 URP(下):材质·阴影·球谐·雾
用 CPU 复刻 URP(下):材质·阴影·球谐·雾。法线与 Lambert 余弦定律 光照的第一条规则—— 正对着光的面亮、侧着的面暗 ——背后的数学就是 Lambert 余弦定律。 法线是什么 法线(normal)是表面某点处垂直于表面的 单位向量 n \mathbf{n} n , ∥ n ∥ = 1 \|\mathbf{n}\|=1 ∥ n ∥ = 1 。。视频:urp2.mp4

WebRTC 实时音视频(上):延迟·编解码·抗丢包
WebRTC 实时音视频(上):延迟·编解码·抗丢包。端到端延迟是一条流水线 从你动一下到对方屏幕亮起,整段延迟 Δ \Delta Δ 是流水线上各段耗时之和: Δ = t capture ⏟ 采集 + t encode ⏟ 编码 + t net ⏟ 网络 + t jbuf ⏟ 抖动缓冲 + t decode ⏟ 解码 + t render ⏟ 渲染 \Delta = \underbrace{t_{\text{capture}}}_{\text{采集}} + \underbrace{t_{\text{encode}}}_{\text{编码}} + \underbrace{t_{\text{net}}}_{\text{网络}} + \underbrace{t_{\text{jbuf}}}_{\text{抖动缓冲}} + \underbrace{t_{\text{decode}}}_{\text{解码}} + \underbrace{t_{\text{render}}}_{\text{渲染}。视频:webrtc1.mp4

WebRTC 实时音视频(下):封包·连接·信令
WebRTC 实时音视频(下):封包·连接·信令。协议全景栈 为什么底座是 UDP WebRTC 的媒体和数据全部跑在 UDP 上,而不是 TCP。这不是习惯,是实时性硬要求: TCP 的可靠重传会触发队头阻塞(head-of-line blocking) 。。视频:webrtc2.mp4

独立游戏开发者
体感游戏《健身环大冒险》:智能电视平台,山寨Switch的体感游戏,硬件软件全栈开发,采用卡通渲染风格。

ailiaring
GitHub 原创项目 ailiaring(Python)。 仓库:https://github.com/xslkim/ailiaring

AuteTest
GitHub 原创项目 AuteTest(Python)。 仓库:https://github.com/xslkim/AuteTest

AutoAgent
GitHub 原创项目 AutoAgent(Python)。 仓库:https://github.com/xslkim/AutoAgent
AvatarBrain
GitHub 原创项目 AvatarBrain(Python)。 仓库:https://github.com/xslkim/AvatarBrain
AvatarMemory
GitHub 原创项目 AvatarMemory()。 仓库:https://github.com/xslkim/AvatarMemory

blind
GitHub 原创项目 blind(Python)。 仓库:https://github.com/xslkim/blind

comfyui_controlnet_aux
GitHub 原创项目 comfyui_controlnet_aux()。 仓库:https://github.com/xslkim/comfyui_controlnet_aux

face_demo
GitHub 原创项目 face_demo(Java)。 仓库:https://github.com/xslkim/face_demo

FlashEngine
GitHub 原创项目 FlashEngine(C++)。- Create 2d Animation user flash. 仓库:https://github.com/xslkim/FlashEngine

fuyan
GitHub 原创项目 fuyan(Python)。 仓库:https://github.com/xslkim/fuyan

godot_water
GitHub 原创项目 godot_water(C++)。 仓库:https://github.com/xslkim/godot_water

head3d
GitHub 原创项目 head3d(Python)。这个项目把单张人脸照片转换成一个 **502 点 3D 人脸网格**。它保留 MediaPipe FaceMesh 原始的 468 个点不变,并在额头上沿额外追加 34 个点: 仓库:https://github.com/xslkim/head3d

headmark
GitHub 原创项目 headmark(Python)。 仓库:https://github.com/xslkim/headmark

LlmLocal
GitHub 原创项目 LlmLocal(HTML)。 仓库:https://github.com/xslkim/LlmLocal

MasterCoder
GitHub 原创项目 MasterCoder(Python)。终端里的 AI 编程助手:在命令行中与模型对话,支持 OpenAI 兼容 API(含自定义 `api_base_url`),并可在当前 Git 仓库上下文中工作。 仓库:https://github.com/xslkim/MasterCoder

meidaojia
GitHub 原创项目 meidaojia(Python)。 仓库:https://github.com/xslkim/meidaojia

MyNature
GitHub 原创项目 MyNature(Python)。 仓库:https://github.com/xslkim/MyNature

MyRender
GitHub 原创项目 MyRender(C)。> 一个用 C++ 写的软件渲染器:**不调用任何显卡 API**,每一个像素都由 CPU 一行代码一行代码算出来。 仓库:https://github.com/xslkim/MyRender

NetMonitor
GitHub 原创项目 NetMonitor(C++)。 仓库:https://github.com/xslkim/NetMonitor

oceanfitness
GitHub 原创项目 oceanfitness()。 仓库:https://github.com/xslkim/oceanfitness

Resume
GitHub 原创项目 Resume()。 仓库:https://github.com/xslkim/Resume

shadertoy
GitHub 原创项目 shadertoy(HTML)。 仓库:https://github.com/xslkim/shadertoy

U2Edit
GitHub 原创项目 U2Edit(TypeScript)。 仓库:https://github.com/xslkim/U2Edit

UnityLine
GitHub 原创项目 UnityLine(C#)。 仓库:https://github.com/xslkim/UnityLine

UnrealBuild
GitHub 原创项目 UnrealBuild()。 仓库:https://github.com/xslkim/UnrealBuild

AI 编程原理(上):LLM·工具调用·Agent 循环
AI 编程原理(上):LLM·工具调用·Agent 循环。LLM 的本质:无状态函数 LLM 就是一个纯函数 把大语言模型(LLM,Large Language Model)剥到最底层,它就是一个把文本映射到文本的函数: output = f ( input ) \text{output} = f(\text{input}) output = f ( input ) 输入 :一段文本(更准确地说是 token 序列) 输出 :一段文本(同样是 token 序列) 没有副作用 :函数内部不读写硬盘、不连数据库、不持有任何变量状态 所谓”调用之间完全独立”,指的是两次调用 f ( x 1 ) f(x_1) f ( x 1 ) 和 f ( x 2 ) f(x_2) f ( x 2 ) 互不影响——上一次输入了什么、输出了什么,对这一次毫无影响。这是函数式编程里**纯函数(pure function)**的特性。。视频:ai-codeing.mp4

AI 编程原理(中):多场景实战与自我纠错
AI 编程原理(中):多场景实战与自我纠错。第一次 LLM 调用:生成 C++ 代码 这一次发送了什么 用户只说了一句”用 C++ 写个 hello world 并运行”。第一次 API 调用,发送的 messages 包含三类内容: System Prompt (数千 token):定义 Claude Code 的角色、工具规范、环境信息(见 System Prompt)。。视频:ai-coding2.mp4

AI 编程原理(下):上下文压缩与 MCP
AI 编程原理(下):上下文压缩与 MCP。上下文窗口(Context Window) 什么是上下文窗口 LLM 一次调用能处理的 token 总量有硬上限,叫 上下文窗口 。它同时约束 输入 + 输出 :你发的 messages 越长,留给模型回复的空间就越少,超过上限 API 直接报错。。视频:ai-coding3.mp4

从源码编译虚幻引擎 5:构建系统原理
从源码编译虚幻引擎 5:构建系统原理。获取源码:git 浅克隆 UE 源码在 Epic 的私有 GitHub 仓库。要拉取,GitHub 账号得先加入 EpicGames 组织 (在 epicgames.com 关联账号后 Epic 会发邀请),然后用普通的 git clone 。。视频:BuildUnreal.mp4

用 Kalibr 标定多相机内外参
用 Kalibr 标定多相机内外参。复习:内参 内参(intrinsics)描述相机的 内部成像几何 ,与相机装在哪、朝哪完全无关,只由镜头和图像传感器决定。它解决一个问题:给定一条从光心射出的射线方向,它会落在图像的哪个像素上(以及反过来)。。视频:kalibr.mp4

200 行看懂 LLM(上):训练与参数
200 行看懂 LLM(上):训练与参数。下一个字符预测(Next-token Prediction) 模型只做一件事 给定一段文字,猜下一个字是什么。输入”床前明月”,模型输出一组概率分布:下一个最可能是”光”,也可能是”色”或”夜”。。视频:microgpt1.mp4

200 行看懂 LLM(中):前向传播与 Attention
200 行看懂 LLM(中):前向传播与 Attention。Token Embedding + Positional Embedding 模型第一件事是把离散的 token id 翻译成连续向量。字符 ‘e’ 的 id=4,但 4 这个数字本身没有”语义”——4 和 5 之间的距离不比 4 和 26 更近。。视频:microgpt2.mp4

200 行看懂 LLM(下):反向传播与 Adam
200 行看懂 LLM(下):反向传播与 Adam。计算图(Computation Graph) 要让 loss 修正参数,核心问题是: 每个参数对 loss 有多少影响 ?数学上是 loss 对参数的偏导数,工程上叫 梯度(gradient) 。 要算梯度,框架必须把前向传播每一步都记下来,连成一张图——计算图。。视频:microgpt3.mp4

CPU 软光栅器:把三角形变成像素
CPU 软光栅器:把三角形变成像素。渲染管线对照:URP vs CPU 复刻 标准渲染管线 一条可编程渲染管线的各阶段: 顶点数据 → 顶点着色 → 裁剪 → 光栅化 → 片元着色 → 帧缓冲 一一对应 URP 阶段 本项目对应 顶点着色器 vertex_shader 函数 裁剪 ClipWithPlane 片元着色器 fragment_shader 本渲染器把 URP 的每个阶段都用 CPU 代码实现了一遍,骨架完全照搬 URP,只是从 GPU 搬到 CPU——目的是可逐行调试、让 URP 里看不见的中间值全部可见。 参考 Render pipeline(渲染管线) Unity URP(可编程渲染管线) 工程的三层结构 层 职责 Unity 对应 core 管场景(相机、光源、物体) Scene Render 管渲染管线 URP 可编程管线 gpu 管着色(Shader 函数库) URP 的 Shader 三种着色器 实现了 Lit 、 SimpleLit 、 UnLit 三种,名字与。视频:MyRender1_3.mp4

软光栅器进阶:MVP 变换·裁剪·深度测试
软光栅器进阶:MVP 变换·裁剪·深度测试。MVP 四次变换 一个顶点从模型文件里的局部坐标,变成屏幕上的像素坐标,要连续经过四次空间变换。本渲染器把矩阵命名为 UNITY_MATRIX_M 、 UNITY_MATRIX_M_V 、 UNITY_MATRIX_M_V_P 、 UNITY_MATRIX_VP ——和 Unity URP 完全对齐。。视频:MyRender2.mp4

SpeedTree 树木渲染原理与 Blender MCP 实现
SpeedTree 树木渲染原理与 Blender MCP 实现。LOD 系统 LOD(Level of Detail,多级细节)是 SpeedTree 性能的关键。同一棵树预生成多个不同精度的网格版本,引擎根据它在画面里的**屏幕占比(screen coverage)**自动切换,远处用低精度版本省算力。。视频:speedtree.mp4

async/await 的本质:五语言横向对比
async/await 的本质:五语言横向对比。async 不等于多线程 误区的根源 很多初学者把 async / await 当成”开新线程的语法糖”。这是最危险的概念错误。。视频:sync1.mp4

async/await 实战:Unity 与 UniTask
async/await 实战:Unity 与 UniTask。Unity 的老办法:协程 协程长什么样 Unity 老牌的异步做法是 协程(Coroutine) ,用 C# 的 IEnumerator + yield return 实现: IEnumerator WaitAndDo () { Debug. Log ( "开始" ); yield return new WaitForSeconds ( 2f ); // ← 等 2 秒 Debug. Log ( "2 秒后" ); yield return new WaitUntil (() => Input. GetKeyDown (KeyCode.Space)); // ← 等条件 Debug. Log ( "空格按下" ); yield return SceneManager. LoadSceneAsync ( "Level2" ); // ← 等异步操作 Debug. Log ( "场景加载完" ); } 方法返回 IEnumera。视频:sync2.mp4

Ubuntu 下使用 FFmpeg 对单帧图像进行编码解码
技术深读:FFmpeg 6.1 源码编译安装 + libpng,实现 640x480 单帧 PNG → H.264 编码 → 解码回 PNG 完整流程:RGB/YUV420P 转换、编码器/解码器初始化、send_frame/receive_packet 收发包循环。来源:知乎 xiang-si-lian-54,2024-05

手动写 Lambert Diffuse 光照模型 Shader
技术深读:从 Unity 内置 Normal-Diffuse 出发剥离宏找到原生 Lambert 代码:UnityLambertLight = Albedo × light.color × max(0,N·L) + 环境光,移植到 HDRP。来源:知乎 xiang-si-lian-54,2021-01

Unity 学习笔记:纯手动渲染管线
技术深读:手写渲染管线:GBuffer 多目标渲染、延迟光照(_InvVP 重建世界坐标)、天空盒立方体贴图采样、GL.GetGPUProjectionMatrix 统一 NDC。来源:知乎 xiang-si-lian-54,2020-12

Unity SRP 自定义渲染管线最简单的 Shader
技术深读:从零实现 SRP 画出一个球:RenderPipelineAsset 入口、CullingResults/DrawingSettings/FilteringSettings、DrawRenderers + 自定义 Shader(LightMode/ShaderTagId 对应)。来源:知乎 xiang-si-lian-54,2021-01

Unity 天空盒环境光和反射光
技术深读:内置/URP/HDRP 三种管线天空盒配置:环境光(动态/静态)、反射光、屏幕背景;GradientSky/HDRISky/PhysicallyBasedSky 三种类型。来源:知乎 xiang-si-lian-54,2020-12