文章列表
对比常见的各种序列化
# 数据序列化方案全维度对比 格式 类型 优势 劣势 Unity 典型应用场景 Protobuf 二进制 极小、极快。强类型安全,支持版本兼容。 不可读,修改需重新编译生成的类。 实时同步、RPC 通信、大型存档。 JSON 文本 通用性强,易读易写。支持动态解析。 体积大,解析速度中等。无类型约束。 Web 接口 (REST)、简单配置、小存档。 BSON 二进制 JSON 的二进制版,支持更多数据类型(如位图)。 比 JSON 快但比 Protobuf 慢,且体积不一定小。 MongoDB 交互、需要二进制嵌套的配置。 YAML 文本 易读写,支持注释、多行字符串
more...更复杂的算子拥有更高的性能
这类算子通常称为 硬件内建数学指令(Hardware Intrinsics) 或 Fast Math Functions。它们很多看起来像复杂数学运算,但 GPU(甚至 CPU SIMD)往往都有专门的硬件指令,因此比调用普通数学库快得多 下面按照图形学中最常见的整理。 算子 数学意义 常见硬件实现 相比普通实现 图形学用途 rcp(x) 1/x Reciprocal 指令 比除法快2~10倍 透视除法、UV插值 rsqrt(x) 1/√x Reciprocal Square Root 比 sqrt+除法快很多 normalize、光照 sqrt(x)
more...SDF介绍与贴花实现
# SDF定义 SDF(有向距离场/有向距离函数) 是隐式几何体的表达方式之一 隐式几何体是通过数学函数或方程来描述的几何形状,不直接记录具体的顶点或面片坐标 被定义为 空间中任意一点 到物体表面的最短有向距离 对于空间中的任意一点 ppp: f(p)>0f(p) > 0f(p)>0:点 ppp 在几何体外部。 f(p)=0f(p) = 0f(p)=0:点 ppp 正好在几何体表面。 f(p)<0f(p) < 0f(p)<0:点 ppp 在几何体内部。 大小:点 ppp 到几何体表面的最短绝对距离
more...Task开始深入理解.NET异步编程
# Intro Task 是 .NET 异步编程的基础。 编写一个 async 方法时,编译器会将其转化为一个实现 IAsyncStateMachine 接口的结构体,但 Task 本身是一个 Class(引用类型) 分配机制:每次调用异步方法,系统都会在堆(Heap)上实例化一个 Task 对象来追踪状态。如果异步方法频繁调用(如每帧执行),会造成明显的 GC(垃圾回收)压力 调度核心:它依赖 SynchronizationContext 或 TaskScheduler。在默认情况下,它倾向于在线程池中运行 Promise 模型:Task 就像一个承诺,它内部维护了结果、异常信息
more...Kajiya-Kay 的毛发特化渲染
好久没更新了喵 讲讲最近尝试的毛发渲染吧 包括真实化的毛发渲染和卡通渲染 # 基本内容 # 标准 Blinn-Phong 它的镜面项是 Ispec=ksIlmax(0,N⋅H)αI_{spec} = k_s I_l \max(0, \mathbf{N} \cdot \mathbf{H})^{\alpha} Ispec=ksIlmax(0,N⋅H)α 其中 H=L+V∣L+V∣\mathbf{H} = \frac{\mathbf{L} + \mathbf{V}}{|\mathbf{L} + \mathbf{V}|} H=∣L+V
more...Dynamic Localization
# 简介 Dynamic Localization 轻量级、可扩展、可插拔的国际化库,支持热重载和多种数据源 也就是一个国际化、本地化的库了 架构如下 ┌─────────────────────────────────────────────────────────────────┐ │ DynamicLocalization │ ├─────────────────────────────────────────────────────────────────┤ │
more...自动化Nuget发布
# 使用 MinVer + NuGet + GitHub Actions 实现 .NET 库自动化发布 # 前言 利用 MinVer、NuGet 和 GitHub Actions 实现一套完整的自动化发布流程 只需打一个 Git Tag 自动完成版本计算、打包和发布到 NuGet。 # 整体架构 Git Tag (v1.0.0) ↓ GitHub Actions 触发 ↓ MinVer 从 Git 历史计算版本号 ↓ dotnet pack 生成 NuGet 包 ↓ 自动发布到 NuGet.org # 一、MinVer:基于 Git Tag 的版本管理 # 什
more...Auto Setting UI
# 简介 AutoSettingUI Github 这个项目是根据一些现有的配置类快速生成配置控件的类库,运用上我觉得还是特别方便的,而且也是因为我自己的另一个项目中有运用,也感觉有一定的通用性所以抽出来的项目 # 功能 使用本项目你大概可以做到: 在开发中可以方便地配置一些数据查看变化等,类似Unity的Inspector 动态生成配置UI可以方便地实现插件的配置项注入以及辅助热重载插件 少些好多UI,然后工作继续摸鱼 ... 具体项目使用的介绍在github的readme,这里就不赘述了 # 神秘低语 另外理论上的项目测试版其实是nuget的正式版,~~ 可能因为我对自己太自信了(bu
more...







