GPU shaders / Clay engine : small renaming / cleanup
This commit is contained in:
parent
737d349dbc
commit
24703c97a1
|
@ -113,12 +113,13 @@ static DRWShadingGroup *shgroup_groundpoints_uniform_color(DRWPass *pass, float
|
|||
return grp;
|
||||
}
|
||||
|
||||
static DRWShadingGroup *shgroup_lamp(DRWPass *pass, struct Batch *geom, float *size)
|
||||
static DRWShadingGroup *shgroup_instance_screenspace(DRWPass *pass, struct Batch *geom, float *size)
|
||||
{
|
||||
GPUShader *sh = GPU_shader_get_builtin_shader(GPU_SHADER_3D_LAMP_COMMON);
|
||||
GPUShader *sh = GPU_shader_get_builtin_shader(GPU_SHADER_3D_SCREENSPACE_VARIYING_COLOR
|
||||
);
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_instance_create(sh, pass, geom);
|
||||
DRW_shgroup_attrib_float(grp, "lamp_pos", 3);
|
||||
DRW_shgroup_attrib_float(grp, "world_pos", 3);
|
||||
DRW_shgroup_attrib_float(grp, "color", 3);
|
||||
DRW_shgroup_uniform_float(grp, "size", size, 1);
|
||||
DRW_shgroup_uniform_float(grp, "pixel_size", DRW_viewport_pixelsize_get(), 1);
|
||||
|
@ -128,7 +129,7 @@ static DRWShadingGroup *shgroup_lamp(DRWPass *pass, struct Batch *geom, float *s
|
|||
return grp;
|
||||
}
|
||||
|
||||
static DRWShadingGroup *shgroup_empty(DRWPass *pass, struct Batch *geom)
|
||||
static DRWShadingGroup *shgroup_instance(DRWPass *pass, struct Batch *geom)
|
||||
{
|
||||
GPUShader *sh_inst = GPU_shader_get_builtin_shader(GPU_SHADER_INSTANCE_VARIYING_COLOR_VARIYING_SIZE);
|
||||
|
||||
|
@ -144,9 +145,6 @@ static DRWShadingGroup *shgroup_empty(DRWPass *pass, struct Batch *geom)
|
|||
* The passes are populated by the rendering engine using the DRW_shgroup_* functions. */
|
||||
void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPass **non_meshes, DRWPass **ob_center)
|
||||
{
|
||||
/* Theses are defined for the whole application so make sure they rely on global settings */
|
||||
|
||||
|
||||
UI_GetThemeColor4fv(TH_WIRE, colorWire);
|
||||
UI_GetThemeColor4fv(TH_WIRE_EDIT, colorWireEdit);
|
||||
UI_GetThemeColor4fv(TH_ACTIVE, colorActive);
|
||||
|
@ -189,28 +187,28 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa
|
|||
|
||||
/* Empties */
|
||||
geom = DRW_cache_plain_axes_get();
|
||||
plain_axes = shgroup_empty(*non_meshes, geom);
|
||||
plain_axes = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_cube_get();
|
||||
cube = shgroup_empty(*non_meshes, geom);
|
||||
cube = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_circle_get();
|
||||
circle = shgroup_empty(*non_meshes, geom);
|
||||
circle = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_empty_sphere_get();
|
||||
sphere = shgroup_empty(*non_meshes, geom);
|
||||
sphere = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_empty_cone_get();
|
||||
cone = shgroup_empty(*non_meshes, geom);
|
||||
cone = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_single_arrow_get();
|
||||
single_arrow = shgroup_empty(*non_meshes, geom);
|
||||
single_arrow = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_single_line_get();
|
||||
single_arrow_line = shgroup_empty(*non_meshes, geom);
|
||||
single_arrow_line = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
geom = DRW_cache_single_arrow_get();
|
||||
arrows = shgroup_empty(*non_meshes, geom);
|
||||
arrows = shgroup_instance(*non_meshes, geom);
|
||||
|
||||
/* Lamps */
|
||||
lampCenterSize = (U.obcenter_dia + 1.5f) * U.pixelsize;
|
||||
|
@ -223,11 +221,11 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa
|
|||
lamp_center_group = shgroup_dynpoints_uniform_color(*non_meshes, colorGroup, &lampCenterSize);
|
||||
|
||||
geom = DRW_cache_lamp_get();
|
||||
lamp_circle = shgroup_lamp(*non_meshes, geom, &lampCircleRad);
|
||||
lamp_circle_shadow = shgroup_lamp(*non_meshes, geom, &lampCircleShadowRad);
|
||||
lamp_circle = shgroup_instance_screenspace(*non_meshes, geom, &lampCircleRad);
|
||||
lamp_circle_shadow = shgroup_instance_screenspace(*non_meshes, geom, &lampCircleShadowRad);
|
||||
|
||||
geom = DRW_cache_lamp_sunrays_get();
|
||||
lamp_sunrays = shgroup_lamp(*non_meshes, geom, &lampCircleRad);
|
||||
lamp_sunrays = shgroup_instance_screenspace(*non_meshes, geom, &lampCircleRad);
|
||||
|
||||
lamp_groundline = shgroup_groundlines_uniform_color(*non_meshes, colorLamp);
|
||||
lamp_groundpoint = shgroup_groundpoints_uniform_color(*non_meshes, colorLamp);
|
||||
|
|
|
@ -153,14 +153,14 @@ data_to_c_simple(shaders/gpu_shader_3D_vert.glsl SRC)
|
|||
data_to_c_simple(shaders/gpu_shader_3D_flat_color_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_smooth_color_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_smooth_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_passthrough_vert.glsl SRC)
|
||||
|
||||
data_to_c_simple(shaders/gpu_shader_instance_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_instance_screenspace_variying_color_vert.glsl SRC)
|
||||
|
||||
data_to_c_simple(shaders/gpu_shader_3D_groundpoint_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_groundline_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_groundline_geom.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_lamp_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_3D_groundpoint_vert.glsl SRC)
|
||||
|
||||
data_to_c_simple(shaders/gpu_shader_point_uniform_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_point_uniform_color_smooth_frag.glsl SRC)
|
||||
|
|
|
@ -137,7 +137,7 @@ typedef enum GPUBuiltinShader {
|
|||
/* lamp drawing */
|
||||
GPU_SHADER_3D_GROUNDPOINT,
|
||||
GPU_SHADER_3D_GROUNDLINE,
|
||||
GPU_SHADER_3D_LAMP_COMMON,
|
||||
GPU_SHADER_3D_SCREENSPACE_VARIYING_COLOR,
|
||||
/* instance */
|
||||
GPU_SHADER_INSTANCE_UNIFORM_COLOR,
|
||||
GPU_SHADER_INSTANCE_VARIYING_COLOR_VARIYING_SIZE,
|
||||
|
|
|
@ -70,14 +70,14 @@ extern char datatoc_gpu_shader_3D_vert_glsl[];
|
|||
extern char datatoc_gpu_shader_3D_flat_color_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_smooth_color_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_smooth_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_passthrough_vert_glsl[];
|
||||
|
||||
extern char datatoc_gpu_shader_instance_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_instance_variying_size_variying_color_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_instance_screenspace_variying_color_vert_glsl[];
|
||||
|
||||
extern char datatoc_gpu_shader_3D_groundpoint_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_groundline_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_groundline_geom_glsl[];
|
||||
extern char datatoc_gpu_shader_3D_lamp_vert_glsl[];
|
||||
|
||||
extern char datatoc_gpu_shader_point_uniform_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_point_uniform_color_smooth_frag_glsl[];
|
||||
|
@ -693,12 +693,12 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader)
|
|||
[GPU_SHADER_3D_DEPTH_ONLY] = { datatoc_gpu_shader_3D_vert_glsl, datatoc_gpu_shader_depth_only_frag_glsl },
|
||||
|
||||
[GPU_SHADER_3D_GROUNDPOINT] = { datatoc_gpu_shader_3D_groundpoint_vert_glsl, datatoc_gpu_shader_point_uniform_color_frag_glsl },
|
||||
[GPU_SHADER_3D_GROUNDLINE] = { datatoc_gpu_shader_3D_groundline_vert_glsl,
|
||||
[GPU_SHADER_3D_GROUNDLINE] = { datatoc_gpu_shader_3D_passthrough_vert_glsl,
|
||||
datatoc_gpu_shader_uniform_color_frag_glsl,
|
||||
datatoc_gpu_shader_3D_groundline_geom_glsl },
|
||||
|
||||
[GPU_SHADER_3D_LAMP_COMMON] = { datatoc_gpu_shader_3D_lamp_vert_glsl,
|
||||
datatoc_gpu_shader_flat_color_frag_glsl},
|
||||
[GPU_SHADER_3D_SCREENSPACE_VARIYING_COLOR] = { datatoc_gpu_shader_instance_screenspace_variying_color_vert_glsl,
|
||||
datatoc_gpu_shader_flat_color_frag_glsl},
|
||||
|
||||
[GPU_SHADER_2D_POINT_FIXED_SIZE_UNIFORM_COLOR] =
|
||||
{ datatoc_gpu_shader_2D_vert_glsl, datatoc_gpu_shader_point_uniform_color_frag_glsl },
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
/* Make to be used with dynamic batching so no Model Matrix needed */
|
||||
/* Made to be used with dynamic batching so no Model Matrix needed */
|
||||
uniform mat4 ViewProjectionMatrix;
|
||||
|
||||
in vec3 pos;
|
||||
|
|
|
@ -4,8 +4,11 @@ uniform vec3 screen_vecs[2];
|
|||
uniform float size;
|
||||
uniform float pixel_size;
|
||||
|
||||
/* ---- Instanciated Attribs ---- */
|
||||
in vec2 pos;
|
||||
in vec3 lamp_pos;
|
||||
|
||||
/* ---- Per instance Attribs ---- */
|
||||
in vec3 world_pos;
|
||||
in vec3 color;
|
||||
|
||||
flat out vec4 finalColor;
|
||||
|
@ -19,8 +22,8 @@ float mul_project_m4_v3_zfac(in vec3 co)
|
|||
|
||||
void main()
|
||||
{
|
||||
float pix_size = mul_project_m4_v3_zfac(lamp_pos) * pixel_size;
|
||||
float pix_size = mul_project_m4_v3_zfac(world_pos) * pixel_size;
|
||||
vec3 screen_pos = screen_vecs[0].xyz * pos.x + screen_vecs[1].xyz * pos.y;
|
||||
gl_Position = ViewProjectionMatrix * vec4(lamp_pos + screen_pos * size * pix_size, 1.0);
|
||||
gl_Position = ViewProjectionMatrix * vec4(world_pos + screen_pos * size * pix_size, 1.0);
|
||||
finalColor = vec4(color, 1.0);
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
|
||||
uniform mat4 ViewProjectionMatrix;
|
||||
|
||||
/* ---- Instanciated Attribs ---- */
|
||||
in vec3 pos;
|
||||
/* Instance attrib */
|
||||
|
||||
/* ---- Per instance Attribs ---- */
|
||||
in mat4 InstanceModelMatrix;
|
||||
in vec3 color;
|
||||
in float size;
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
|
||||
uniform mat4 ViewProjectionMatrix;
|
||||
|
||||
/* ---- Instanciated Attribs ---- */
|
||||
in vec3 pos;
|
||||
|
||||
/* ---- Per instance Attribs ---- */
|
||||
in mat4 InstanceModelMatrix;
|
||||
|
||||
void main()
|
||||
|
|
Loading…
Reference in New Issue