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);
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to