55 call_buffers_.ground_line_buf.clear();
56 call_buffers_.probe_cube_buf.clear();
57 call_buffers_.probe_planar_buf.clear();
58 call_buffers_.probe_grid_buf.clear();
59 call_buffers_.quad_solid_buf.clear();
60 call_buffers_.cube_buf.clear();
61 call_buffers_.sphere_buf.clear();
62 call_buffers_.single_arrow_buf.clear();
66 ps_dots_.shader_set(res.shaders->extra_grid.get());
69 ps_dots_.bind_texture(
"depth_buffer", &res.depth_tx);
71 res.select_bind(ps_dots_);
83 const Object *ob = ob_ref.object;
88 const bool show_data = (ob_ref.object->base_flag &
BASE_SELECTED) || res.is_selection();
90 const select::ID select_id = res.select_id(ob_ref);
94 float &clip_start = matrix[2].w;
95 float &clip_end = matrix[3].w;
96 float &draw_size = matrix[3].w;
100 clip_start = show_clipping ? prb.clipsta : -1.0;
101 clip_end = show_clipping ? prb.clipend : -1.0;
102 call_buffers_.probe_cube_buf.append(
data, select_id);
104 call_buffers_.ground_line_buf.append(
float4(matrix.
location(), 0.0f), select_id);
106 if (show_influence) {
108 call_buffers_.cube_buf :
109 call_buffers_.sphere_buf;
110 const float f = 1.0f - prb.falloff;
113 data.object_to_world[3].w = prb.distinf * f;
119 call_buffers_.cube_buf :
120 call_buffers_.sphere_buf;
127 clip_start = show_clipping ? 0.0f : -1.0f;
128 clip_end = show_clipping ? prb.clipend : -1.0f;
129 call_buffers_.probe_grid_buf.append(
data, select_id);
134 float3 local_surfel_size = (0.5f / prb.grid_surfel_density) * (max_axis_len / axes_len);
137 float3(-1.0f + local_surfel_size),
139 float3(local_surfel_size));
140 surfel_density_mat = ob->object_to_world() * surfel_density_mat;
145 if (show_influence) {
152 matrix[0].w = prb.grid_resolution_x;
153 matrix[1].w = prb.grid_resolution_y;
154 matrix[2].w = prb.grid_resolution_z;
156 matrix[3].w = res.object_wire_theme_id(ob_ref,
state) ==
TH_ACTIVE ? 1.0f : 2.0f;
158 const uint cell_count = prb.grid_resolution_x * prb.grid_resolution_y *
159 prb.grid_resolution_z;
160 ps_dots_.push_constant(
"grid_model_matrix", matrix);
166 call_buffers_.probe_planar_buf.append(
data, select_id);
169 call_buffers_.quad_solid_buf.append(
data, select_id);
172 if (show_influence) {
174 call_buffers_.cube_buf.append(
data, select_id);
175 matrix.
z_axis() *= 1.0f - prb.falloff;
176 call_buffers_.cube_buf.append(
data, select_id);
180 call_buffers_.cube_buf.append(
data, select_id);
184 call_buffers_.single_arrow_buf.append(
data, select_id);
198 res.select_bind(ps_);
205 sub_pass.
shader_set(res.shaders->extra_shape.get());
206 call_buffers_.probe_cube_buf.end_sync(sub_pass, res.shapes.lightprobe_cube.get());
207 call_buffers_.probe_planar_buf.end_sync(sub_pass, res.shapes.lightprobe_planar.get());
208 call_buffers_.probe_grid_buf.end_sync(sub_pass, res.shapes.lightprobe_grid.get());
209 call_buffers_.quad_solid_buf.end_sync(sub_pass, res.shapes.quad_solid.get());
210 call_buffers_.cube_buf.end_sync(sub_pass, res.shapes.cube.get());
211 call_buffers_.sphere_buf.end_sync(sub_pass, res.shapes.empty_sphere.get());
212 call_buffers_.single_arrow_buf.end_sync(sub_pass, res.shapes.single_arrow.get());
217 sub_pass.
shader_set(res.shaders->extra_ground_line.get());
218 call_buffers_.ground_line_buf.end_sync(sub_pass, res.shapes.ground_line.get());