Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/overlay/overlay_shader.cc
- This file was moved from source/blender/draw/engines/overlay/overlay_shader.c.
| /* SPDX-License-Identifier: GPL-2.0-or-later | /* SPDX-License-Identifier: GPL-2.0-or-later | ||||
| * Copyright 2019 Blender Foundation. */ | * Copyright 2019 Blender Foundation. */ | ||||
| /** \file | /** \file | ||||
| * \ingroup draw_engine | * \ingroup draw_engine | ||||
| */ | */ | ||||
| #include "DRW_render.h" | #include "DRW_render.h" | ||||
| #include "GPU_shader.h" | #include "GPU_shader.h" | ||||
| #include "UI_resources.h" | #include "UI_resources.h" | ||||
| #include "overlay_private.h" | #include "overlay_private.hh" | ||||
| typedef struct OVERLAY_Shaders { | typedef struct OVERLAY_Shaders { | ||||
| GPUShader *antialiasing; | GPUShader *antialiasing; | ||||
| GPUShader *armature_dof_wire; | GPUShader *armature_dof_wire; | ||||
| GPUShader *armature_dof_solid; | GPUShader *armature_dof_solid; | ||||
| GPUShader *armature_envelope_outline; | GPUShader *armature_envelope_outline; | ||||
| GPUShader *armature_envelope_solid; | GPUShader *armature_envelope_solid; | ||||
| GPUShader *armature_shape_outline; | GPUShader *armature_shape_outline; | ||||
| ▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | typedef struct OVERLAY_Shaders { | ||||
| GPUShader *volume_gridlines_range_sh; | GPUShader *volume_gridlines_range_sh; | ||||
| GPUShader *wireframe_select; | GPUShader *wireframe_select; | ||||
| GPUShader *wireframe[2]; | GPUShader *wireframe[2]; | ||||
| GPUShader *xray_fade; | GPUShader *xray_fade; | ||||
| } OVERLAY_Shaders; | } OVERLAY_Shaders; | ||||
| static struct { | static struct { | ||||
| OVERLAY_Shaders sh_data[GPU_SHADER_CFG_LEN]; | OVERLAY_Shaders sh_data[GPU_SHADER_CFG_LEN]; | ||||
| } e_data = {{{NULL}}}; | } e_data = {{{nullptr}}}; | ||||
| GPUShader *OVERLAY_shader_antialiasing(void) | GPUShader *OVERLAY_shader_antialiasing(void) | ||||
| { | { | ||||
| OVERLAY_Shaders *sh_data = &e_data.sh_data[0]; | OVERLAY_Shaders *sh_data = &e_data.sh_data[0]; | ||||
| if (!sh_data->antialiasing) { | if (!sh_data->antialiasing) { | ||||
| sh_data->antialiasing = GPU_shader_create_from_info_name("overlay_antialiasing"); | sh_data->antialiasing = GPU_shader_create_from_info_name("overlay_antialiasing"); | ||||
| } | } | ||||
| return sh_data->antialiasing; | return sh_data->antialiasing; | ||||
| Show All 39 Lines | GPUShader *OVERLAY_shader_edit_mesh_vert(void) | ||||
| return sh_data->edit_mesh_vert; | return sh_data->edit_mesh_vert; | ||||
| } | } | ||||
| GPUShader *OVERLAY_shader_edit_mesh_edge(bool use_flat_interp) | GPUShader *OVERLAY_shader_edit_mesh_edge(bool use_flat_interp) | ||||
| { | { | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | const DRWContextState *draw_ctx = DRW_context_state_get(); | ||||
| OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; | OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; | ||||
| GPUShader **sh = use_flat_interp ? &sh_data->edit_mesh_edge_flat : &sh_data->edit_mesh_edge; | GPUShader **sh = use_flat_interp ? &sh_data->edit_mesh_edge_flat : &sh_data->edit_mesh_edge; | ||||
| if (*sh == NULL) { | if (*sh == nullptr) { | ||||
| *sh = GPU_shader_create_from_info_name( | *sh = GPU_shader_create_from_info_name( | ||||
| draw_ctx->sh_cfg ? | draw_ctx->sh_cfg ? | ||||
| (use_flat_interp ? "overlay_edit_mesh_edge_flat_clipped" : | (use_flat_interp ? "overlay_edit_mesh_edge_flat_clipped" : | ||||
| "overlay_edit_mesh_edge_clipped") : | "overlay_edit_mesh_edge_clipped") : | ||||
| (use_flat_interp ? "overlay_edit_mesh_edge_flat" : "overlay_edit_mesh_edge")); | (use_flat_interp ? "overlay_edit_mesh_edge_flat" : "overlay_edit_mesh_edge")); | ||||
| } | } | ||||
| return *sh; | return *sh; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 307 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| GPUShader *OVERLAY_shader_extra_wire(bool use_object, bool is_select) | GPUShader *OVERLAY_shader_extra_wire(bool use_object, bool is_select) | ||||
| { | { | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | const DRWContextState *draw_ctx = DRW_context_state_get(); | ||||
| OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; | OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; | ||||
| GPUShader **sh = (is_select) ? &sh_data->extra_wire_select : &sh_data->extra_wire[use_object]; | GPUShader **sh = (is_select) ? &sh_data->extra_wire_select : &sh_data->extra_wire[use_object]; | ||||
| if (!*sh) { | if (!*sh) { | ||||
| const char *info_name = NULL; | const char *info_name = nullptr; | ||||
| if (draw_ctx->sh_cfg) { | if (draw_ctx->sh_cfg) { | ||||
| if (is_select) { | if (is_select) { | ||||
| info_name = "overlay_extra_wire_select_clipped"; | info_name = "overlay_extra_wire_select_clipped"; | ||||
| } | } | ||||
| else { | else { | ||||
| info_name = use_object ? "overlay_extra_wire_object_clipped" : | info_name = use_object ? "overlay_extra_wire_object_clipped" : | ||||
| "overlay_extra_wire_clipped"; | "overlay_extra_wire_clipped"; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 493 Lines • ▼ Show 20 Lines | if (!sh_data->edit_uv_tiled_image_borders) { | ||||
| sh_data->edit_uv_tiled_image_borders = GPU_shader_create_from_info_name( | sh_data->edit_uv_tiled_image_borders = GPU_shader_create_from_info_name( | ||||
| "overlay_edit_uv_tiled_image_borders"); | "overlay_edit_uv_tiled_image_borders"); | ||||
| } | } | ||||
| return sh_data->edit_uv_tiled_image_borders; | return sh_data->edit_uv_tiled_image_borders; | ||||
| } | } | ||||
| /** \} */ | /** \} */ | ||||
| static OVERLAY_InstanceFormats g_formats = {NULL}; | static OVERLAY_InstanceFormats g_formats = {nullptr}; | ||||
| OVERLAY_InstanceFormats *OVERLAY_shader_instance_formats_get(void) | OVERLAY_InstanceFormats *OVERLAY_shader_instance_formats_get(void) | ||||
| { | { | ||||
| DRW_shgroup_instance_format(g_formats.pos, | DRW_shgroup_instance_format(g_formats.pos, | ||||
| { | { | ||||
| {"pos", DRW_ATTR_FLOAT, 3}, | {"pos", DRW_ATTR_FLOAT, 3}, | ||||
| }); | }); | ||||
| DRW_shgroup_instance_format(g_formats.pos_color, | DRW_shgroup_instance_format(g_formats.pos_color, | ||||
| ▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines | |||||