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

文章目录

  • NVIDIA Texture Tools Exporter 下载、安装
  • 法线生成素材图
  • 扣干净无用像素
  • 使用 NVIDIA Normal Map Filter 生成贴图
  • 配置好 URP Renderer
  • 添加好 Decal Render Feature
  • 设置好 Decal Render Feature Techniqu: DBuffer
  • 配置好 unity shader graph
  • 添加 URP Decal Projector 组件
  • 配置好 URP Decal Projector 参数
  • 最终效果
  • 原理
  • Project


之前有一篇使用几何体的方式来绘制深坑,这种方式效果还不错,局限性还是有的,具体可以参考: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… 中即可打开

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第1张图片

在对应的 photoshop 安装目录下回有一个 plugin 有显示 *.8bf 文件
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第2张图片


法线生成素材图

打开这么一张图:
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第3张图片


扣干净无用像素

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

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第4张图片

将中间灰色部分扣除掉
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第5张图片


使用 NVIDIA Normal Map Filter 生成贴图

打开上面提到的:NVIDIA Normal Map Filter 工具,设置好参数,点击:OK
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第6张图片

下面就是生成后的法线贴图
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第7张图片


配置好 URP Renderer

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

如果 RenderPath : Forward的话,那么在 Render Feature 中的 Techinque 要选择:DBuffer
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第8张图片


添加好 Decal Render Feature

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第9张图片


设置好 Decal Render Feature Techniqu: DBuffer

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第10张图片


配置好 unity shader graph

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第11张图片


添加 URP Decal Projector 组件

在 hierarchy 视图添加:empty go,添加 URP Decal Projector
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第12张图片


配置好 URP Decal Projector 参数

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第13张图片


最终效果

DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第14张图片


原理

以 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 的关键地方,如下图所示
DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System_第15张图片


Project

TestURP_DecalSystem_Unity_2021.3.1f1.unitypackage

你可能感兴趣的:(unity,DCC,unity-shader,unity,photoshop,NVIDIA,Normal,normal,map,tool,ps,生成法线)