Demo 测试的材质表现了四种组合类型: 普通布料 普通布料 + 细节纹理 普通布料 + 细节纹理 + 绒毛纹理 各向异性丝绸 + 细节纹理 Workflow 设计布料Shader的工作流时,考虑到项目角色模型的美术风格。多数模型会混搭有布料材质和金属材质。 布料材质需要高光工作流, 但是金属材质需要金属工作流 。在不拆分Mesh的情况下,为了能同时表现这两种材质,就需要结合两种工作流和着色模型,再依赖贴图通道Mask来在像素级别区分材质类型。 这种设计能满足材质类型混搭的需要,但是也造成了Shader性能指标ALU的明显上升。 Detail Map 布料类材质表面通常具有高频细节。除了PBR需要的基础纹理外,还需要连续的细节纹理。通过对UV进行Tilling来调整其在材质表面的密集程度。 在细节贴图和基础贴图的混合方式中,其中比较特殊的是切线空间的法线,细节贴图只提供RG两个通道的法线信息,混合方式可以理解是二维方向矢量的偏移。 half3 detailNormal = UnpackNormalScale( half4(detailNormalTS.x, detailNormalTS.y, 1.0, 1.0), 1.0); detailNormal = half3(detailNormal.rg * detailNormalStrength, lerp(1, detailNormal.b, saturate(detailNormalStrength)) ); normalTS = SafeNormalize( half3(normalTS.rg + detailNormal.rg, normalTS.b * detailNormal.b) ); 区别于常规的细节贴图,布料类的细节贴图AO会遮蔽基础贴图Albedo,材质表面的光照反射率会跟随细节变化,进而改变材质的整体亮暗表现。 half detailAlbedoOcclusion = lerp(1, occlusion, saturate(threadAlbedoStrength) ); albedo = albedo * detailAlbedoOcclusion; Silk & Satin & Nylon 高光工作流需要材质提供高光的颜色,丝绸类材质的高光颜色具有多样...
评论
发表评论