老用户一定记得,在KlayGE 3.9之前,用来表示effect的.fxml都需要通过一个python写成的编译器进行离线编译,生成.kfx格式才能给runtime使用。在3.9里引入了rapidxml,可以直接在runtime读取xml文件,流程变短,开发效率提高了。但随着这两年shader越写越复杂,编译shader所花的时间越来越多,在载入的时候每次都编译shader,一来浪费时间,二来浪费计算。
KlayGE的模型格式.meshml也有过这样的问题,后来通过一个JIT在载入的时候动态把xml的.meshml编译成二进制的.model_bin,之后的载入速度就极大提高了。既不需要离线编译,也不用担心读取效率。因此,引入一个effect JIT也成了理所当然的事情。所以,事隔多年后,kfx格式原地满血复活。 ...