[Bf-blender-cvs] [97f90d48a02] blender2.8: Object Mode: Change Lightprobe display.

Clément Foucault noreply at git.blender.org
Tue Jul 10 15:40:45 CEST 2018


Commit: 97f90d48a02eef89949532b166f57ea178ee5a87
Author: Clément Foucault
Date:   Tue Jul 10 14:46:36 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB97f90d48a02eef89949532b166f57ea178ee5a87

Object Mode: Change Lightprobe display.

===================================================================

M	source/blender/draw/modes/object_mode.c
M	source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl

===================================================================

diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 359b4eb77e4..2ac16906102 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -908,7 +908,7 @@ static void OBJECT_cache_init(void *vedata)
 	}
 
 	{
-		DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL;
+		DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_POINT;
 		DRWPass *pass = psl->lightprobes = DRW_pass_create("Object Probe Pass", state);
 		struct Gwn_Batch *sphere = DRW_cache_sphere_get();
 		struct Gwn_Batch *quad = DRW_cache_quad_get();
@@ -1785,8 +1785,7 @@ static void DRW_shgroup_lightprobe(OBJECT_StorageList *stl, OBJECT_PassList *psl
 			DRW_shgroup_uniform_vec3(grp, "increment_y", prb_data->increment_y, 1);
 			DRW_shgroup_uniform_vec3(grp, "increment_z", prb_data->increment_z, 1);
 			DRW_shgroup_uniform_ivec3(grp, "grid_resolution", &prb->grid_resolution_x, 1);
-			DRW_shgroup_uniform_float(grp, "sphere_size", &prb->data_draw_size, 1);
-			DRW_shgroup_call_instances_add(grp, DRW_cache_sphere_get(), NULL, &prb_data->cell_count);
+			DRW_shgroup_call_procedural_points_add(grp, prb_data->cell_count, NULL);
 		}
 		else if (prb->type == LIGHTPROBE_TYPE_CUBE) {
 			prb_data->draw_size = prb->data_draw_size * 0.1f;
@@ -1794,6 +1793,9 @@ static void DRW_shgroup_lightprobe(OBJECT_StorageList *stl, OBJECT_PassList *psl
 			copy_v3_v3(prb_data->probe_cube_mat[3], ob->obmat[3]);
 
 			DRWShadingGroup *grp = shgroup_theme_id_to_probe_cube_outline_shgrp(stl, theme_id);
+			/* TODO remove or change the drawing of the cube probes. Theses line draws nothing on purpose
+			 * to keep the call ids correct. */
+			zero_m4(prb_data->probe_cube_mat);
 			DRW_shgroup_call_dynamic_add(grp, call_id, &prb_data->draw_size, prb_data->probe_cube_mat);
 		}
 		else {
diff --git a/source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl b/source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl
index d9616076dbf..bcdf5adca55 100644
--- a/source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl
+++ b/source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl
@@ -1,7 +1,4 @@
 
-in vec3 pos;
-in vec3 nor;
-
 uniform mat4 ViewProjectionMatrix;
 
 uniform float sphere_size;
@@ -10,6 +7,7 @@ uniform vec3 corner;
 uniform vec3 increment_x;
 uniform vec3 increment_y;
 uniform vec3 increment_z;
+uniform vec3 screen_vecs[2];
 
 uniform int call_id; /* we don't want the builtin callId which would be 0. */
 uniform int baseId;
@@ -20,16 +18,17 @@ void main()
 {
 	vec3 ls_cell_location;
 	/* Keep in sync with update_irradiance_probe */
-	ls_cell_location.z = float(gl_InstanceID % grid_resolution.z);
-	ls_cell_location.y = float((gl_InstanceID / grid_resolution.z) % grid_resolution.y);
-	ls_cell_location.x = float(gl_InstanceID / (grid_resolution.z * grid_resolution.y));
+	ls_cell_location.z = float(gl_VertexID % grid_resolution.z);
+	ls_cell_location.y = float((gl_VertexID / grid_resolution.z) % grid_resolution.y);
+	ls_cell_location.x = float(gl_VertexID / (grid_resolution.z * grid_resolution.y));
 
 	vec3 ws_cell_location = corner +
 	    (increment_x * ls_cell_location.x +
 	     increment_y * ls_cell_location.y +
 	     increment_z * ls_cell_location.z);
 
-	gl_Position = ViewProjectionMatrix * vec4(pos * 0.02 * sphere_size + ws_cell_location, 1.0);
+	gl_Position = ViewProjectionMatrix * vec4(ws_cell_location, 1.0);
+	gl_PointSize = 2.0f;
 
 	finalId = uint(baseId + call_id);
 }



More information about the Bf-blender-cvs mailing list