欢迎光临散文网 会员登陆 & 注册

原神角色渲染04

2023-07-04 13:06 作者:绝剑结城  | 我要投稿

描边

描边这部分,感觉要吃透得花大功夫,我打算再后面学习中慢慢参悟,现在在原神渲染这里拖太久了。所以这部分我直接copy大佬的代码。

不过基本原理还是要了解的。目前主要的Back facing描边法,就是在绘制基础色的Pass外多加一个Pass,绘制两次,一次绘制基础效果,一次专门绘制描边。绘制描边这次,把顶点根据法线外扩,并剔除正面,以此实现描边效果。

(但是他是怎么区分正面和描边的呢?)使用cull front,这样描边和角色重叠的部分会因为不能通过深度检测而cull掉,保证描边不会遮挡角色。

但是在URP管线里面,通常使用Render feature 来实现多pass。具体步骤如下:1.写一个描边的shader,这里我直接copy的这位大佬的。https://zhuanlan.zhihu.com/p/361285222

用这个shader创建一个材质,然后再Renderer文件中新建一个Render Objects,把Overriders里面的材质选中之前创建那个材质,然后Layermask可以选择这个材质应用的层。差不多就相当于在之前渲染的画面上,对指定层内的物体,再用这个shader渲染一次。

最终描边效果如下,其实这个方法还很粗糙,一个是描边颜色我现在只能指定一种颜色,如果想用alpha图来控制的话,头发和身体是不一样的图,但是它们位于同一个组件同一层里面,也就是说,它们用Render feature的话只能共用同一个材质(至少我目前只能)。但其实原神本身的描边颜色是分5层的。第二是很明显的描边断裂,这个通常使用平滑法线的办法解决。

参考这个大佬:https://zhuanlan.zhihu.com/p/109101851

我用了它的工具,下面是使用方法:把这段代码保存为一个文件,比如PlugTangentTools.cs,然后放到你的Unity项目的Assets/Editor文件夹下。这样就可以在Unity的菜单栏中看到Tools/模型平均法线写入切线数据的选项。你可以选择一个或多个包含MeshFilter或SkinnedMeshRenderer组件的游戏对象,然后点击这个选项,就可以把它们的模型的平均法线写入切线数据了。注意,这个操作会修改你的模型的数据,所以最好先备份一下你的模型文件。

我使用这个工具后,再把原来根据法线扩张改为根据切线扩张。很简单,改这一行就可以。但是效果还是不太理想,我猜测是因为这个工具计算的平均法线是直接算术平均,没有根据面大小等因素加权平均。

而且这个方法把平均法线存进切线,我在采样法线贴图部分也调用了切线,不懂这样会对采样法线贴图有什么影响,不过我刚刚用rgb显示法线看了一下,至少没看出什么大问题。

边缘光

大家主要用的是等宽屏幕空间边缘光。下图是它和菲涅尔的对比。(来源:https://zhuanlan.zhihu.com/p/551629982)原理和介绍下面这些连接都说得很清楚。

https://zhuanlan.zhihu.com/p/365339160

https://zhuanlan.zhihu.com/p/552098339

但是我从昨天到现在卡了很久还是无法实现这个效果。首先深度图的采样就花费了超级多的时间。不管是加pass还是直接采样,在截帧工具里面都看不到它的身影。

但是我把代码套上去,他似乎又是生效的,但是这个效果在scene窗口里非常不对。在game窗口里都是好像有边缘光效果了。但也很不对。而且还是看不到深度图在frame debugger里。

这个大佬说要写一个Pass,但是我把另一个大佬写的DepthOnly Pass复制过来,也还是和上面效果一样,看不到深度信息。结果很诡异。

然后b站这个大佬的用的又不是URP,我也用不了SampleSceneDepth这个函数。

唉中间反正还问了AI也问不出什么。快把我搞崩溃了。其实原理理解起来也不算难,但是就是这个深度,我按那些大佬的来根本搞不了,自己搜了半天也搞不了。

游戏相机我也设置了使用管线设置,然后scene的摄像机我不懂去哪里调,好像也调不了。

受不了了这种感觉,放弃的话又感觉好憋屈,不放弃的话又仿佛无头苍蝇,找不到路。我感觉其实只是少了一些简单的步骤,但是想要懂这些简单的步骤,又需要我目前没掌握的很多知识。

而且有些错误真的很搞人心态,明明全部代码只有这个一个ST,它给我报错重定义了,我删掉后又说缺少。

好吧,后面问AI好像是和系统的一个变量重名了。。。唉以后别取这种名了。

算了,边缘光暂时放弃了,我后面学习更多储备知识后再搞。

补充

刚刚法线描边又不对了,然后又运行一次平滑法线那个工具才又好了,感觉是每次重启,切线信息都会恢复默认。

总结

非常遗憾,花了快一周时间,结果也没能还原得很好。我做了错饭。最后得描边和边缘光部分惨不忍睹。而且包括前面的阴影也很粗糙,多层级阴影还有阴影mask都没用。而且还有些技术没有用。比如tonemapping,似乎可以用来营造那种朦胧而清晰的氛围。(下面链接讲有)

https://zhuanlan.zhihu.com/p/511540455

https://www.cnblogs.com/yaoling1997/p/16029385.html

不过,这算是之前学庄懂的一个阶段作业吧,经过这个经历,我也是大开了眼界,看到了很多高端的东西,深感自己还有很多需要学的。我打算之后自己边学边继续完善这个shader吧。

比如把大部分参数开放,毕竟据说TA最本职的工作,就是开放shader参数方便美术调整嘛。

然后后面还有个想法,学了PBR之后,把之前的宝可梦渲染成真实质感的。

不过要说具体的完善思路,我现在甚至也说不出来,只能说继续学吧,学到一定阶段后,再回过头来看,也许很多东西就明了了。谢谢。

阶段性成果


原神角色渲染04的评论 (共 条)

分享到微博请遵守国家法律