渲染管线之旅|08 像素处理之"fork"

在这一部分中,我们来谈谈像素处理的前半部分:dispatch和实际的像素着色。事实上,这部分是大多数图形开发者在谈到PS stage时所关心的内容。有关alpha blend和Late-Z的内容放到下一篇文章中去探讨。后面我们会看到,硬件上PS stage的设计相是对比较复杂的。这也是……

阅读全文

渲染管线之旅|07 深度处理、模板处理

在这一篇中,我们来讨论Z-pipline的前端部分(简称它为early-Z), 以及它是在光栅化中怎么起作用的。和上一篇一样,本篇也不会按实际的管道顺序进行讨论;我将首先描述基础算法,然后再补充管线中的各个阶段(以相反的顺序可以更简单的解释这些内容)。 1.插值 Z通过三角形进行插值,……

阅读全文

渲染管线之旅|06 三角形的生成和建立

欢迎回来。这次我们去看看三角形的光栅化。但在光栅化三角形之前,我们需要执行三角形设置,并且在设置三角形之前,我还要解释一下我们做的准备是为了什么,最后我们来聊聊三角形硬件光栅化算法。 1.如何画一个三角形 首先,给很熟悉这部分并自己写过软纹理映射的人一点小提示:三角形光栅器一次要处理……

阅读全文

渲染管线之旅|05 图元处理、Clip/Cull, 投影和视图变换

上一篇中我们讨论了关于“纹理和采样”,这一篇我们回到3D管线的前端。在执行完顶点着色之后,就可以实际的渲染东西了,对吗?暂时还不行, 因为在我们实际开始光栅化图元之前,仍然还有很多事要做。所以在本篇里我们不会看到任何光栅化内容——还得等到下次再讲。 1. 图元装载 当我们离开顶点处理流水线……

阅读全文

渲染管线之旅|04 纹理和采样

上一篇讨论了顶点着色器,涵盖了GPU通用着色器处理单元的一些内容。它们都仅仅是向量处理单元, 但是当我们在访问Resource的时候,通常都不是这种向量的形式,所以GPU中还需要另一个专门用来在Pipeline中处理整数的单元:Texture Sampler. 这个单元内部相对比较复杂,复杂(也很有……

阅读全文

渲染管线之旅|03 图形管线概览及GPU中顶点处理

通过前面几篇的内容,我们知道,应用程序中的Draw API调用会经过D3D Runtime, 用户态驱动等等各个层级,最终将命令传到GPU的命令解释器,GPU就会根据命令的内容来进行图形的计算和处理。那么这一篇我们就来看看顶点的处理流程。 1. 开胃菜 在介绍GPU的顶点处理之前,我们先看看3D渲染管线。3……

阅读全文

渲染管线之旅|02 GPU存储架构和命令处理器

上一篇中主要介绍了3D渲染命令到达GPU之前经历过的各个阶段。用下图可以概括上一篇中所讲的内容,当然其中很多细节没有出现在图中。之前我们说KMD将命令送给了硬件,这个简单的“送”的过程实际上并不是那么简单的。我们知道显卡都是通过信号线连在主板上的,所以我们送命令都是需要走这些信号……

阅读全文

渲染管线之旅|01 软件调用栈

简介 通常我们可以很容易的找到我们的个人电脑中显卡驱动软件调用栈的相关内容(attache到进程上,查看进程调用的dll。),但是这些调用关系是如何工作?它们又是为什么要这样做呢?这些问题就不那么容易找到答案了。我会尽量填补空白,而不会对特定的硬件进行具体的描述。我将主要讨论在Wi……

阅读全文

Git快速入门手册

本文作为版本控制软件git的入门指导和常用命令整理。 首先用一张图来总结基本的使用的流程,后文中都有详细的解释。 1.git的安装 自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目 。Git可以在windows、Mac、L……

阅读全文

B站缓存视频和压缩

手机上Bilibili缓存的视频存在于Android/data/tv.danmaku.bili/download下面。然后可以拷贝出来到PC上,因为视频和音频是分开保存的,所以要进行合并的操作。根据自己缓存时候选择的分辨率修改下合并的代码中的路径(16,64这些数字代表的就是路径……

阅读全文