static void GPU_node_free(GPUNode *node) { GPUOutput *output; GPU_inputs_free(&node->inputs); for (output=node->outputs.first; output; output=output->next) if (output->link) { output->link->output = NULL; GPU_node_link_free(output->link); } BLI_freelistN(&node->outputs); MEM_freeN(node); }
static void gpu_material_free_single(GPUMaterial *material) { /* Cancel / wait any pending lazy compilation. */ DRW_deferred_shader_remove(material); GPU_pass_free_nodes(&material->nodes); GPU_inputs_free(&material->inputs); if (material->pass != NULL) { GPU_pass_release(material->pass); } if (material->ubo != NULL) { GPU_uniformbuffer_free(material->ubo); } if (material->sss_tex_profile != NULL) { GPU_texture_free(material->sss_tex_profile); } if (material->sss_profile != NULL) { GPU_uniformbuffer_free(material->sss_profile); } if (material->coba_tex != NULL) { GPU_texture_free(material->coba_tex); } }