My Blogs

URP中实现Dual Kawase Blur

算法简介 Dual Blur框架本质上是利用分层处理的思想: 在降采样过程中降低图像分辨率,减少处理的像素数量,从而实现高效的模糊效果 在升采样过程中逐级叠加模糊结果,产生一种更自然、更扩散的模糊效果 Dual Blur支持多种模糊算法作为基础(例如Kawase模糊、高斯模糊等),框架本身不限制具体的模糊操作。 在Dual Kawase Blur算法中,降采样与升采样会使...

URP中实现屏幕空间描边

项目中需要一个特定的描边效果,用于标识玩家当前选中的家具,以及提醒玩家选中的家具是否能够摆放在当前位置。此外,描边效果还需要满足以下要求: 仅标识选中物体的外轮廓,无需内描边,确保选中效果的简洁 描边结果始终在游戏画面的最上层,确保选中效果不受物体之间相互遮挡的影响 效果演示 实现思路 思路本身比较简单:将需要描边的物体绘制到一个单独的Texture中,对该Tex...

Unity中实现Kawase Blur

思路 模糊处理在思路上很简单,只需要收集周围像素的颜色值并求平均值,从而得到模糊的像素。但是不同的实现方法会带来不同的视觉效果、模糊质量以及性能。 Kawase Blur算法在模糊时,会使用一个偏移步长,对目标像素周围的多个像素进行采样。采样点通常是围绕中心对称分布的,数量是可以是4个,8个或16个等。 Kawase Blur算法是一个多pass的算法,每个pass会在前一个pass的...

Cascade Shadow Mapping

传统的shadow mapping技术存在一些缺点: shadow map始终围绕光源创建,而非相机看向的位置 shadow map的正交投影矩阵与相机视锥体没有很好的契合 如果阴影渲染距离较大,则阴影会显得模糊 对此,级联阴影给出的解决方法是对于不同距离范围的物体,使用不同的shadow map,在片段着色器中,根据片段的深度值选择对应的shadow map进行采样。通...

Introduction to Turing Mesh Shaders

本篇博客翻译自这篇英伟达的文章 Motivation 在常规的渲染管线中,难以实现高效地绘制数亿个三角形与数十万个对象。而在使用mesh shader的情况下,原本的mesh会被分割为更小的meshlets,每个meshlet在理想情况下优化了其内部的顶点复用,从而减少不必要的重复加载与顶点数据的处理,以提高图形渲染的效率。 比方说,用于CAD的数据可能包含了数千万到数亿个三角形,即...

GPU-Driven Rendering

在本篇博客中,我们会首先梳理应用程序段的网格体结构,将其划分为以“meshlets”命名的组,每个组包含最多64个三角形,并且为每个组构建一个单独的包围球。然后我们会使用compute shader执行剔除,并构建用于绘制meshlet的command队列。最后,我们会使用mesh shader完成对于meshlet的绘制。 传统上,我们会使用CPU来实行几何剔除。场景中的每个网格体通常会...