#include "render/shader.h" #include "render/renderer.h" #include #include #include VkResult shader_create_module(struct renderer *ren, const size_t len, uint8_t code[len], VkShaderModule *module) { return vkCreateShaderModule(ren->gpu.device, &(VkShaderModuleCreateInfo) { .sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, .codeSize = len, .pCode = (uint32_t *)code }, NULL, module); } bool shader_load(const char *filename, struct shader *shader) { assert(filename); assert(shader); FILE *fp = fopen(filename, "rb"); if (!fp) return false; fseek(fp, 0, SEEK_END); shader->len = ftell(fp); rewind(fp); shader->code = calloc(shader->len, sizeof(*shader->code)); fread(shader->code, sizeof(*shader->code), shader->len, fp); fclose(fp); return true; }