本文主要是介绍[PBS真的可以为所欲为] Unreal材质模型源码分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://blog.sina.com.cn/s/blog_76d02ce90102xr4x.html
unreal应该算是现在最实用的开源渲染引擎之一了
基于物理的渲染(PBS)用起来真的是为所欲为
这里决定花点时间研究下unreal低层的渲染代码,这里假设读者具有基本的渲染知识,至少知道BRDF是什么
引擎中的着色器代码都在Engine/Shaders中,不同版本之间会有些差别,不过不会差太多就是了
这里使用的版本是4.17
打开Engine/Shaders/Private文件夹,可以看见大量的.usf和.ush文件,这些就是unreal渲染的核心
两者的语法都类似GLSL或HLSL,区别是ush没有入口函数,只能被其他ush或usf来引用,而usf有入口函数,不可被应用。
整个Engine/Shaders/Private中有近300个文件,一行一行解释显然不现实,这篇决定优先分析引擎中material的源码
这部分源码主要在ShadingModels.ush中,会引用其他的BRDF.ush,下面来慢慢分析
首先是下面两个函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | // float3 { } float3 |