Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/gpencil/gpencil_shader.c
| Show All 26 Lines | |||||
| extern char datatoc_gpencil_frag_glsl[]; | extern char datatoc_gpencil_frag_glsl[]; | ||||
| extern char datatoc_gpencil_vert_glsl[]; | extern char datatoc_gpencil_vert_glsl[]; | ||||
| extern char datatoc_gpencil_antialiasing_frag_glsl[]; | extern char datatoc_gpencil_antialiasing_frag_glsl[]; | ||||
| extern char datatoc_gpencil_antialiasing_vert_glsl[]; | extern char datatoc_gpencil_antialiasing_vert_glsl[]; | ||||
| extern char datatoc_gpencil_layer_blend_frag_glsl[]; | extern char datatoc_gpencil_layer_blend_frag_glsl[]; | ||||
| extern char datatoc_gpencil_mask_invert_frag_glsl[]; | extern char datatoc_gpencil_mask_invert_frag_glsl[]; | ||||
| extern char datatoc_gpencil_depth_merge_frag_glsl[]; | extern char datatoc_gpencil_depth_merge_frag_glsl[]; | ||||
| extern char datatoc_gpencil_depth_merge_vert_glsl[]; | extern char datatoc_gpencil_depth_merge_vert_glsl[]; | ||||
| extern char datatoc_gpencil_taa_frag_glsl[]; | |||||
| extern char datatoc_gpencil_vfx_frag_glsl[]; | extern char datatoc_gpencil_vfx_frag_glsl[]; | ||||
| extern char datatoc_common_colormanagement_lib_glsl[]; | extern char datatoc_common_colormanagement_lib_glsl[]; | ||||
| extern char datatoc_common_fullscreen_vert_glsl[]; | extern char datatoc_common_fullscreen_vert_glsl[]; | ||||
| extern char datatoc_common_smaa_lib_glsl[]; | extern char datatoc_common_smaa_lib_glsl[]; | ||||
| extern char datatoc_common_view_lib_glsl[]; | extern char datatoc_common_view_lib_glsl[]; | ||||
| static struct { | static struct { | ||||
| /* SMAA antialiasing */ | /* SMAA antialiasing */ | ||||
| GPUShader *antialiasing_sh[3]; | GPUShader *antialiasing_sh[3]; | ||||
| GPUShader *antialiasing_accum_sh; | |||||
| /* GPencil Object rendering */ | /* GPencil Object rendering */ | ||||
| GPUShader *gpencil_sh; | GPUShader *gpencil_sh; | ||||
| /* Final Compositing over rendered background. */ | /* Final Compositing over rendered background. */ | ||||
| GPUShader *composite_sh; | GPUShader *composite_sh; | ||||
| /* All layer blend types in one shader! */ | /* All layer blend types in one shader! */ | ||||
| GPUShader *layer_blend_sh; | GPUShader *layer_blend_sh; | ||||
| /* Merge the final object depth to the depth buffer. */ | /* Merge the final object depth to the depth buffer. */ | ||||
| GPUShader *depth_merge_sh; | GPUShader *depth_merge_sh; | ||||
| Show All 22 Lines | static struct { | ||||
| GPUShader *gpencil_paper_sh; | GPUShader *gpencil_paper_sh; | ||||
| } g_shaders = {{NULL}}; | } g_shaders = {{NULL}}; | ||||
| void GPENCIL_shader_free(void) | void GPENCIL_shader_free(void) | ||||
| { | { | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[0]); | DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[0]); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[1]); | DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[1]); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[2]); | DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[2]); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_accum_sh); | |||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.composite_sh); | DRW_SHADER_FREE_SAFE(g_shaders.composite_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.layer_blend_sh); | DRW_SHADER_FREE_SAFE(g_shaders.layer_blend_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.depth_merge_sh); | DRW_SHADER_FREE_SAFE(g_shaders.depth_merge_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.mask_invert_sh); | DRW_SHADER_FREE_SAFE(g_shaders.mask_invert_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.fx_composite_sh); | DRW_SHADER_FREE_SAFE(g_shaders.fx_composite_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.fx_colorize_sh); | DRW_SHADER_FREE_SAFE(g_shaders.fx_colorize_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.fx_blur_sh); | DRW_SHADER_FREE_SAFE(g_shaders.fx_blur_sh); | ||||
| Show All 10 Lines | void GPENCIL_shader_free(void) | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_drawing_fill_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_drawing_fill_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_fullscreen_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_fullscreen_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_simple_fullscreen_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_simple_fullscreen_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_blend_fullscreen_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_blend_fullscreen_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_background_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_background_sh); | ||||
| DRW_SHADER_FREE_SAFE(g_shaders.gpencil_paper_sh); | DRW_SHADER_FREE_SAFE(g_shaders.gpencil_paper_sh); | ||||
| } | } | ||||
| GPUShader *GPENCIL_shader_antialiasing_accumulation_get(void) | |||||
| { | |||||
| if (g_shaders.antialiasing_accum_sh == NULL) { | |||||
| g_shaders.antialiasing_accum_sh = DRW_shader_create_fullscreen(datatoc_gpencil_taa_frag_glsl, | |||||
| NULL); | |||||
| } | |||||
| return g_shaders.antialiasing_accum_sh; | |||||
| } | |||||
| GPUShader *GPENCIL_shader_antialiasing(int stage) | GPUShader *GPENCIL_shader_antialiasing(int stage) | ||||
| { | { | ||||
| BLI_assert(stage < 3); | BLI_assert(stage < 3); | ||||
| if (!g_shaders.antialiasing_sh[stage]) { | if (!g_shaders.antialiasing_sh[stage]) { | ||||
| char stage_define[32]; | char stage_define[32]; | ||||
| BLI_snprintf(stage_define, sizeof(stage_define), "#define SMAA_STAGE %d\n", stage); | BLI_snprintf(stage_define, sizeof(stage_define), "#define SMAA_STAGE %d\n", stage); | ||||
| ▲ Show 20 Lines • Show All 219 Lines • Show Last 20 Lines | |||||