Unity - 从RG中解压法线贴图

这篇具有很好参考价值的文章主要介绍了Unity - 从RG中解压法线贴图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


环境

Unity : 2020.3.37f1
Pipeline : BRP


目的

备忘便于索引


问题

之前使用 GPA 还原一些效果的时候,发现 法线贴图的 Y 通道数值不对,感觉被 翻转了

比方说,下面是 GPA 中的法线
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

这个法线是 DX 方式的,不是 OpenGL 的,如何辨别 法线是属于 DX 还是 OpenGL 的,可以参考:快速判断OpenGL和DirectX法线的技巧


具体我们打开 PS 来查看差异
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

可总结为:

  • GL 的 凸面
    • 正X 是向右的
    • 正Y 是向上的 (绿色向上)
  • DX 的 凸面
    • 正X 是向右的
    • 正Y 是向下的 (绿色向下)

解决

我们在 BRP 管线中,可以看到类似的 解释方式
已知 normal.rg 那么 normal.z = sqrt(1 - dot(normal.rg, normal.rg))
然后如果要 scale 的话还可以这样: normal.xy *= scale

Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

因此我们自己的想就可以按自己的方式来处理
不用判断 DX 或是 GL,反正我们自己限制好使用 GL 的规格,即可
这样法线贴图只使用到两个通道,然后 BA 通道还可以放其他的数据
如果是要是需要你也可以整一个参数控制 normal flipping

...
half3 raw_normal = tex2D(_BumpMap, uv);
raw_normal.y = lerp(raw_normal.y, raw_normal.y * -1, _NormalY_Flipping);
raw_normal.z = sqrt(1 - dot(raw_normal.xy, raw_normal.xy));
half3 normalWS = T2W(raw_normal, xxx);
...

最终我们还原了 GPA 的大概效果:
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩


nVidia texture tools - normal map 也有类似说明

nvidia-texture-tools-exporter
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

视频直达传送门: NVIDIA_Texture_Tools_Normalmap_Overview_embed_2
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

留意:
Unity - 从RG中解压法线贴图,unity,TA - 加油站,unity-shader,unity,从RG通道解压法线,法线压缩

这里头有将怎么计算 b 通道

b = 0.5 * sqrt(1 - (2r - 1)^2 - (2g - 1)^2 + 0.5

其中:-1~+1 的 b 为: b = sqrt(1 - (2r - 1)^2 - (2g - 1)^2

然后我们通过 val * 0.5 + 0.5 转为 0~1

所以上述公式可以看成是:b = 0.5 * b + 0.5

这个式子是来自于 单位向量公式:(x,y,z)
x^2 + y^2 + z^2 = 1文章来源地址https://www.toymoban.com/news/detail-521338.html


References

  • 快速判断OpenGL和DirectX法线的技巧

到了这里,关于Unity - 从RG中解压法线贴图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】134. 加油站 - 贪心算法

    134. 加油站 贪心思想: 因为本题用到了贪心算法所以先来了解一下「贪心算法」的问题需要满足的条件: 最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较大的问题的解只由其中一个规模较小的子问题的解决定; 无后效性:后面阶段的求解不会修改前

    2024年02月12日
    浏览(40)
  • LeetCode(力扣)134. 加油站Python

    https://leetcode.cn/problems/gas-station/description/

    2024年02月09日
    浏览(35)
  • Java基础实现加油站圈存机系统

    ​对于加油卡而言,圈存是将 用户账户 中已存入的资金划转到所持的加油卡上后方可使用。通俗一点的说法就是您在网点把钱存入主卡中,再分配到下面的副卡,由于副卡都在使用车辆的驾驶员手中,需要在加油的时候在加油站让加油站员工划一下即可,就是所谓的圈存。

    2024年02月13日
    浏览(41)
  • 智慧加油站卸油作业行为分析算法 opencv

    智慧加油站卸油作业行为分析系统通过opencv+python网络模型技术,智慧加油站卸油作业行为分析算法实现对卸油作业过程的实时监测。当现场出现卸油作业时人员离岗,打电话人员抽烟等违规行为,灭火器未正确摆放,明火和烟雾等异常状态,静电释放时间不足等情况时,立即

    2024年02月10日
    浏览(44)
  • 基于微信小程序的加油站服务系统设计与实现

    💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 👇🏻 精彩专栏 推荐订阅👇🏻 计算机毕业设计精品项目案例-200套 🌟 文末获取源码+数据库+文档 🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编

    2024年01月17日
    浏览(43)
  • 大型加油站3d全景虚拟现实展示平台实现全方位立体呈现

    近年来,随着国民经济的快速发展,交通基础设施的不断改善,机动车保有量的持续飙升,以至于加油站的建设数量和密度也在不断扩张。加油站作为人流量大且常见的城市场景,对加油站进行安全防范措施具有非常重要的安全意义。 相比随处可见的加油站,加油厂除了有加

    2024年02月06日
    浏览(42)
  • DAY38:贪心算法(五)K次取反后最大数组和+加油站

    本题重点是逻辑问题,同时复习static和sort的自定义操作与时间复杂度 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的

    2024年02月13日
    浏览(45)
  • 算法 贪心3 || 1005. K 次取反后最大化的数组和 134. 加油站 135. 分发糖果

    思路: 给数组按照绝对值大小排序 ,优先将负数转成正数。如果此时 k % 2 == 1 。最后再将 绝对值最小的值变成负数 (该值可能原本是负数) 而不是直接从小到大排序。 例如-8,-5,-5,-3,-2,9这种序列。如果直接从小到大排序,那么最后一个变符号的就会是9,但其实让

    2023年04月12日
    浏览(38)
  • 【贪心算法Part03】| 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

    目录 🎈LeetCode1005.K次取反后最大化的数组和  🎈LeetCode134.加油站 🎈LeetCode135.分发糖果 链接:1005.K次取反后最大化的数组和 给你一个整数数组  nums  和一个整数  k  ,按以下方法修改该数组: 选择某个下标  i  并将  nums[i]  替换为  -nums[i]  。 重复这个过程恰好  k  次

    2024年02月16日
    浏览(44)
  • C++力扣题目1005--K次取反后最大化的数组和 134--加油站 135--分发糖果

    力扣题目链接(opens new window) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。) 以这种方式修改数组后,返回数组可能的最大和。 示例 1: 输入:A = [4,2,3],

    2024年01月21日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包