From 3dede60384d0c404fc4c3917c5668e04d0e4b96c Mon Sep 17 00:00:00 2001 From: "John R. Bradley" Date: Sat, 23 May 2015 01:59:32 -0500 Subject: [PATCH] libobs-opengl: Add handling of Load(float3) w/ texelFetch --- libobs-opengl/gl-shaderparser.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libobs-opengl/gl-shaderparser.c b/libobs-opengl/gl-shaderparser.c index 1b6666081..39f7f9f4a 100644 --- a/libobs-opengl/gl-shaderparser.c +++ b/libobs-opengl/gl-shaderparser.c @@ -336,6 +336,8 @@ static bool gl_write_texture_code(struct gl_shader_parser *glsp, if (!cf_token_is(cfp, ".")) return false; if (!cf_next_token(cfp)) return false; + const char *function_end = ")"; + if (cf_token_is(cfp, "Sample")) written = gl_write_texture_call(glsp, var, "texture", true); else if (cf_token_is(cfp, "SampleBias")) @@ -344,6 +346,11 @@ static bool gl_write_texture_code(struct gl_shader_parser *glsp, written = gl_write_texture_call(glsp, var, "textureGrad", true); else if (cf_token_is(cfp, "SampleLevel")) written = gl_write_texture_call(glsp, var, "textureLod", true); + else if (cf_token_is(cfp, "Load")) { + written = gl_write_texture_call(glsp, var, "texelFetch", false); + dstr_cat(&glsp->gl_string, "("); + function_end = ").xy, 0)"; + } if (!written) return false; @@ -351,7 +358,7 @@ static bool gl_write_texture_code(struct gl_shader_parser *glsp, if (!cf_next_token(cfp)) return false; gl_write_function_contents(glsp, &cfp->cur_token, ")"); - dstr_cat(&glsp->gl_string, ")"); + dstr_cat(&glsp->gl_string, function_end); *p_token = cfp->cur_token; return true;