mipmap level
GPU 决定 Mipmap 层级(Level of Detail, 简称 LOD)的核心逻辑是:计算纹理坐标在屏幕空间中的最大变化率,然后通过对数运算将其映射到对应的 Mipmap 层级。
OpenGL Mipmap

GPU 决定 Mipmap 层级(Level of Detail, 简称 LOD)的核心逻辑是:计算纹理坐标在屏幕空间中的最大变化率,然后通过对数运算将其映射到对应的 Mipmap 层级。

在看separable-sss的shader的时候,关注了一下其中点光源生成shadowmap的投影矩阵的处理,方法来自于Linearized Depth using Vertex Shaders,生成[0, 1]的线性深度。这也让我意识到,对于z在管线每一步的计算中,什么时候是线性的,什么时候变得不线性,我并没有掌握所有细节。
1 | /** |
以前记录的旧文档,先简单整理一下,免得遗失
1 | View.ViewMatrices.HackAddTemporalAAProjectionJitter(FVector2D(SampleX * 2.0f / View.ViewRect.Width(), SampleY * -2.0f / View.ViewRect.Height())); |
本文基于AI生成步骤和具体实践整理。
打开
https://developer.android.com/studio?hl=zh-cn#command-line-tools-only,下载
Windows 版的 command line tools 压缩包(名字类似
commandlinetools-win-xxxxxxx_latest.zip)。
在某个目录创建 SDK 根文件夹,比如
C:\android-sdk。
解压压缩包,你会得到一个 cmdline-tools
文件夹,里面有 bin、lib
等。注意:需要再套一层
latest,最终目录结构必须是这样:
之前在Bufferless rendering in OpenGL提到使用一个三角形渲染全屏的方法,没想到此处犹有后续。使用包含全屏范围的三角形和scissor test,实现一个三角形渲染全屏的效率,比两个三角形组合成一个全屏quad的方法更高效。
记录一下渲染子进程中的截帧工具的使用,记录原因是,一开始并不顺利。目标程序是一个launcher进程,然后需要截帧的是子进程,渲染时OpenGL的,话说几个月前,通过RenderDoc的Capture Child Processes配置是成功截取过的,但是这次失效了,连同Nsight Graphics也遇到了问题。经过一些摸索,最终在两个工具中都能顺利截帧,在此记录一下。
RenderDoc设置Capture Child Processes,但是启动子进程一直失败,先是尝试使用File>Attach
to runing Instance未奏效,然后尝试进程注入。