DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System


之前有一篇使用几何体的方式来绘制深坑,这种方式效果还不错,局限性还是有的,具体可以参考:Unity Shader - URP - 抄作业 - Deep Crack - 裂痕深坑 - SRP Batch优化

图形效果铁原则:制作方法没有最好的,只有最适合的,只要看起来不错,就够了


今天研究使用:URP 12.1 中的 Decal System

然后尝试了一下 在 Decal 中修改原来 GBuffer 的 Normal 的效果

但是没有法线图,我就随便那一张之前项目测试用的地裂图来做测试

但是只有 albedo,没有 normal


NVIDIA Texture Tools Exporter 下载、安装

使用 Photoshop 来构建法线,使用到 NVIDIA Texture Tools Exporter

这个工具生成并不复杂,原理和:高度转法线的功能差不多,可以查看我之前的一篇:Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

安装好之后,在:滤镜/NVIDIA Tools/NormalMapFilter… 中即可打开

扫描二维码关注公众号,回复: 14217064 查看本文章

在这里插入图片描述

在对应的 photoshop 安装目录下回有一个 plugin 有显示 *.8bf 文件
在这里插入图片描述


法线生成素材图

打开这么一张图:
在这里插入图片描述


扣干净无用像素

使用魔术棒工具,设置好:不连续,20 容差

在这里插入图片描述

将中间灰色部分扣除掉
在这里插入图片描述


使用 NVIDIA Normal Map Filter 生成贴图

打开上面提到的:NVIDIA Normal Map Filter 工具,设置好参数,点击:OK
在这里插入图片描述

下面就是生成后的法线贴图
在这里插入图片描述


配置好 URP Renderer

不使用 RenderPath: Deffered 也没问题,原来时:Forward

如果 RenderPath : Forward的话,那么在 Render Feature 中的 Techinque 要选择:DBuffer
在这里插入图片描述


添加好 Decal Render Feature

在这里插入图片描述


设置好 Decal Render Feature Techniqu: DBuffer

在这里插入图片描述


配置好 unity shader graph

在这里插入图片描述


添加 URP Decal Projector 组件

在 hierarchy 视图添加:empty go,添加 URP Decal Projector
在这里插入图片描述


配置好 URP Decal Projector 参数

在这里插入图片描述


最终效果

在这里插入图片描述

请添加图片描述


原理

以 Deferred Rendering Path 为例

URP Decal Projector 组件集成了:从过 Blit 也好,或是 CopyTo/CopyFrom 也好
先将 GBuffer 中的 Albedo, Normal 等,需要的数据复制到 DBuffer

然后 在 Decal Shader 中读取 DBuffer 的参数,修改通过该Decal Shader 逻辑处理修改后的数据重新输出到 GBuffer

然后 GBuffer 就按 Deferred Rendering Path 流程,继续往下走


下面是正常的 Deferred Rendering Path 的过程

Regulars Write Albedo, Normal, PositionWS, Metallic, Roughness, AO, Depth
Rendering with GBufer Data
Deferred Rendering Pipeline
GBuffer
Deferred Shader

然后我在 GBuffer 之后再添加一个 修改 GBuffer 的过程

修改过程如下

Reading GBuffer Data to DBuffer
Albedo
Normal
Compute And Write Back GBuffer
Modifing GBuffer Data - Decal Shader
GBuffer
DBuffer
Decal Shader

然后我们将: Modifing GBuffer Data - Decal Shader 子过程放入到原来的 Pipeline 中,如下:

Regulars Write Albedo, Normal, PositionWS, Metallic, Roughness, AO, Depth
Copy GBuffer to DBuffer
Rendering with GBufer Data
Deferred Rendering Pipeline
Modifing GBuffer Data - Decal Shader
GBuffer
Deferred Shader

这样就达到了修改 normal 的效果

URP Decal Shader Graph 中,也提供了修改 Base Col, MAOS ,就是修改 albedo, metallic, ao, smoothness 的关键地方,如下图所示
在这里插入图片描述


Project

TestURP_DecalSystem_Unity_2021.3.1f1.unitypackage

猜你喜欢

转载自blog.csdn.net/linjf520/article/details/124502694