MY BLOG DIRECTORY:
小IVan:专题概述及目录![图标](https://i-blog.csdnimg.cn/blog_migrate/d6ea8e09530a242b2ee5802be9b6a242.png)
INTRODUCTION:
在接触虚幻4开发的过程中,始终有一个声音在耳边萦绕:“少年,你不要改引擎,什么都不要动,要遵循虚幻4的习惯来开发!”但是!作为初生牛犊不怕虎的莽撞少年的我怎么能就此屈服呢!我就是要乱改,直到引擎崩溃。
本篇中我们将一起来探索如何把虚幻4改造成一个次世代卡通的引擎。看到二之国那精美的画面,作为以前是画漫画的我心里羡慕至极。本人只是个技术美术萌新,如有错误还请各路大神斧正!
如果感觉这部分内容会比较生硬,可以先看一下我专栏的Shader篇。以后本篇效果都会以二之国2为标杆
MAIN CONTENT:
下面我们来一起开启卡通效果第一步吧。先上个效果:
![v2-ea7258311063867b2e91723fe8fe2cd3_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/1683aacddf45dee223186005b65daa6a.jpeg)
我这里先把影子改成了硬边的。
![v2-40ed06362e8fb7fd55b165cb14d05b22_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fa424f60b2115c893794a4c37868bfb5.jpeg)
因为我们是复用引擎原生的渲染管线,所以不需要我们手工去处理shadow map什么的了。我前面文章也有比较简单地讲怎么增加一个卡通的材质模型。但是本章讲介绍直接修改原有的standard shading mode
首先我们打开TiledDeferredLightShaders.usf找到光照pass的入口函数
![v2-b22b34491d8706c39aefe40d1fefeb85_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b3ea033af522eb4290d147aa08dce20f.jpeg)
可以看到这是一个computeshader,看过我前面(shader篇)文章的话对这个应该十分熟悉了。
不管那些复杂的计算,我们找到光照计算部分
![v2-64669196f9f1c3cf530d42345871c8df_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/682af5ebf8774a9aa347c0b37c9aed76.jpeg)
然后找到GetDynamicLighting部分,这里就是我们的光照计算部分了
打开DeferredLightingCommon.ush我们做如下修改
![v2-ba2a82c1dd282cec3aa72f96f6b22464_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/c0c6f891bd42cbd7469dee287b9c1376.jpeg)
我们需要了解清楚的是,整个Lighting是怎么回事。这个函数中我们需要注意的有以下几部分:
![v2-71e5b0d9e05cce75277bcda49359697a_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/1c08f7a45183b7d59013a20d3e5b4fc2.png)
![v2-6f9c051f6e10eb1f4cef78e400860b68_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4340e124d3b297b82a8ab70968a6d6df.jpeg)
![v2-249dd95e0a210d18575930644464a545_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3565bbe2a2f8b45d9406d0400c836e7f.jpeg)
首先看到第一部分,这个GetShadowTerms函数会计算出LightMap相关的一些东西,这个函数其实很简单,最关键的LightData是在最开始光照pass入口函数那个computeshader里面传进来的
![v2-4f8fe428dd6e58dc9db0e8981818ab9b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/d0b486e0aef97570fed4f1da46608279.jpeg)
接下来第二部分一次是Surfaceshading的计算,第二次是Subsurface的计算(所谓的Subsurface就是计算两次?一次表面一次次表面然后把它们的结果累积起来!)
第三部分就是AO和Shadow的处理了。
下面来到ShadingModes我们把StandardShading做如下修改:
![v2-6fbefe22129a57b747e5cb0aa1cb41d4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e30c2709beca165c75bb7407256b8fbe.jpeg)
最后就能看到我们的效果啦。这里只是半成品还有些问题,后面我会对这些计算再做调整,不过我们现在已经迈出了乱改引擎的第一步。
SUMMARY AND OUTLOOK:
如果也有想做卡通渲染的朋友可以加入技术美术讨论群(专栏目录里有群号),大家一起讨论学习进步。后面的章节会一步步完善整个修改,甚至加入一些辅助pass。
![v2-326b51d166dc3e98c226edeac0287f7d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f2f70f0b2bdd0ceca62e7db30d7e955a.jpeg)
Enjoy It 手动笔芯!
NEXT: