由于现在的引擎都比较完善,开发者无需关心引擎底层的技术,只负责写逻辑即可,比如Unity引擎和UE4引擎,它们的出现确实为开发者提供了便利,但是对开发者来说,笔者认为并不是好事情,它导致了大部分开发者只能做些没有任何科技含量的东西,请允许我这么说,因为我们只是在如何用好引擎方面大动脑筋,更要命的是我们使用的引擎都是国外开发的,人家是做底层的技术,换句话说,核心技术掌握在人家手里,作为程序员来说应该感到悲哀。因为现阶段我也在写自己的3D引擎,所以就花了一些时间研究了引擎底层的技术分享给大家,过程是艰苦的,但是我们还是应该坚持自己的追求。现将学习到的技术分享给读者,进而解开Shader在引擎底层的处理方式。这样读者在使用成熟引擎编写Shader脚本时,至少知道它们底层是如何处理的,中国的引擎技术振兴就靠大家了,下面我们进入主题。
我们编写Shader渲染模型材质和后处理渲染,只需要把编写好的Shader放到引擎指定的目录下面就可以了,后面的处理就教给引擎底层了。引擎底层它是如何处理的呢?先看看 引擎实时渲染架构图:
我们本篇博客主要介绍Shader在引擎中的加载,编译,申请缓冲区,利用DX提供的接口实现我们的功能。
-
Shader脚本加载
首先我们要知道Shader的格式以及文件存放路径,就是我们常说的Shader脚本加载,在引擎中可以通过遍历文件夹中的文件即可获取到Shader文件,加载Shader脚本代码跟加载文