实时渲染:给你两张法线图,你会怎么混合它们?

2022-07-27 13:37来源: 互联网

   在游戏开发过程中我们常常会遇到需要混合法线的情况,如:长有青苔的山石;衣服布料的detailnormal;破损的墙面、锈渍的金属等。如何正确的混合它们并且保留原法线的细节是本文探讨的问题。

 

实时渲染:给你两张法线图,你会怎么混合它们?

  这时候可能会有人问,为什么要实时去混合它们呢?我提前把法线做好材质本来应该有的样子或是在SDPS里混合好不就行了。而且还省了贴图张数,减少了采样的次数,减少混合的计算。但恰恰相反,实时的去混合法线恰恰是为了节省性能和更好的效果,例如我们在表现布料的时候如果我们想要表现非常细节的毛线穿插感。

 

  如果我们只用一张法线去表现,那可能需要一张4K甚至8K的法线贴图才能把表现出高精度的细节。但是这些微小的细节往往都是四方连续的,所以目前主流游戏的做法是用一张基础法线+非常小尺寸的detailnormal用比较高的tilling值进行混合。

 

  更别提大世界不同地形地貌之间的混合来获得自然的过渡和法线效果了。好,我们言归正传,重点介绍一下法线混合的方法,上图上代码

 

  Linear Blending

 

  float3 n1 = tex2D(texBase, uv).xyz * 2 - 1;

 

  float3 n2 = tex2D(texDetail, uv).xyz * 2 - 1;

 

  float3 r  = normalize(n1 + n2);

 

  线性混合是非常简单粗暴的方法,可能也是我们大多数时候所使用的的方法,直接相加采样出的法线,进行线性的插值。这种方法输出的结果会往两种输入的normal进行平均,导致的结果就是,变平,细节变模糊。

 

  这是因为法线图存储的并不是颜色,而是当前像素的法线信息,用处理颜色的方式一样去处理法线必然会造成数据被平均。

 

  Overlay Blending

 

  float3 n1 = tex2D(texBase, uv).xyz;

 

  float3 n2 = tex2D(texDetail, uv).xyz;

 

  float3 r  = n1 < 0.5 ? 2 * n1 * n2 : 1 – 2 * (1 - n1) * (1 - n2);

 

  r = normalize(r * 2 - 1);

 

  overlay虽然整体有改进,但是输出的结果还是不太正确的,它和linear blending的方式一样都是对通道独立处理,这种方法基本相当于放到PS里混合。

 

  Partial Derivative Blending

 

  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));

 

  通过计算偏导数混合的方式可以看出已经到了很多,至少我们的椎体明显感觉立起来了,可以推敲的点是椎体表面的detailnormal看起来还是太柔和了,但在处理淡入和淡出的时候不失为一种好方法。

Tags:实时,渲染,两张,法线,你会,怎么,它们

来源:互联网 本文链接:http://www.1youxi.com.cn/news/yxpc/20220727367837.html
【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

上一篇:3D宫斗大戏拉开序幕
下一篇:3D宫斗大戏拉开序幕

热点关注

最最经典的塔防类手游 《玩具后卫》评测
最最经典的塔防类手游 《玩具后卫》评测
《玩具后卫 (Toy Defender) 》是由开发商 MANASTONE 所推出的一款传统塔防...
死亡搁浅导演剪辑版评测 精益求精的决策版
死亡搁浅导演剪辑版评测 精益求精的决策版
《死亡搁浅》拒绝了传统的战斗类型,以建立连接的方式推动玩家进行游戏,这...
无人深空评测 如今 我们有人了
无人深空评测 如今 我们有人了
相信很多玩家就算没有玩过《无人深空》,也听过《无人深空》的大名。《无人...

健康游戏忠告:抵制不良游戏,拒绝盗版游戏,注意自我保护,谨防上当受骗.适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活.
建议您使用 1920×1080 分辨率、Internet Explorer 11.0浏览器以获得本站的最佳浏览效果.
站长:le2015#foxmail.com(请把#换成@) 应急处理:QQ:721800293

一游网_一游戏网浙ICP备07501134号浙公网安备 33038102330602号Copyright © 2012 - 2021 http://www.1youxi.com.cn. All Rights Reserved