常用材质算法(美术向)
光照和AO的关系:
- 在游戏等实时应用中一般选用环境光遮蔽 (AO)技术模拟全局光照效果,在画面质量和渲染速度之间取得平衡
- 环境遮罩用来近似室外的柔软照明(天光),它的原理是通过将褶皱、孔洞和非常靠近的墙面变暗的方法近似模拟出间接光照。
- Ambient Occlusion : 只能在静态光照模型上使用和显示,为了在动态效果上也能显示,用lerp(0,1,0.5)混合AO给到高光。
资料来自:
- papalqi:环境遮罩之SSAO原理
- UE4官方课程:材质大师
次表面如何得到模型厚薄信息?
- SubSurface : 需要配合不透明度,不透明度即允许穿过次表面的光照量。给一张光照穿透度的Mask到半透明即可判断模型哪些部分的透光度更高(例如耳朵更加透光)。
- SubSurfaceProfile : 次表面轮廓,它模糊了屏幕空间的图像,通过给模型拍张照片,按照散射半径将其偏移。
资料来自:
- UE4官方课程:材质大师
切线空间作为什么用途?
一般常用切线空间存储法线数据,相较于模型空间有更多优势
- 切线空间存储的是相对法线信息,因此换个网格(或者网格变换deforming)应用该纹理,也能得到合理的结果。
- 可以进行uv动画,通过移动该纹理的uv坐标实现凹凸移动的效果
- 可以重用法线纹理,比如,一个砖块,我们仅使用一张法线纹理就可以用到所有的6个面。
- 可以压缩。因为切线空间的法线z方向总是正方向,因此可以仅存储xy方向,从而推到z方向(normal是单位向量,用勾股定理由xy得出z,取z为正的一个即可)。而模型空间的法线纹理方向各异,无法压缩。
资料来自:
河的深浅怎么判断可见度?
- 视线深度:SceneDepth - PixelDepth 可以求出沿着cameraVector的视线深度。
- 水面的垂直深度:用简单的相似三角形可以得出深度的数值,这个采样在水面上是0,深度越深值越大。把水面的垂直深度作为透明度输出,值越大可见度越低。
- 资料来自: 易水:UE4 Water 水
PBR材质的理解
PBR指一整套基于物理参数的美术流程和渲染流程。例如:
- 通过创建高低模然后通过烘焙输出一张Normal法线贴图,带来模型结构上的凸出和凹陷的阴影
- 通过增加一张Specular高光贴图,控制高光颜色和高光强度,带来动态的,可变颜色的高光
- 使用一个cubemap模拟反射效果
- Diffuse漫反射贴图、Normal法线贴图、Metallic金属度贴图、Smoothness光滑度贴图(即Glossiness光泽度贴图,Roughness粗糙度贴图的反向图)、AO(Ambient Occlusion)环境光遮蔽贴图等提供了大量物理信息
- 根据这些信息计算出实时的阴影,实时的高光,实时的反射,实时的菲涅尔效应,可以让模型在不同的光照环境下都能得到比较合理的光照表现。
- 参考资料: 云影:草履虫都能看懂的PBR讲解(迫真)
大世界地面的常见处理
01 接缝: 世界UV投射
- 当你复制地面并把两个模型并列,就可以百分百无缝
- 绝对世界位置只取XY,使其自上而下地投射;缩小数值因为绝对世界位置太大了
02 纹理重复:根据观看距离淡出切换不同大小的纹理
- PixelDepth,远看时不期望看到草贴图的重复平铺 ,远看时切换至具有不同纹理缩放的另一个版本的草
03 草地颜色变化:世界投射覆层的颜色变体
- 通过函数 WorldCoords-XY 把一遮罩图作为Alpha lerp上不同颜色作为世界投射覆层,给一大片草叠加上颜色变化。
04 石头和草地
接缝:检测与几何相交的位置 ,扩展石头边缘同时将草混合到其中
- 通过距离场来检测到最近表面的距离(必须在项目中启用距离场信息)
- 设置为遵循顶点法线,乘30,30,0就是他的偏移量(即模型按顶点法线指向的方向)
- lerp作为Alpha来判断偏移(黑色)或者0不偏移,连接到WPO
- 距离场出来的值,和世界UV投射的草联系
石头顶层表面混合草
- 检测角度,mask b以检测上方的方向,power提高对比度缩小范围,Multiply控制遮罩的过渡速度。
石头检测世界位置和水线(靠近熔岩,地铁在地表受雨水影响而地底则干燥等)
- 只要模型位于世界位置Z轴的负轴向,将会变换效果
资料来自:
-
UE4官方课程:材质大师
5th channel
一张mask有四个通道, 利用R+G+B+A=1这个特性, 可以获得第五个通道 5th channel=1-(R+G+B+A)
这样可以避免增加贴图或增加通道的消耗.
各种遮罩
Texture Generation(not compress, cheap and a lot better quality)
径向遮罩:
线性遮罩0-1,更加方便配合power:
去四角遮罩:
圆形遮罩:
拖尾遮罩:
特殊遮罩:
常用表达式组合(来源于官方材质视频笔记)
假的凹凸_BumpOffset
法线的正确用法_叠加和加强
顶点色材质
配合引擎制造细节,或者直接把顶点色在模型制作时刷在附着的模型上:
BlackBody
基础色到自发光颜色的闪烁
双面自定义颜色
旋转图片
镜像图片
马赛克制作
降低贴图对比度
在材质上用lerp连一个通道,然后给lerp的A0.5,B保持1,这样可以提升贴图里面所有的黑值,降低对比。
冰材质特性及基本实现
主体+冰内部透光的的subsurface材质+bumpoffset表面冰霜效果以及制造假深度
复杂贴花材质
- 效果出错的话需要检查:项目设置Rendering里勾选DBuffer Decals,选择Early Z-pass里的Decided automaticlly,勾选Moveables in early Z-pass.
- 在材质细节里面的贴花混合模式里面,选择DBuffer Translucent Color,Normal,Roughness,只选择你需要细节的DBuffer模式以节省开销。
没有blend的SubUV读取