魁梧的抠脚大汉 发表于 2017-5-12 12:29:00

虚幻4 简单的自定义光照

虚幻的大部分材质模型使用的是DeferredRendering。所以没办法直接获取光源的位置。但是gbuffer里面会储存fragment的normal,position等信息。这里就拿最简单的一个兰伯特光照模型作为例子。
首先我们建一个材质然后做如下操作


在这里面的这个节点会从gbuffer中返回每个fragment的法线信息


这个是返回gbuffer里每个fragment的位置信息,虚幻4材质编辑器高度傻瓜化,sampler操作都帮我们做了。

最后这个是自己定义的光源位置。我这里把光源定义在(10000,10000,10000)的位置。这个值可以暴露出来,然后把这个材质做成dynamic的供给蓝图或者c++。这样就可以间接获取光源位置了。

最后就可以看到我们学DX或者Gl时光照第一课的简单的兰伯特光照啦。虽然没什么用不过对理解虚幻4的渲染有点帮助吧。
这也为在虚幻4里实现卡通光照提供了方法。


十二 发表于 2017-5-12 13:41:52

大神厉害,小萌新我是一句都没看懂...

spdkir 发表于 2017-5-12 23:31:38

没懂。。。。

QQ3217142879 发表于 2017-5-13 17:01:35

请问这材质拿来做什么的

光影之间 发表于 2017-5-15 10:43:43

同问有啥用?

我是狼 发表于 2017-5-15 16:44:16

看不懂

jie13523306 发表于 2017-5-26 17:23:48

看看有什么用

zorn8496 发表于 2017-5-27 14:39:40

可以用 AtmosphericLightVector 代替LightVector,当然场景里需要摆放一个AtmosphericFog,做主光源的DirectionalLight上勾选AtmosphereSunLight,

堕落的牧羊人 发表于 2017-5-31 00:08:36

谢谢分享
页: [1]
查看完整版本: 虚幻4 简单的自定义光照