首页
Yohiro Wang
取消

阅读 GCN 架构下的 Shader 汇编代码

前言 在尝试逆向工程时,通常会在截帧的 GPU 信息中看到着色器的汇编代码。为了更好理解 GPU 的工作原理,如何加载数据、选择分支等,同时更好进行 Shader 调试,就个人而言有必要对 shader 汇编有一定的了解。 这篇文章的原文来自这里,原文基于 AMD GCN 架构下的着色器汇编代码来进行了简单拆解。了解后,可以将该方法应用到其他 GPU 架构的汇编上。 本文的各种指令在 ...

Delta Color Compression

问题 前段时间遇到一个平台相关问题,问题是这样: 在 UE 里使用了 SceneCapture 处理的一个低分辨率的 RT,经处理后要做 CopyToResolveTarget,而在这之后作为 Src 的 SceneCaptureRT 没有被拉伸到目标 RT 的大小。最后怀疑了会不会是 DX12 的 CopyTextureRegion 的问题,于是去查了相关资料,最后在一个 2020 年...

布料模拟相关内容的总结

背景 这段时间做了些布料模拟相关的工作,实际内容是对 KawaiiPhysics 做了一些二次开发,使它满足美术表现效果。为什么要对 KawaiiPhysics 做二次开发呢? 美术比较习惯使用代理网格进行模拟工作流程,但是 UE5 里的 Chaos Cloth 始终达不到他们想要的效果,而且 Chaos 的开销还很大。于是拿来了 KawaiiPhysics,但 KawaiiPhysic...

颜色管线与色彩空间

在处理材质贴图、Sampler 或 RenderTarget 时,经常会看到 sRGB/Linear 字样。颜色在渲染时是如何编码解码的?在不同的阶段是怎样的颜色类型?发生怎样的转换?这篇文章尝试回答这些问题。 概念 颜色空间(Color Space) 生成红色、绿色、蓝色和白色的具体颜色。由于可以定义多个颜色空间,这会导致 1,0,0(为例)在一个颜色空间中的...

移动端 SceneColor 格式问题

背景 在目前帮忙的项目里,为了实现一个效果,长期在屏幕空间存在两个 Renderer,一个普通的 SceneRenderer 还有一个 SceneCaptureRenderer。 针对 SceneCaptureRenderer 做了一些裁剪的优化,目前看来没有什么问题,可是它呈现的内容少,我想让 SceneCaptureRenderer 的 SceneColorFormat 跟原本的 S...

Tiled memory 与 memory less

背景 移动端设备通常使用 Tiled Rendering,与桌面 / Console 端 GPU 的立即渲染模式不同,Tiled Rendering 会将 Frame buffer 划分为多个矩形片,每个矩形片称为一个 Tile,以此来减少带宽的消耗。 Immediate Rendering Tiled Rendering ...

Uniform Table 的偏移问题

背景 最近 UE4.21 的项目中遇到了一个 Bug,具体问题是这样的: 玩家可以蹲伏在草丛中进入隐匿状态,进入隐匿状态后,草丛有一个不透明度降低的效果。问题出在这种效果在有些平台存在,有些平台不存在。 后来经过抓帧、调试这样的一番探索,发现问题出在 uniform buffer 里。 问题 真正的问题是,在某个 uniform buffer 之后,从 NSight 中观测到的数据...

UE4 中的 PGO

简介 PGO(Profile Guided Optimization)是一种基于 LLVM 的编译时优化,通过使用运行时收集的分析数据来指导编译器进行优化。截至 UE5.0 版本,Epic 对 PC、Android 以及各 Console 平台都进行了配置。网路上很少有 PGO 相关的文章,这篇文章旨在尝试 PGO 的使用流程。 流程 按照 Epic 的流程,PGO 可以直接启用,也可...

VS 中一键 Attach 到指定进程

背景 调试的过程中,有时会碰到要 Attach 到某个进程的情况。遇到这种情况,一般来说就是 Alt+D,P 呼出 AttachToProcess 界面,然后找到进程 Attach。今天发现一个方法,可以一键直接开启 Attach 到指定的进程,而且具有一定的扩展性。本着好东西大家一起分享的原则,现记录如下。 原理 这个方法是利用 VS 的宏和库,将指令脚本化,类似 Excel 里的宏...

WaveLane

In shader programming, you often run into a problem where you want to iterate an array in memory over all pixels in a compute shader group (tile). Tiled deferred lighting is the most common case. 8...