3D Grid: Use View UBO & small cleanup
This commit is contained in:
parent
7c9e649015
commit
d2520511d2
|
@ -88,6 +88,7 @@ extern char datatoc_object_particle_prim_vert_glsl[];
|
|||
extern char datatoc_object_particle_dot_vert_glsl[];
|
||||
extern char datatoc_object_particle_dot_frag_glsl[];
|
||||
extern char datatoc_common_globals_lib_glsl[];
|
||||
extern char datatoc_common_view_lib_glsl[];
|
||||
extern char datatoc_common_fxaa_lib_glsl[];
|
||||
extern char datatoc_gpu_shader_flat_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_flat_id_frag_glsl[];
|
||||
|
@ -331,7 +332,6 @@ static struct {
|
|||
|
||||
OBJECT_Shaders sh_data[GPU_SHADER_CFG_LEN];
|
||||
|
||||
float camera_pos[3];
|
||||
float grid_settings[5];
|
||||
float grid_mesh_size;
|
||||
int grid_flag;
|
||||
|
@ -474,11 +474,16 @@ static void OBJECT_engine_init(void *vedata)
|
|||
}
|
||||
|
||||
/* Grid */
|
||||
sh_data->grid = DRW_shader_create_with_lib(datatoc_object_grid_vert_glsl,
|
||||
NULL,
|
||||
datatoc_object_grid_frag_glsl,
|
||||
datatoc_common_globals_lib_glsl,
|
||||
NULL);
|
||||
sh_data->grid = GPU_shader_create_from_arrays({
|
||||
.vert = (const char *[]){datatoc_common_globals_lib_glsl,
|
||||
datatoc_common_view_lib_glsl,
|
||||
datatoc_object_grid_vert_glsl,
|
||||
NULL},
|
||||
.frag = (const char *[]){datatoc_common_globals_lib_glsl,
|
||||
datatoc_common_view_lib_glsl,
|
||||
datatoc_object_grid_frag_glsl,
|
||||
NULL},
|
||||
});
|
||||
|
||||
/* Particles */
|
||||
sh_data->part_prim = DRW_shader_create(datatoc_object_particle_prim_vert_glsl,
|
||||
|
@ -530,9 +535,6 @@ static void OBJECT_engine_init(void *vedata)
|
|||
DRW_viewport_matrix_get(invwinmat, DRW_MAT_WININV);
|
||||
DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV);
|
||||
|
||||
/* Setup camera pos */
|
||||
copy_v3_v3(e_data.camera_pos, invviewmat[3]);
|
||||
|
||||
/* if perps */
|
||||
if (winmat[3][3] == 0.0f) {
|
||||
float fov;
|
||||
|
@ -604,8 +606,9 @@ static void OBJECT_engine_init(void *vedata)
|
|||
if (((rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO)) && show_axis_z) {
|
||||
e_data.zpos_flag = SHOW_AXIS_Z;
|
||||
|
||||
float zvec[4] = {0.0f, 0.0f, -1.0f, 0.0f};
|
||||
mul_m4_v4(invviewmat, zvec);
|
||||
float zvec[3], campos[3];
|
||||
negate_v3_v3(zvec, invviewmat[2]);
|
||||
copy_v3_v3(campos, invviewmat[3]);
|
||||
|
||||
/* z axis : chose the most facing plane */
|
||||
if (fabsf(zvec[0]) < fabsf(zvec[1])) {
|
||||
|
@ -619,7 +622,7 @@ static void OBJECT_engine_init(void *vedata)
|
|||
|
||||
/* Persp : If camera is below floor plane, we switch clipping
|
||||
* Ortho : If eye vector is looking up, we switch clipping */
|
||||
if (((winmat[3][3] == 0.0f) && (e_data.camera_pos[2] > 0.0f)) ||
|
||||
if (((winmat[3][3] == 0.0f) && (campos[2] > 0.0f)) ||
|
||||
((winmat[3][3] != 0.0f) && (zvec[2] < 0.0f))) {
|
||||
e_data.zpos_flag |= CLIP_ZPOS;
|
||||
e_data.zneg_flag |= CLIP_ZNEG;
|
||||
|
@ -1179,7 +1182,6 @@ static void OBJECT_cache_init(void *vedata)
|
|||
DRWShadingGroup *grp = DRW_shgroup_create(sh_data->grid, psl->grid);
|
||||
DRW_shgroup_uniform_int(grp, "gridFlag", &e_data.zneg_flag, 1);
|
||||
DRW_shgroup_uniform_vec3(grp, "planeAxes", e_data.zplane_axes, 1);
|
||||
DRW_shgroup_uniform_vec3(grp, "cameraPos", e_data.camera_pos, 1);
|
||||
DRW_shgroup_uniform_vec4(grp, "gridSettings", e_data.grid_settings, 1);
|
||||
DRW_shgroup_uniform_float_copy(grp, "lineKernel", grid_line_size);
|
||||
DRW_shgroup_uniform_float_copy(grp, "meshSize", e_data.grid_mesh_size);
|
||||
|
|
|
@ -8,9 +8,6 @@ in vec3 local_pos;
|
|||
|
||||
out vec4 FragColor;
|
||||
|
||||
uniform mat4 ProjectionMatrix;
|
||||
uniform mat4 ViewMatrixInverse;
|
||||
uniform vec3 cameraPos;
|
||||
uniform vec3 planeAxes;
|
||||
uniform vec4 gridSettings;
|
||||
uniform float meshSize;
|
||||
|
@ -23,6 +20,8 @@ uniform sampler2D depthBuffer;
|
|||
#define gridScale gridSettings.z
|
||||
#define gridSubdiv gridSettings.w
|
||||
|
||||
#define cameraPos (ViewMatrixInverse[3].xyz)
|
||||
|
||||
uniform int gridFlag;
|
||||
|
||||
#define AXIS_X (1 << 0)
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
/* Infinite grid
|
||||
* Clément Foucault */
|
||||
|
||||
uniform mat4 ViewProjectionMatrix;
|
||||
uniform mat4 ProjectionMatrix;
|
||||
uniform vec3 cameraPos;
|
||||
uniform vec3 planeAxes;
|
||||
uniform vec4 gridSettings;
|
||||
uniform float meshSize;
|
||||
|
@ -16,6 +13,8 @@ uniform float meshSize;
|
|||
|
||||
uniform int gridFlag;
|
||||
|
||||
#define cameraPos (ViewMatrixInverse[3].xyz)
|
||||
|
||||
#define PLANE_XY (1 << 4)
|
||||
#define PLANE_XZ (1 << 5)
|
||||
#define PLANE_YZ (1 << 6)
|
||||
|
|
Loading…
Reference in New Issue