背景 这段时间做了些布料模拟相关的工作,实际内容是对 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...
三角函数的 FP64 近似
对 GLSL 中缺失的 FP64 函数的近似,其他的信息可以参考OpenGL中地图投影的双精度近似 //sin approximation, error < 5e-9 double sina_9(double x) { //minimax coefs for sin for 0..pi/2 range const double a3 = -1.666665709650...
Filament 光照篇
本篇是 Filament 的笔记,以及部分自己的理解。 可以结合 Desktop 的渲染方式一起,看 Filament 的渲染为了更好地支持移动端,舍弃了哪些。 也可以搭配 【GAMES101-现代计算机图形学入门-闫令琪】 食用,风味更佳。 光照 现在常用的引擎,如 Unity 以及 Unreal 等,对于光照的处理并不统一。 以 Unreal 为例,点光源亮度的单位是流明(Lu...