[Unity] ShaderGraph实现伪室内效果,性能大解放

本文详细介绍了如何利用UNITYShaderGRAPH技术构建虚拟立方体,通过切线空间、视角射线和贴图实现伪室内环境,包括天空盒环境反射、两侧空间插值混合等步骤,旨在提升游戏性能并模拟真实空间效果。
摘要由CSDN通过智能技术生成

使用版本为:2023.1.19f1 

更详细的实现逻辑及步骤参考Mert Kirimgeri的视频:

UNITY SHADER GRAPH with Fake Interiors Shader (youtube.com)

OS:这简直是个降低性能的天才技术!!!

目录

一、构建虚拟立方体

 二、切线空间与视角射线

 三、赋予贴图

四、天空盒环境反射

五、两侧空间与插值混合

七、最终效果 

八、文件下载

一、构建虚拟立方体

        首先新增一个Vector 2(Tiling)用来定义房间的数量,并与UV连接于Tiling And Offset。如下图所示,X为横向房间数,Y为纵向房间数。

此为Tiling最终效果演示

        PS:如果是单间房效果,那直接这样也行。

         在此基础上,添加一个虚拟立方体公式[会用就行],并将参数混合并传出。此处新增一个Float(Depth)来控制房间深度。

为了节省空间看着干净,没用的窗口视图都折叠了。
框选要成组的节点,右键选择Group Selection就能成组,框内右键Cut就是解组删除。
此为Depth最终效果演示

        PS:公式的具体原理如下所示,有兴趣的可以去看完整论文InteriorMapping.pdf (proun-game.com)

 二、切线空间与视角射线

        构造一个判断视图空间的View Direction,记得要选切线,这样后期在赋予CubeMap的时候才不会产生变形。 乘以一个-1 Float是为了将贴图正过来,这个看视览颜色就知道了。

        这部分依旧是原论文中的数学理论,取切线空间的1/2用于判断当前视角在观察房间中的哪一侧。

        计算当前视线分别与X Y Z轴的相交角度,以最小相交角来判断当前视线位置。

        将计算出的轴线与切线空间相乘,并将结果与之前计算的虚拟立方体相乘。 如图所示,连接点注意同色箭头。

        将计算出的结果与Vector 3(-1,-1, 1)相乘,将除深度以外的边缘进行翻转 。

 三、赋予贴图

        写了半天,终于到贴图了

        记得给法线一个零值Float,保存一下回到场景,可以看到伪室内的效果已经有了。

—— 现阶段连连看总览 ——

四、天空盒环境反射

        新建一个CubeMap(SkyReflectionCubeMap)用于反射窗户外侧的天空盒,同时与FresnelEffect节点相乘,用于塑造窗户边框的黑色阴影。另:Float(SkyReflection)节点用于控制天空盒反射强度。

        将天空盒反射的计算结果与室内贴图效果Blend混合,新增一个Float(Blend)控制混合强度,并选择Screen模式(不了解的可看[Unity] ShaderGraph实现一块破洞的裂纹玻璃-CSDN博客这篇的文末)。

         如图所示,SkyReflectionCubeMap用于调整反射强度,Blend用于调整混合强度。

五、两侧空间与插值混合

        如下图所示,新增点积控制,增强侧面空间反射感。

        给最终计算结果一个插值和平滑。 

        新建Lerp节点,连接贴图、天空反射、与侧面平滑。如图所示,连接点注意同色箭头。

        新建另一个Lerp节点,连接混合效果、前一个Lerp、侧面插值。如图所示,连接点注意同色箭头。

七、最终效果 

真的已经尽力让他变得容易理解了,最终效果即如下所示。

八、文件下载

UnityShaderGraph实现伪室内效果资源-CSDN文库

  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超龄魔法少女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值