我的专栏目录:
小IVan:专题概述及目录有了第一卷的铺垫之后,我们就可以开始写渲染器了(虽然是用虚幻的框架和接口)。下面我们就来一步一步在虚幻中敲一个自己的渲染器。我使用的环境是:4.19源码版引擎,windows10,vs2017社区版。我这里只是举个例子,有兴趣的美术也可以照着这个办法把各种自己常用的离线渲染器搬到引擎里。
【第一步】定义一条新的渲染path
首先第一件事情是我们需要定义一条我们自己的渲染路径,现在引擎有两条渲染路径,一条是Mobile的一条是deferred,并且它是根据渲染质量来决定的
所以我打算使用SM3_1这个等级作为我们渲染器的使用等级,所以我把这个函数改为了下面这个样子,在SceneInterface.h中
使用SM4或者SM5的话会多需要考虑可见性剔除的东西。
如果我们写forward但是又用到了上面这部分分支的代码的话,ViewInfo在析构的时候会出发断言。
然后还要在SceneRenderTargets.h里加上自己的渲染路径所对应的RT格式
【第二步】自定义渲染器
然后再到SceneRendering.h中加入声明一个我们的渲染器
在创建渲染器的地方new它
【第三步】
我们在引擎的Render模块里新建一个MyRenderer.cpp,然后到工程目录下ReGenerate一下工程,然后你将会看到:
然后在MyRenderer中敲入如下代码
【第四步】
然后我们就可以点F5起引擎然后去泡杯茶啦。如果你电脑配置不太好,那就可以去泡两杯。
推荐澳洲葵花蜜+绿茶。
【第五步】
打开引擎后切换到SM3
不出意外的话我们将只能看到上一个渲染器给我们留下的最后一帧画面。
打个断点,的确引擎在跑我们的渲染器,不过现在Render函数啥也没干,所以什么也没有,接下来我们来完成Render函数。如果以后有面试官问你引擎的渲染顺序,现在我们可以从容不迫地告诉他,我们想先渲染啥就先渲染啥,因为一切渲染顺序都在我们的掌控之中。
【第六步】完善Render函数
下面我们就来完善这个Render函数,如果你之前有敲过软光栅渲染器或者是光线追踪渲染器的话,对下面的