Material101--Lec06 Environment Blend Shader

Material 101 – Lec06 Environment Blend Shader

Environment Blend Shader

节点图

在这里插入图片描述

思路

  • 法线贴图需要转换空间才能使用
  • 因为想要在法线朝上的面上生成苔藓,所以需要关于朝向z的法线的信息
  • 法线贴图的b通道存储的是,朝向z的为1,不朝向z的为0,所以只需要b通道就行了
  • 得到关于朝向z的法线的信息,将他作为蒙版,让rock和moss进行混合
  • 想要控制对比度,就需要power,让大的越来越大,小的越来越小
  • 因为法线的范围是[0-1],所以需要加上一个数,数越大,白色范围就越大

补充信息

Normal
  • 法线向量的范围在-1到1之间
  • 法线贴图的范围是0-1
normal = normalize(normal * 2.0 - 1.0); //将贴图的范围从[0,1]转换为[-1,1]
  • 法线向量的x,y,z对应着颜色的r,g,b
  • OpenGL读取的纹理的y(或V)坐标和纹理通常被创建的方式相反,在UE4,贴图里面反转绿通道就可以正常运行了

OpenGL使用的是右手坐标系,所以cross(x,z)所得到的是-y,就需要将法线的通道进行反转,才能得到正确的结果

切线空间转世界空间
  • 在UE4中用Transform Vector节点就可以将normal贴图从切线空间转到世界空间,将+z的方向对齐到物体表面的法线方向
切线空间
  • 法线贴图中的法线向量定义在切线空间中,在切线空间中,法线永远指着正z方向
  • 一般物体的uv值都是连续有序的,渲染管线会利用这点将tangent的方向变为与顶点的uv.v值(或当前像素插值后的v值)一致,所以副法线binormal的方向实际上与u值也是一致的。
  • 如果不将切线空间转化为世界空间,那么效果就会发生错误,物体表面指向正y的效果会跟指向正z的效果一样
    在这里插入图片描述

在这里插入图片描述

  • 切线空间的一大好处是我们可以为任何类型的表面计算出一个这样的矩阵,由此我们可以把切线空间的z方向和表面的法线方向对齐
  • 这种矩阵叫做TBN矩阵这三个字母分别代表tangent、bitangent和normal向量,这是建构这个矩阵所需的向量。要建构这样一个把切线空间转变为不同空间的变异矩阵,我们需要三个相互垂直的向量,它们沿一个表面的法线贴图对齐于:上、右、前
  • 已知上向量是表面的法线向量。右和前向量是切线(Tagent)和副切线(Bitangent)向量。下面的图片展示了一个表面的三个向量:
    在这里插入图片描述
  • 将光线转换为切线空间
    在这里插入图片描述
    因为不在一个空间无法相计算,所以就把光线变换为切线空间内(变换光线向量比法线容易一些)

参考

链接:
Normal
Unity Shader:向量在世界空间与切线空间中变换的相关数学原理与应用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值