From 03ee897ae2290d867dfbaac6d9d33003997db976 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 Jun 2017 06:30:47 +0200 Subject: [PATCH] Try implementing core context version of XMB ribbon --- .../core_pipeline_xmb_ribbon.glsl.frag.h | 18 ++++++++++++++++++ gfx/drivers_shader/shader_glsl.c | 5 +++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 gfx/drivers/gl_shaders/core_pipeline_xmb_ribbon.glsl.frag.h diff --git a/gfx/drivers/gl_shaders/core_pipeline_xmb_ribbon.glsl.frag.h b/gfx/drivers/gl_shaders/core_pipeline_xmb_ribbon.glsl.frag.h new file mode 100644 index 0000000000..514854a570 --- /dev/null +++ b/gfx/drivers/gl_shaders/core_pipeline_xmb_ribbon.glsl.frag.h @@ -0,0 +1,18 @@ +#include "shaders_common.h" + +static const char *core_stock_fragment_xmb = GLSL( + uniform float time; + in vec3 fragVertexEc; + vec3 up = vec3(0, 0, 1); + out vec4 FragColor; + + void main() + { + vec3 X = dFdx(fragVertexEc); + vec3 Y = dFdy(fragVertexEc); + vec3 normal=normalize(cross(X,Y)); + float c = (1.0 - dot(normal, up)); + c = (1.0 - cos(c*c))/3.0; + FragColor = vec4(c, c, c, 1.0); + } +); diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index cff2cf800b..48b082823f 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -118,6 +118,7 @@ static const char *glsl_prefixes[] = { #include "../drivers/gl_shaders/core_alpha_blend.glsl.frag.h" #ifdef HAVE_SHADERPIPELINE +#include "../drivers/gl_shaders/core_pipeline_xmb_ribbon.glsl.frag.h" #include "../drivers/gl_shaders/legacy_pipeline_xmb_ribbon_simple.glsl.vert.h" #include "../drivers/gl_shaders/modern_pipeline_xmb_ribbon_simple.glsl.vert.h" #include "../drivers/gl_shaders/modern_pipeline_snow.glsl.vert.h" @@ -955,7 +956,7 @@ static void *gl_glsl_init(void *data, const char *path) if (gl_query_extension("GL_OES_standard_derivatives")) { shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_ribbon_modern : stock_vertex_xmb_ribbon_legacy; - shader_prog_info.fragment = stock_fragment_xmb; + shader_prog_info.fragment = glsl_core ? core_stock_fragment_xmb : stock_fragment_xmb; } else { @@ -964,7 +965,7 @@ static void *gl_glsl_init(void *data, const char *path) } #else shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_ribbon_modern : stock_vertex_xmb_ribbon_legacy; - shader_prog_info.fragment = stock_fragment_xmb; + shader_prog_info.fragment = glsl_core ? core_stock_fragment_xmb : stock_fragment_xmb; #endif shader_prog_info.is_file = false;