#11427 Score: 0
Zhihao Liang
Participant
2 pts

好的,我又看了一下,看样子Pilot是在编译glsl文件的时候转成了字节码段并存在了对应的头文件里。

例如engine/shader/glsl/color_grading.frag就转换成了engine/shader/generated/cpp/color_grading_frag.h中的COLOR_GRADING_FRAG。
然后在engine/source/runtime/function/render/source/vulkan_manager/passes/color_grading.cpp里面根据COLOR_GRADING_FRAG创造shader module实现了。
实现好的passes再添加到engine/source/runtime/function/render/source/vulkan_manager的PVulkanManager中的成员和绘制函数中。

所以我们如果要做作业里的拓展项,应该也是实现相应的glsl,添加对应的passes,然后加到vulkan_manager里就好了。

但如果这样的话,glsl编译出来的spv就没用了是吗,因为我看往上别的vulkan教程,他们调用glsl编译好的shader都是调用读取glsl编译出来的spv文件,而Pilot里面好像没有读取spv的实现和操作,是自己生成的字节码,然后存到相应生成的头文件中。