Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/modes/object_mode.c
| Show First 20 Lines • Show All 939 Lines • ▼ Show 20 Lines | static void DRW_shgroup_empty_image( | ||||
| } | } | ||||
| CLAMP_MIN(size[0], 1); | CLAMP_MIN(size[0], 1); | ||||
| CLAMP_MIN(size[1], 1); | CLAMP_MIN(size[1], 1); | ||||
| float image_aspect[2]; | float image_aspect[2]; | ||||
| image_calc_aspect(ob->data, size, image_aspect); | image_calc_aspect(ob->data, size, image_aspect); | ||||
| char depth_mode; | |||||
| if (DRW_state_is_depth()) { | |||||
| /* Use the actual depth if we are doing depth tests to determine the distance to the object */ | |||||
| depth_mode = OB_EMPTY_IMAGE_DEPTH_DEFAULT; | |||||
| } | |||||
| else { | |||||
| depth_mode = ob->empty_image_depth; | |||||
| } | |||||
| { | { | ||||
| DRWShadingGroup *grp = DRW_shgroup_create(sh_data->object_empty_image_wire, sgl->non_meshes); | DRWShadingGroup *grp = DRW_shgroup_create(sh_data->object_empty_image_wire, sgl->non_meshes); | ||||
| /* TODO(fclem) implement DRW_shgroup_uniform_vec2_copy */ | /* TODO(fclem) implement DRW_shgroup_uniform_vec2_copy */ | ||||
| DRW_shgroup_uniform_float_copy(grp, "aspectX", image_aspect[0]); | DRW_shgroup_uniform_float_copy(grp, "aspectX", image_aspect[0]); | ||||
| DRW_shgroup_uniform_float_copy(grp, "aspectY", image_aspect[1]); | DRW_shgroup_uniform_float_copy(grp, "aspectY", image_aspect[1]); | ||||
| DRW_shgroup_uniform_int_copy(grp, "depthMode", ob->empty_image_depth); | DRW_shgroup_uniform_int_copy(grp, "depthMode", depth_mode); | ||||
| DRW_shgroup_uniform_float(grp, "size", &ob->empty_drawsize, 1); | DRW_shgroup_uniform_float(grp, "size", &ob->empty_drawsize, 1); | ||||
| DRW_shgroup_uniform_vec2(grp, "offset", ob->ima_ofs, 1); | DRW_shgroup_uniform_vec2(grp, "offset", ob->ima_ofs, 1); | ||||
| DRW_shgroup_uniform_vec3(grp, "color", color, 1); | DRW_shgroup_uniform_vec3(grp, "color", color, 1); | ||||
| if (sh_cfg == GPU_SHADER_CFG_CLIPPED) { | if (sh_cfg == GPU_SHADER_CFG_CLIPPED) { | ||||
| DRW_shgroup_world_clip_planes_from_rv3d(grp, DRW_context_state_get()->rv3d); | DRW_shgroup_world_clip_planes_from_rv3d(grp, DRW_context_state_get()->rv3d); | ||||
| } | } | ||||
| DRW_shgroup_call_add(grp, DRW_cache_image_plane_wire_get(), ob->obmat); | DRW_shgroup_call_add(grp, DRW_cache_image_plane_wire_get(), ob->obmat); | ||||
| } | } | ||||
| if (!BKE_object_empty_image_data_is_visible_in_view3d(ob, rv3d)) { | if (!BKE_object_empty_image_data_is_visible_in_view3d(ob, rv3d)) { | ||||
| return; | return; | ||||
| } | } | ||||
| if (tex && ((ob->color[3] > 0.0f) || !use_alpha_blend)) { | if (tex && ((ob->color[3] > 0.0f) || !use_alpha_blend)) { | ||||
| DRWShadingGroup *grp = DRW_shgroup_create(sh_data->object_empty_image, | DRWShadingGroup *grp = DRW_shgroup_create(sh_data->object_empty_image, | ||||
| (use_alpha_blend) ? sgl->image_empties : sgl->non_meshes); | (use_alpha_blend) ? sgl->image_empties : sgl->non_meshes); | ||||
| DRW_shgroup_uniform_float_copy(grp, "aspectX", image_aspect[0]); | DRW_shgroup_uniform_float_copy(grp, "aspectX", image_aspect[0]); | ||||
| DRW_shgroup_uniform_float_copy(grp, "aspectY", image_aspect[1]); | DRW_shgroup_uniform_float_copy(grp, "aspectY", image_aspect[1]); | ||||
| DRW_shgroup_uniform_int_copy(grp, "depthMode", ob->empty_image_depth); | DRW_shgroup_uniform_int_copy(grp, "depthMode", depth_mode); | ||||
| DRW_shgroup_uniform_float(grp, "size", &ob->empty_drawsize, 1); | DRW_shgroup_uniform_float(grp, "size", &ob->empty_drawsize, 1); | ||||
| DRW_shgroup_uniform_vec2(grp, "offset", ob->ima_ofs, 1); | DRW_shgroup_uniform_vec2(grp, "offset", ob->ima_ofs, 1); | ||||
| DRW_shgroup_uniform_texture(grp, "image", tex); | DRW_shgroup_uniform_texture(grp, "image", tex); | ||||
| DRW_shgroup_uniform_vec4(grp, "objectColor", ob->color, 1); | DRW_shgroup_uniform_vec4(grp, "objectColor", ob->color, 1); | ||||
| DRW_shgroup_uniform_bool_copy(grp, "useAlphaTest", !use_alpha_blend); | DRW_shgroup_uniform_bool_copy(grp, "useAlphaTest", !use_alpha_blend); | ||||
| if (sh_cfg == GPU_SHADER_CFG_CLIPPED) { | if (sh_cfg == GPU_SHADER_CFG_CLIPPED) { | ||||
| DRW_shgroup_world_clip_planes_from_rv3d(grp, DRW_context_state_get()->rv3d); | DRW_shgroup_world_clip_planes_from_rv3d(grp, DRW_context_state_get()->rv3d); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 2,443 Lines • Show Last 20 Lines | |||||