NormalBlend 的几种方法

法线作为向量,在需要混合两张法线贴图的时候不能简单相加,而是要将其转化为角度进行运算。目前有几种通用的方法,大部分是近似计算了角度并将它们相加。

实际上,切线空间的z轴是顶点法线方向,所以xy和z的比值可以近似表示这个向量相对于z轴的偏移量,也就是“角度”。而PD方法就是直接将两个法线向量的这个比值相加再normalize。

float3 n1 = tex2D(texBase,   uv).xyz*2 - 1;
float3 n2 = tex2D(texDetail, uv).xyz*2 - 1;
float2 pd = n1.xy/n1.z + n2.xy/n2.z; // Add the PDs
float3 r  = normalize(float3(pd, 1));
return r*0.5 + 0.5;

而UDP和Whiteout则是将xy分量提取出来,直接用normalize代替比值这个过程,近似效果也不错。

float3 r = normalize(float3(n1.xy + n2.xy, n1.z));
float3 r = normalize(float3(n1.xy + n2.xy, n1.z*n2.z));

最准确的方法是Reoriente,对每一个法线进行一次旋转。

float3 t = tex2D(texBase,   uv).xyz*float3( 2,  2, 2) + float3(-1, -1,  0);
float3 u = tex2D(texDetail, uv).xyz*float3(-2, -2, 2) + float3( 1,  1, -1);
float3 r = t*dot(t, u)/t.z - u;
return r*0.5 + 0.5;

一个额外的需求是对法线贴图进行旋转。对贴图的旋转可以使用二维旋转矩阵,而之后要再把法线旋转回来才能保持正确的法线方向。实际上,只需要把法线的xy轴进行旋转即可。

原文链接

NormalBlend相关推荐

  1. Unity 两张Texture叠加时用到的颜色混合

    颜色混合 // 颜色混合static Color NormalBlend(Color background, Color cover){float CoverAlpha = cover.a;Color ...

  2. shader着色器基础课08-20

    文章目录 前言 一.UV 1.uv 2.案例:扭曲着色器 二.三个向量 三.*各种空间 四.另外一些常见的节点 1.min max clamp saturate 2.length distance 3 ...

  3. 在Unity里将多个Sprite(精灵图)动态合成一个Sprite

    一.描述 1. 这是一个什么效果? 类似于PS里面的图层混合,这将在游戏运行过程中将多个Sprite合并为一个Sprite,可以应用于2D游戏物体或UI. 类似以下的效果: 需要注意的是在图片叠加时不 ...

  4. shaderGraph节点学习

     一.小Tips 1-某个节点的帮助文档:选中节点按F1: 2-复制:ctrl+D,或者Ctrl+c 3-F回到中心 4-官网文档链接:https://docs.unity3d.com/Package ...

  5. ShaderGraph——水面

    目录: 一.让水面的法线贴图动起来(速度可控,且只让其在水平方向移动) 二.水面涌动效果 三.加上颜色 四.让水面从顶部看是混黄色,从侧面看是第三步中正常颜色 五.效果动图 一.让水面的法线贴图动起来 ...

最新文章

  1. 深入浅出统计学(十一)总体和样本的估计
  2. zabbix action 执行远程命令
  3. Makefile中常用的函数
  4. js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键
  5. Java 洛谷 P1909 买铅笔讲解
  6. JPA技巧:避免N + 1选择问题
  7. layui数据表格循环数据给特殊行变颜色遇到的bug
  8. 权限申请_Android 开发工程师必须掌握的动态权限申请,三步轻松搞定!
  9. C++笔记-空指针加强、auto自动类型
  10. mysql中游标能不能更新数据库_MySQL与MariaDB中游标的使用
  11. jenkins运行web自动化测试找不到文件file not found
  12. 使用泛型, 写一个为任意类型的动态数组添加元素的方法
  13. [dfs] 洛谷 P2535 收集资源
  14. usb抓包工具 安卓_android 抓包工具的使用
  15. shel--常用快捷键
  16. linux 怎么卸载glib,glib的安装
  17. ibm3630m4服务器装系统,ibm x3630m4安装Windows2008R2系统
  18. 无传感器永磁同步电机电机自适应自抗扰ADRC控制策略
  19. 特长生模拟——09年东莞特长生考试
  20. CF1520D Same Differences

热门文章

  1. PHP获取星期六星期日
  2. DSM_Solver软件使用说明
  3. SQL掌握:添加、修改、删除、查询4个句式
  4. 玩转云网络,这里有一份VMware最强指南
  5. 【陈鹏老师精益项目实战】华东区电机企业精益生产项目第六期总结
  6. sklearn专题四:降维算法
  7. 谷歌影像、天地图、30mDEM、土地覆盖数据...一个软件都可免费下载
  8. Factor_mimicking_portfolio(模仿因子的投资组合):EAP.fama_macbeth.Factor_mimicking_portfolio
  9. mysql迅_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...
  10. 一招解决macOS12 CleanMyMac闪退