diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-02-11 23:15:46 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-02-11 23:15:46 +0300 |
commit | 24703c97a15dc5c071d768274d3ebdcd4b4a7324 (patch) | |
tree | 7c1006776c7abe2297a13f855b11962f159840e1 /source/blender | |
parent | 737d349dbce972459df5db03bf861c28604c3826 (diff) |
GPU shaders / Clay engine : small renaming / cleanup
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/intern/draw_mode_pass.c | 34 | ||||
-rw-r--r-- | source/blender/gpu/CMakeLists.txt | 6 | ||||
-rw-r--r-- | source/blender/gpu/GPU_shader.h | 2 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_shader.c | 10 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_3D_groundpoint_vert.glsl | 2 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_3D_passthrough_vert.glsl (renamed from source/blender/gpu/shaders/gpu_shader_3D_groundline_vert.glsl) | 0 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_instance_screenspace_variying_color_vert.glsl (renamed from source/blender/gpu/shaders/gpu_shader_3D_lamp_vert.glsl) | 9 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl | 4 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_instance_vert.glsl | 3 |
9 files changed, 38 insertions, 32 deletions
diff --git a/source/blender/draw/intern/draw_mode_pass.c b/source/blender/draw/intern/draw_mode_pass.c index a5b2d0a09ca..0298db1a5ca 100644 --- a/source/blender/draw/intern/draw_mode_pass.c +++ b/source/blender/draw/intern/draw_mode_pass.c @@ -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); diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index 72a54712201..8709446bc7b 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -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) diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h index b129c619953..0aa93e7322b 100644 --- a/source/blender/gpu/GPU_shader.h +++ b/source/blender/gpu/GPU_shader.h @@ -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, diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c index 491a28e168f..cc58050dc5d 100644 --- a/source/blender/gpu/intern/gpu_shader.c +++ b/source/blender/gpu/intern/gpu_shader.c @@ -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 }, diff --git a/source/blender/gpu/shaders/gpu_shader_3D_groundpoint_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_groundpoint_vert.glsl index be6b6014a19..55f410eb25d 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_groundpoint_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_groundpoint_vert.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; diff --git a/source/blender/gpu/shaders/gpu_shader_3D_groundline_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_passthrough_vert.glsl index 60793bf56b6..60793bf56b6 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_groundline_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_passthrough_vert.glsl diff --git a/source/blender/gpu/shaders/gpu_shader_3D_lamp_vert.glsl b/source/blender/gpu/shaders/gpu_shader_instance_screenspace_variying_color_vert.glsl index c7ccaf8170c..ba0ac29fb79 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_lamp_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_instance_screenspace_variying_color_vert.glsl @@ -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); } diff --git a/source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl b/source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl index 8ea6a979873..9ade68644fe 100644 --- a/source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl @@ -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; diff --git a/source/blender/gpu/shaders/gpu_shader_instance_vert.glsl b/source/blender/gpu/shaders/gpu_shader_instance_vert.glsl index 7eb321f2996..eac167e8045 100644 --- a/source/blender/gpu/shaders/gpu_shader_instance_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_instance_vert.glsl @@ -1,7 +1,10 @@ uniform mat4 ViewProjectionMatrix; +/* ---- Instanciated Attribs ---- */ in vec3 pos; + +/* ---- Per instance Attribs ---- */ in mat4 InstanceModelMatrix; void main() |