Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/draw_shader.cc
| Show All 11 Lines | |||||
| #include "GPU_batch.h" | #include "GPU_batch.h" | ||||
| #include "GPU_index_buffer.h" | #include "GPU_index_buffer.h" | ||||
| #include "GPU_vertex_buffer.h" | #include "GPU_vertex_buffer.h" | ||||
| #include "draw_shader.h" | #include "draw_shader.h" | ||||
| extern "C" char datatoc_common_hair_lib_glsl[]; | extern "C" char datatoc_common_hair_lib_glsl[]; | ||||
| extern "C" char datatoc_common_hair_refine_vert_glsl[]; | extern "C" char datatoc_common_hair_refine_vert_glsl[]; | ||||
| extern "C" char datatoc_common_hair_refine_comp_glsl[]; | |||||
| extern "C" char datatoc_gpu_shader_3D_smooth_color_frag_glsl[]; | |||||
| static struct { | static struct { | ||||
| struct GPUShader *hair_refine_sh[PART_REFINE_MAX_SHADER]; | struct GPUShader *hair_refine_sh[PART_REFINE_MAX_SHADER]; | ||||
| struct GPUShader *debug_print_display_sh; | struct GPUShader *debug_print_display_sh; | ||||
| struct GPUShader *debug_draw_display_sh; | struct GPUShader *debug_draw_display_sh; | ||||
| struct GPUShader *draw_visibility_compute_sh; | |||||
| struct GPUShader *draw_resource_finalize_sh; | |||||
| struct GPUShader *draw_command_generate_sh; | |||||
| } e_data = {{nullptr}}; | } e_data = {{nullptr}}; | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name Hair refinement | /** \name Hair refinement | ||||
| * \{ */ | * \{ */ | ||||
| static GPUShader *hair_refine_shader_compute_create(ParticleRefineShader UNUSED(refinement)) | static GPUShader *hair_refine_shader_compute_create(ParticleRefineShader UNUSED(refinement)) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | |||||
| GPUShader *DRW_shader_debug_draw_display_get() | GPUShader *DRW_shader_debug_draw_display_get() | ||||
| { | { | ||||
| if (e_data.debug_draw_display_sh == nullptr) { | if (e_data.debug_draw_display_sh == nullptr) { | ||||
| e_data.debug_draw_display_sh = GPU_shader_create_from_info_name("draw_debug_draw_display"); | e_data.debug_draw_display_sh = GPU_shader_create_from_info_name("draw_debug_draw_display"); | ||||
| } | } | ||||
| return e_data.debug_draw_display_sh; | return e_data.debug_draw_display_sh; | ||||
| } | } | ||||
| GPUShader *DRW_shader_draw_visibility_compute_get() | |||||
| { | |||||
| if (e_data.draw_visibility_compute_sh == nullptr) { | |||||
| e_data.draw_visibility_compute_sh = GPU_shader_create_from_info_name( | |||||
| "draw_visibility_compute"); | |||||
| } | |||||
| return e_data.draw_visibility_compute_sh; | |||||
| } | |||||
| GPUShader *DRW_shader_draw_resource_finalize_get() | |||||
| { | |||||
| if (e_data.draw_resource_finalize_sh == nullptr) { | |||||
| e_data.draw_resource_finalize_sh = GPU_shader_create_from_info_name("draw_resource_finalize"); | |||||
| } | |||||
| return e_data.draw_resource_finalize_sh; | |||||
| } | |||||
| GPUShader *DRW_shader_draw_command_generate_get() | |||||
| { | |||||
| if (e_data.draw_command_generate_sh == nullptr) { | |||||
| e_data.draw_command_generate_sh = GPU_shader_create_from_info_name("draw_command_generate"); | |||||
| } | |||||
| return e_data.draw_command_generate_sh; | |||||
| } | |||||
| /** \} */ | /** \} */ | ||||
| void DRW_shaders_free() | void DRW_shaders_free() | ||||
| { | { | ||||
| for (int i = 0; i < PART_REFINE_MAX_SHADER; i++) { | for (int i = 0; i < PART_REFINE_MAX_SHADER; i++) { | ||||
| DRW_SHADER_FREE_SAFE(e_data.hair_refine_sh[i]); | DRW_SHADER_FREE_SAFE(e_data.hair_refine_sh[i]); | ||||
| } | } | ||||
| DRW_SHADER_FREE_SAFE(e_data.debug_print_display_sh); | DRW_SHADER_FREE_SAFE(e_data.debug_print_display_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.debug_draw_display_sh); | DRW_SHADER_FREE_SAFE(e_data.debug_draw_display_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.draw_visibility_compute_sh); | |||||
| DRW_SHADER_FREE_SAFE(e_data.draw_resource_finalize_sh); | |||||
| DRW_SHADER_FREE_SAFE(e_data.draw_command_generate_sh); | |||||
| } | } | ||||