From 1fe78a788285e7733ae93fc56efd6ac87baa5d51 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Mon, 18 Dec 2023 11:48:10 +0800 Subject: [PATCH] vault backup: 2023-12-18 11:48:10 --- .../卡通渲染相关资料/卡通渲染开发总览.md | 8 +- .../渲染功能/ShaderModel/GBuffer&Material&BasePass.md | 81 +++++++++---------- .../卡通渲染相关资料/渲染功能/描边/描边.md | 5 ++ .../演讲笔记/蓝色协议的方案.md | 8 +- .../蓝色协议的方案.html.md | 0 5 files changed, 52 insertions(+), 50 deletions(-) delete mode 100644 document/UrealEngineNPR渲染实现/蓝色协议的方案.html.md diff --git a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md index 21ed63e..285691b 100644 --- a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md +++ b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md @@ -29,6 +29,13 @@ rating: ⭐ 5. 实现一波Anti-Lut。 6. Toon曝光偏移、模仿李兄的暗处的ShadowColor适配。 +# 渲染功能兼容的游戏 +- [ ] 罪恶装备 +- [ ] 原神 +- [ ] 星穹铁道 +- [ ] 绝区零 +- [ ] 蓝色协议 + # 卡通渲染引擎功能总览(按照渲染顺序进行排序) - GBuffer For ToonShaderModel - [[GBuffer&Material&BasePass]] @@ -102,7 +109,6 @@ rating: ⭐ - [ ] 丝袜 https://zhuanlan.zhihu.com/p/636157482 [[厚涂风格研究与开发笔记]] - - ShaderModel - 分阶着色 - 二阶化: diff --git a/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md b/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md index 436b65b..fa42be6 100644 --- a/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md +++ b/03-UnrealEngine/卡通渲染相关资料/渲染功能/ShaderModel/GBuffer&Material&BasePass.md @@ -21,61 +21,52 @@ half PerObjectGBufferData; ToonGBuffer修改&数据存储: ```c# -OutGBufferA = PerObjectGBufferData => 可以存储额外的有关Tonn渲染功能参数。 -OutGBufferB:Metallic/Specular/Roughness => ToonHairMask OffsetShadowMask/SpcularMask/SpecularValue -OutGBufferD = CustomData.xyzw => ShaderColor.rgb/NoL -OutGBufferE = GBuffer.PrecomputedShadowFactors.xyzw => /RimLightMask/DiffuseOffset/RimLightWidth -OutGBufferF = velocity => OutlineWidth/OutlineID/OutlinePaint/OutlineZShift +OutGBufferA:PerObjectGBufferData => 可以存储额外的有关Tonn渲染功能参数。 +OutGBufferB:Metallic/Specular/Roughness => + ? / SpcularMask(控制高光形状与Mask) / ? / ? + //ToonHairMask OffsetShadowMask/SpcularMask/SpecularValue +OutGBufferD:CustomData.xyzw => + ShaderColor.rgb / NoLOffset //ShadowColor这里可以在Material里通过主光向量、ShadowStep、Shadow羽化计算多层阴影效果。 +OutGBufferE:GBuffer.PrecomputedShadowFactors.xyzw => + ToonDataID/ ToonObjectID(判断是否是一个物体) /OutlineMask 控制Outline绘制以及Outline强度 / ToonAO +OutGBufferF:velocity => + ? / ? / ? / ? ``` +蓝色协议的方案 +![[蓝色协议的方案#GBuffer]] +## Toon PerObjectGBufferData具体功能表 +从3开始,0、1、2已被占用。 +- ? -``` -| GBuffer | 表头 | -| -------- | ------------------------------------------------------------------------------------- | -| GBufferB | OffsetShadowMask SpcularMask SpecularValue EncodeShadingModelIdAndSelectiveOutputMask | -| GBufferD | ShaderColor.rgb NoL | -| GBufferE | | -| GBufferF | ID | -``` +## ToonData -## Ba8eColor与ShadowColor -- 原神里ShadowColor还会接收其他物体的阴影投射,没有自投影;蓝色协议可能也没有自投影。 - -BaseColor与ShadowColor的过渡需要Step、Feather、Offset等参数,可以直接制作一个HalfLambert的渐变贴图之后使用View传递。因为有多个贴图所以还需要ID贴图指定。但这样需要考虑一个问题: -9体上的同一个ID区域的BaseColor与ShadowColor是否都是一样的 -- 如果不一样就需要再传递一个ShadowColor.rgb到GBuffer里。 -- 不管如何手绘的补充暗部也是需要加到GBuffer中的 -这决定传递到View里面的渐变贴图是彩色还是暗色 - -### 预计算贴图方案(构想) -Toon渲染一般会使用HalfLambda。之后使用Feather、Step等参数对过渡边界进行调整 -使用 渐变贴图查表来实现 渐变、二阶化。以此代替羽化、step等参数。 -使用ID贴图指定,或者通过BaseColor值来查询? ## 高光 - PBR高光(使用Roughness控制是否可行?是否需要传入GBuffer一个Mask贴图) - 自定义高光:高光贴图、高光颜色、参数化高光形状、多层高光 -## 描边 -- 原神的描边好像是后处理 -- 蓝色协议 -![[08-Assets/Images/ImageBag/UrealEngineNPR/原神_描边.png]] -![[08-Assets/Images/ImageBag/UrealEngineNPR/原神截图_描边.png]] - -TODO:考虑使用顶点色来控制宽度,使用顶点色G - -## 顶点色 +# 顶点色 +## 蓝色协议 用于存储一些低精度数据,插值即可 -- R: -- G:描边宽度 -- B: +- 顶点色: + - R:阴影区域控制(强度) 0~1 + - G:描边宽度 + - B:ToonAO +- 第二套顶点色(UV Channel1): + - R:深度偏移 + - G:用来区分内轮廓不同部位的ID -蓝色协议的R:阴影区域标记 与 B:Ao,而罪恶装备使用贴图来传递信息。 - -## lightmap -### 罪恶装备 -![](https://pic2.zhimg.com/80/v2-56012886fafbaf36932f03b0ad65a165_720w.jpg),G为阴影控(AO),R为高光强度参数,金属和光滑材质的部分设置的更大一些。B通道:用于照明控制。最大值为高光,反之,值越小高光越淡。![](https://pic4.zhimg.com/80/v2-748ebbdd4da3efe74054c8215be8b023_720w.jpg) +蓝色协议的R:阴影区域标记 与 B:AO,而罪恶装备使用贴图来传递信息。 +## 罪恶装备 +对阴影判断阈值的偏移。(见前面着色部分,顶点AO+手绘修正) +R:阴影偏移 +G:轮廓线根据与相机的距离扩大多少的系数 +B:等高线 Z 轴偏移值 + +# 罪恶装备 +![](https://pic2.zhimg.com/80/v2-56012886fafbaf36932f03b0ad65a165_720w.jpg)8,G为阴影控(AO),R为高光强度参数,金属和光滑材质的部分设置的更大一些。B通道:用于照明控制。最大值为高光,反之,值越小高光越淡。![](https://pic4.zhimg.com/80/v2-748ebbdd4da3efe74054c8215be8b023_720w.jpg) ![](https://pic2.zhimg.com/80/v2-74e1a9fba264af2b18e66616d9f86831_720w.jpg) https://zhuanlan.zhihu.com/p/360229590一文中介绍了崩坏3与原神的计算方式 @@ -118,7 +109,7 @@ G : 轮廓线根据与相机的距离扩大多少的系数 B : 等高线 Z 轴偏移值 A : 轮廓厚度系数。0.5为标准,1为最大厚度,0为无等高线 -### 蓝色协议 +# 蓝色协议 [[蓝色协议的方案]] -### 米哈游 +# 米哈游 diff --git a/03-UnrealEngine/卡通渲染相关资料/渲染功能/描边/描边.md b/03-UnrealEngine/卡通渲染相关资料/渲染功能/描边/描边.md index 9930683..414b970 100644 --- a/03-UnrealEngine/卡通渲染相关资料/渲染功能/描边/描边.md +++ b/03-UnrealEngine/卡通渲染相关资料/渲染功能/描边/描边.md @@ -9,6 +9,11 @@ rating: ⭐ - 后处理描边 - MeshDraw描边 +# 其他游戏做法 +## 蓝色协议 +采用后处理、Backface以及预绘制描边。 +[[蓝色协议的方案#轮廓]] + # 杂项 ## 李兄实现Outline思路 ### Depth与Normal描边 diff --git a/03-UnrealEngine/卡通渲染相关资料/演讲笔记/蓝色协议的方案.md b/03-UnrealEngine/卡通渲染相关资料/演讲笔记/蓝色协议的方案.md index 7aa90cf..803824c 100644 --- a/03-UnrealEngine/卡通渲染相关资料/演讲笔记/蓝色协议的方案.md +++ b/03-UnrealEngine/卡通渲染相关资料/演讲笔记/蓝色协议的方案.md @@ -107,12 +107,12 @@ TAA会导致勾线变糊,所以用了UE的Responsive AA,用stencil标记了 ## GBuffer ```c# -GBufferB:Metallic/Specular/Roughness=>ToonHairMask OffsetShadowMask/SpcularMask/SpecularValue -OutGBufferD = CustomData.xyzw=》ShaderColor.rgb/NoL -OutGBufferE = GBuffer.PrecomputedShadowFactors.xyzw=》 /RimLightMask/DiffuseOffset/RimLightWidth +GBufferB:Metallic/Specular/Roughness => ToonHairMask OffsetShadowMask/SpcularMask/SpecularValue +OutGBufferD = CustomData.xyzw => ShaderColor.rgb/NoL +OutGBufferE = GBuffer.PrecomputedShadowFactors.xyzw => /RimLightMask/DiffuseOffset/RimLightWidth OutGBufferF = velocity => OutlineWidth/OutlineID/OutlinePaint/OutlineZShift ``` -关闭角色的预计算阴影。 +PS.需要关闭角色的预计算阴影。 ## 管线 ![](https://pic2.zhimg.com/80/v2-e0df1cfdf229e2c50f6a70ca0ee99101_720w.jpg) \ No newline at end of file diff --git a/document/UrealEngineNPR渲染实现/蓝色协议的方案.html.md b/document/UrealEngineNPR渲染实现/蓝色协议的方案.html.md deleted file mode 100644 index e69de29..0000000