Unity - 各向异性 - 丝绸材质
文章目录
- 目的
- 环境
- 主观美术效果的[假]丝绸
- 基于物理的方式
- A站参考
- Project
- PBR filament web capture
- References
目的
拾遗,备份
环境
Unity : 2020.3.37f1
Pipeline : Builtin Rendering Pipeline
主观美术效果的[假]丝绸
非常简单 :
half specualr = pow(1 - NdotV, _Edge_Pow) * _Edge_Scale + pow(NdotV, _Enter_Pow) * _Center_Scale;
specular *= _Tint;
这个效果不是物理的
而且在规律平面上效果比较弱
下面参考: Cilory-UE4-丝绸材质 里面可以看到在丝绸布料动起来的时候,稍微可观一些
基于物理的方式
参考 谷歌的 pbr filament 的文档(代码+文档)
实验结果1 - blinn phong 修改 specular 为 anisotropy model
这个是普通的衣服光泽,如下图:
使用了 anisotropy model 光照,如下图:
这个是丝绸衣服光泽,这个简单的试验DEMO如下 (非PBR)
- 优化 各向异性材质 的 T (切线) 的法线应用变化
- 完善其他 fresnel, reflection, ambient 的补充
上面的效果我都是在 blinn phong 模型上,给 高光整上 PBR Anisotropy 的效果
那么下面是将 unity builtin rendering pipeline (内置管线) 的 standard 金属流中,添加 PBR Anisotropy 的效果
实验结果2 - unity BRP standard (metallic flow) shader 修改 sepcular 为 anisotropy model
参考的是: PBR Filament 里面的 anisotropy 效果:
第一步是 directly light 的 specular 高光部分
https://google.github.io/filament/Filament.html#materialsystem/anisotropicmodel
第二步是 IBL 的 reflect 的 normal
第二步是 cubemap reflect dir 的扭曲调整 (也就是 IBL 的 Anisotropy,就是修改 reflect dir,其实我这里直接修改 normal,这样 reflect(-v,n)就修改了 reflect 结果)
https://google.github.io/filament/Filament.html#lighting/imagebasedlights/anisotropy
最终查看效果
代入到 standard 中的 PBR Aniso 效果,如下图:
- 左边 blinn phong 修改 specular 为 anisotropy specular
- 中间 standard 金属流修改为 anisotropy specular
- 右边 是普通 standard 金属流
实验结果3 - anisotropy model 微调 glossy、normal tilling
PBR Filament 上的模型,测试 Standard 修改为 Anisotropy Specular 的效果
显示 standard 金属流
开启 anisotropy
然后我们再增加一个张细节法线
基理太粗,调整一下 scale offset
最后的效果
加上 Bloom, Color Grading (tonemapping) 后效
在网上,找了一张 贴图,我就暂时当做 MGA (metallic, glossy, ao) 和 法线来使用,效果也挺不错的
然后 photosohp 整了几张不同 tilling 的
法线效果更加的细腻
实验结果4 - 增加 detail albedo, mix, normal 的功能
A站参考
然后在 A站 搜索 “布料” 法线也有国人在那上传了自己的练习作品也是很OK的
https://www.artstation.com/search?sort_by=relevance&query=%E5%B8%83%E6%96%99
有一些还备注了使用的 DCC软件 (基本都是 DS/SD : Substance Designer和 mamoset 八猴)
https://www.artstation.com/artwork/lxdkzo
比如这个材质
使用的贴图如下图
使用的贴图通道有:
- AO
- BaseColor
- Height Map
- Roughness
- Normal
基本都是我们 PBR 材质的通道图
A站里面的参考:
-
https://www.artstation.com/artwork/lxdkzo
-
https://www.artstation.com/artwork/B1KG8r
-
https://www.artstation.com/artwork/B1KG8r
-
https://www.artstation.com/artwork/kDrVZy
-
https://www.artstation.com/artwork/L3XWNP
-
https://www.artstation.com/artwork/48KDYl
-
https://www.artstation.com/artwork/Zeq9P8,这个非常好看,使用的是 Substance 3D Designer 做贴图, Marvelous Designer布料结算烘焙, Marmoset Toolbag 渲染
-
https://www.artstation.com/artwork/KOJk19
-
https://www.artstation.com/artwork/d0vLYW
-
https://www.artstation.com/artwork/4Xzea8
-
https://www.artstation.com/artwork/VyY92R
-
https://www.artstation.com/artwork/2qOzgA
-
https://www.artstation.com/artwork/2qOzgA
-
https://www.artstation.com/artwork/rAr3xm,这个也是非常好看,也是 SD + 八猴
-
https://www.artstation.com/artwork/OmblEb
Project
- Testing_Fake_Silk_Shader_2020.3.37f1_URP.rar
- Testing_PBR_Anisotropic_2020.3.37f1_BRP_v1.rar
- Testing_PBR_Anisotropic_2020.3.37f1_BRP_v2.rar - 场景: _10_My_Silk_Anisotropic_Lighting,增加了 standard,fwdbase, fwdadd 的处理
- Testing_PBR_Anisotropy_2023.3.37f1_BRP_detail_albedo_mix_normal_V3.rar - 增加了 detail albedo mix normal
PBR filament web capture
PBR_filament_web_capture.jpeg
提取码:ceio
References
- 里面的各向异性材质: 丝绸材质可以参考:
- 光照模型 PBR
- Anisotropic specular BRDF - 公式、代码都有,非常有用的国外 PBR filament 教程
- 丝绸、头发 各向异性:
- Unity Shader 布料渲染(二)具体实现
- 丝绸效果的实现
- FlowMap的使用
- URP绸缎材质近似
- 可以参考: UE4 或是 unity HDRP 里面的 丝绸材质
- PBR光照 Part1:BRDF(Cook-Torrance 模型)
- Shader学习 (18)PBR光照模型效果分析手动复现 - 写的非常易懂
- Unity PBR Shader之衣服渲染之丝绸 - 这个 cnblog 博主也是参考了,PBR Filament 和 UE 里面的 shader,效果很不错