移动端模板测试与Eary-z分析

在移动端(特别是基于 TBDR 架构的 GPU,如 Adreno, Mali, Apple GPU)使用模版缓存(Stencil Buffer)时,导致 Early-Z 失效并引起 Fragment Shader(片元着色器)占用率上升,主要原因是 GPU 无法在着色器执行前确定深度和模版测试的最终结果,从而被迫回退到 Late-Z(后期深度测试)模式。

阅读全文

在 Bash Shell 中,单引号和双引号的主要区别

在 Bash Shell 中,单引号 (' ') 和双引号 (" ") 的主要区别在于 对特殊字符和变量的处理方式

简单总结:

  • 单引号 (强引用)所见即所得。单引号内的所有内容都会被当作普通字符,不进行变量替换或命令执行。
  • 双引号 (弱引用)允许解析。双引号内的内容大部分被当作普通字符,但会保留变量 ($)、命令替换 (`$()) 和转义符 (\) 的功能。

阅读全文

存储浮点数

我们要彻底理解这个问题,需要深入到计算机底层是如何存储浮点数(Floating Point)的。这里涉及到一个核心概念:科学计数法(Scientific Notation)的二进制版本

我们把这个问题拆解成三个部分:结构解析为什么是 1024 个刻度为什么范围不同精度不同

阅读全文

关于preA精度损失分析

这是一份关于 RGBA8888 格式下,Pre-multiplied Alpha (预乘 Alpha, 简称 PreA)Straight Alpha (非预乘 Alpha/直通 Alpha, 简称 Non-PreA) 在精度损失和不同颜色数据范围内表现的深度分析。

阅读全文

SRGB 和gamma校正

为了让你直观地感受到 Gamma 校正(Gamma Encoding) 的威力,我们来做一次具体的数值对比。

我们假设使用的标准 Gamma 值为 2.2
公式为:
$$ \text{Gamma值} = \text{线性值}^{(1 / 2.2)} \approx \text{线性值}^{0.4545} $$

阅读全文