虚幻4shader 初步研究

虚幻4的渲染管线相当复杂,涉及到多个线程。shader的编译上传等也十分特别,虚幻有自己的一套方法。

在虚幻中编写shader,给人的第一印象就是那个材质编辑器。这个可视化编辑器是美术的福音,但是对于更想使用代码编写高级点儿的效果的人来说感觉并不是那么好。总感觉编写者和引擎shader之间有一个阻挡者,隔着一层,无法真正触碰到shader。


首先我们在材质编辑器里编写的其实并不是shader,只是一片HLSL代码的字符串。并且这些材质节点全部都是c++代码。当我们编译材质的时候,MaterialExpression会将与之对应的HLSL代码提交给HLSLTranslator然后HLSLTranslator会把字符串翻译成HLSL代码然后和USF模板中的代码进行替换,最后才会得到我们需要的shadermap。虚幻的usf文件里面保存的不是shader,而是shader模板和各种函数。


虚幻的vertexbuffer  indexbuffer 的编译上传是通过场景代理完成的,可以参考custommeshcomponent。还有个uniformbuffer在sceneview里可以找到与之相关的代码。在虚幻材质系统里,材质系统负责管理各个shader的各种数据。worldoffset是将偏移数据提交给vertexshader,diffuse specular  等是将数据给fragmentshader,displaced是给曲面细分着色器。虚幻将各个shader需要的数据杂糅在一个材质编辑器里。然而有些shader是虚幻没有暴露出来的,比如几何着色器。这个时候就只能爱莫能助了。
下面是我最新更新的几篇文章:

虚幻4渲染笔记【第一卷:延迟渲染管线】 点击打开链接
虚幻4渲染笔记【第二卷:使用自己的shader】 点击打开链接
虚幻渲染笔记【第三卷:虚幻4中自定义global shader代码例子详细解释】 点击打开链接
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值