Commit: 1b5b899228bd63e34dd1c35ada8e0408983b8f38 Author: Mike Erwin Date: Tue Sep 13 02:51:38 2016 -0400 Branches: blender2.8 https://developer.blender.org/rB1b5b899228bd63e34dd1c35ada8e0408983b8f38
OpenGL: add built-in GPU_SHADER_3D_DEPTH_ONLY We’re discussing several techniques that require a depth pre-pass. =================================================================== M source/blender/gpu/CMakeLists.txt M source/blender/gpu/GPU_shader.h M source/blender/gpu/intern/gpu_shader.c R100 source/blender/gpu/shaders/gpu_shader_2D_uniform_color_vert.glsl source/blender/gpu/shaders/gpu_shader_2D_no_color_vert.glsl R100 source/blender/gpu/shaders/gpu_shader_3D_uniform_color_vert.glsl source/blender/gpu/shaders/gpu_shader_3D_no_color_vert.glsl A source/blender/gpu/shaders/gpu_shader_depth_only_frag.glsl =================================================================== diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index 99ce3eb..50c2db2 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -113,13 +113,14 @@ set(SRC intern/gpu_private.h ) +data_to_c_simple(shaders/gpu_shader_depth_only_frag.glsl SRC) data_to_c_simple(shaders/gpu_shader_uniform_color_frag.glsl SRC) data_to_c_simple(shaders/gpu_shader_flat_color_frag.glsl SRC) -data_to_c_simple(shaders/gpu_shader_2D_uniform_color_vert.glsl SRC) +data_to_c_simple(shaders/gpu_shader_2D_no_color_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_2D_flat_color_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_2D_smooth_color_vert.glsl SRC) data_to_c_simple(shaders/gpu_shader_2D_smooth_color_frag.glsl SRC) -data_to_c_simple(shaders/gpu_shader_3D_uniform_color_vert.glsl SRC) +data_to_c_simple(shaders/gpu_shader_3D_no_color_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) diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h index 367e134..2a1c5e0 100644 --- a/source/blender/gpu/GPU_shader.h +++ b/source/blender/gpu/GPU_shader.h @@ -98,6 +98,7 @@ typedef enum GPUBuiltinShader { GPU_SHADER_3D_UNIFORM_COLOR, GPU_SHADER_3D_FLAT_COLOR, GPU_SHADER_3D_SMOOTH_COLOR, + GPU_SHADER_3D_DEPTH_ONLY, } GPUBuiltinShader; GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader); diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c index c95c427..9fe3c3a 100644 --- a/source/blender/gpu/intern/gpu_shader.c +++ b/source/blender/gpu/intern/gpu_shader.c @@ -46,13 +46,14 @@ #define MAX_EXT_DEFINE_LENGTH 1024 /* Non-generated shaders */ +extern char datatoc_gpu_shader_depth_only_frag_glsl[]; extern char datatoc_gpu_shader_uniform_color_frag_glsl[]; extern char datatoc_gpu_shader_flat_color_frag_glsl[]; -extern char datatoc_gpu_shader_2D_uniform_color_vert_glsl[]; +extern char datatoc_gpu_shader_2D_no_color_vert_glsl[]; extern char datatoc_gpu_shader_2D_flat_color_vert_glsl[]; extern char datatoc_gpu_shader_2D_smooth_color_vert_glsl[]; extern char datatoc_gpu_shader_2D_smooth_color_frag_glsl[]; -extern char datatoc_gpu_shader_3D_uniform_color_vert_glsl[]; +extern char datatoc_gpu_shader_3D_no_color_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[]; @@ -90,6 +91,7 @@ static struct GPUShadersGlobal { GPUShader *uniform_color_3D; GPUShader *flat_color_3D; GPUShader *smooth_color_3D; + GPUShader *depth_only_3D; } shaders; } GG = {{NULL}}; @@ -625,7 +627,7 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader) case GPU_SHADER_2D_UNIFORM_COLOR: if (!GG.shaders.uniform_color_2D) GG.shaders.uniform_color_2D = GPU_shader_create( - datatoc_gpu_shader_2D_uniform_color_vert_glsl, + datatoc_gpu_shader_2D_no_color_vert_glsl, datatoc_gpu_shader_uniform_color_frag_glsl, NULL, NULL, NULL, 0, 0, 0); retval = GG.shaders.uniform_color_2D; @@ -649,7 +651,7 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader) case GPU_SHADER_3D_UNIFORM_COLOR: if (!GG.shaders.uniform_color_3D) GG.shaders.uniform_color_3D = GPU_shader_create( - datatoc_gpu_shader_3D_uniform_color_vert_glsl, + datatoc_gpu_shader_3D_no_color_vert_glsl, datatoc_gpu_shader_uniform_color_frag_glsl, NULL, NULL, NULL, 0, 0, 0); retval = GG.shaders.uniform_color_3D; @@ -670,6 +672,14 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader) NULL, NULL, NULL, 0, 0, 0); retval = GG.shaders.smooth_color_3D; break; + case GPU_SHADER_3D_DEPTH_ONLY: + if (!GG.shaders.depth_only_3D) + GG.shaders.depth_only_3D = GPU_shader_create( + datatoc_gpu_shader_3D_no_color_vert_glsl, + datatoc_gpu_shader_depth_only_frag_glsl, + NULL, NULL, NULL, 0, 0, 0); + retval = GG.shaders.depth_only_3D; + break; } if (retval == NULL) diff --git a/source/blender/gpu/shaders/gpu_shader_2D_uniform_color_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_no_color_vert.glsl similarity index 100% rename from source/blender/gpu/shaders/gpu_shader_2D_uniform_color_vert.glsl rename to source/blender/gpu/shaders/gpu_shader_2D_no_color_vert.glsl diff --git a/source/blender/gpu/shaders/gpu_shader_3D_uniform_color_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_no_color_vert.glsl similarity index 100% rename from source/blender/gpu/shaders/gpu_shader_3D_uniform_color_vert.glsl rename to source/blender/gpu/shaders/gpu_shader_3D_no_color_vert.glsl diff --git a/source/blender/gpu/shaders/gpu_shader_depth_only_frag.glsl b/source/blender/gpu/shaders/gpu_shader_depth_only_frag.glsl new file mode 100644 index 0000000..60e71e1 --- /dev/null +++ b/source/blender/gpu/shaders/gpu_shader_depth_only_frag.glsl @@ -0,0 +1,6 @@ + +void main() +{ + // no color output, only depth (line below is implicit) + // gl_FragDepth = gl_FragCoord.z; +} _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs