最新文章

Vulkan 的常见误解

多帧并行相关 有关 Vulkan 交换链和呈现引擎最常见的误解恐怕就集中在多帧并行(Frames-In-Flight,FIF)上了。 这些误解不是毫无原因的,早期 Vulkan 教程对 FIF 概念的讲解含糊不清,尤其是关于到底并行到什么程度更是众说纷纭。 这里,我们先澄清一些 FIF 有关的概念,再讲解其他问...

奇异值分解

本文中我们将延续对线性空间中变换的讨论,但是将其推广到两个线性空间之间的变换,最终导出奇异值分解。 两个内积空间的线性变换 我们这章中约定$V, W$是数域$\mathbf F$上的有限维准希尔伯特空间。 我们将延续半线性型与厄米型中的讨论,从伴随算子开始。 伴随算子的定义 设$u \in \mathca...

C++ 中分配器与多态内存资源

C++ 能够以非常细的粒度控制计算机上的内存,这是该语言的一大特点。 对于 C++ 标准库中的所有容器,都可以通过指定分配器来控制其内存分配的细节。 C++17 则通过引入多态内存资源(Polymorphic Memory Resource)进一步强化了这个能力。 本文中我们将讨论 C++ 标准库中多种分配器的细节。

初探 Vulkan 同步问题

我去年以来一直在给某小作坊游戏引擎的渲染部分贡献代码,并主导了其中 Vulkan API 相关的部分设计。 在 Vulkan 之中——也是任何分布式系统之中,最令人困惑的部分或许就是不同系统之间的同步问题。 Vulkan API 提供了大量的工具用来解决宿主(Host,一般就是指 CPU 和主存)和设备(Devi...

为 Vulkan 设计材质系统

这篇文章中,我将简单说明我本人在 Vulkan 中设计渲染引擎的材质系统时遭遇的问题和提出的解决方案,作为记录以供参考。 材质系统的需求 材质系统几乎是任何图形渲染引擎都不可避免的系统,而且是其中最复杂、细节最多、牵涉组件最广的系统之一,对实时渲染系统而言更是如此。 为了设计这个系统,必须先弄清楚这个系统到底...

TeX 中的宏展开

本文主要介绍 $\TeX$以及$\LaTeX{} 3$中的宏及其展开相关内容,主要参考了高德纳的 $\TeX{}book$以及$\LaTeX{} 3$手册。 TeX 编译原理 我们首先介绍一下 $\TeX$ 是如何从输入产生文章的。 作为基于宏定义的“排版”语言,和常见的指令式语言不同,其编译过程更像是 LI...

裁切空间变换

这篇文章将主要讨论计算机图形学中的裁切空间和射影空间。

格林函数与无限大电阻网格

本文将利用格林函数法求解一个臭名昭著的电学问题:无限大电阻网格问题。 格林函数法 首先介绍一下使用格林函数法(Green’s Function method)求解各种微分方程的原理。 考虑某空间$V$上的微分方程: \(Lu(x) = f(x), \; x \in V\) 其中$L$是微分算子。 若我们能够...