NormalBlend
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相关推荐
- Unity 两张Texture叠加时用到的颜色混合
颜色混合 // 颜色混合static Color NormalBlend(Color background, Color cover){float CoverAlpha = cover.a;Color ...
- shader着色器基础课08-20
文章目录 前言 一.UV 1.uv 2.案例:扭曲着色器 二.三个向量 三.*各种空间 四.另外一些常见的节点 1.min max clamp saturate 2.length distance 3 ...
- 在Unity里将多个Sprite(精灵图)动态合成一个Sprite
一.描述 1. 这是一个什么效果? 类似于PS里面的图层混合,这将在游戏运行过程中将多个Sprite合并为一个Sprite,可以应用于2D游戏物体或UI. 类似以下的效果: 需要注意的是在图片叠加时不 ...
- shaderGraph节点学习
一.小Tips 1-某个节点的帮助文档:选中节点按F1: 2-复制:ctrl+D,或者Ctrl+c 3-F回到中心 4-官网文档链接:https://docs.unity3d.com/Package ...
- ShaderGraph——水面
目录: 一.让水面的法线贴图动起来(速度可控,且只让其在水平方向移动) 二.水面涌动效果 三.加上颜色 四.让水面从顶部看是混黄色,从侧面看是第三步中正常颜色 五.效果动图 一.让水面的法线贴图动起来 ...
最新文章
- 深入浅出统计学(十一)总体和样本的估计
- zabbix action 执行远程命令
- Makefile中常用的函数
- js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键
- Java 洛谷 P1909 买铅笔讲解
- JPA技巧:避免N + 1选择问题
- layui数据表格循环数据给特殊行变颜色遇到的bug
- 权限申请_Android 开发工程师必须掌握的动态权限申请,三步轻松搞定!
- C++笔记-空指针加强、auto自动类型
- mysql中游标能不能更新数据库_MySQL与MariaDB中游标的使用
- jenkins运行web自动化测试找不到文件file not found
- 使用泛型, 写一个为任意类型的动态数组添加元素的方法
- [dfs] 洛谷 P2535 收集资源
- usb抓包工具 安卓_android 抓包工具的使用
- shel--常用快捷键
- linux 怎么卸载glib,glib的安装
- ibm3630m4服务器装系统,ibm x3630m4安装Windows2008R2系统
- 无传感器永磁同步电机电机自适应自抗扰ADRC控制策略
- 特长生模拟——09年东莞特长生考试
- CF1520D Same Differences
热门文章
- PHP获取星期六星期日
- DSM_Solver软件使用说明
- SQL掌握:添加、修改、删除、查询4个句式
- 玩转云网络,这里有一份VMware最强指南
- 【陈鹏老师精益项目实战】华东区电机企业精益生产项目第六期总结
- sklearn专题四:降维算法
- 谷歌影像、天地图、30mDEM、土地覆盖数据...一个软件都可免费下载
- Factor_mimicking_portfolio(模仿因子的投资组合):EAP.fama_macbeth.Factor_mimicking_portfolio
- mysql迅_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...
- 一招解决macOS12 CleanMyMac闪退