Explorar o código

libobs/graphics: Add int vector support to shaders

John Bradley %!s(int64=10) %!d(string=hai) anos
pai
achega
431a02459d

+ 6 - 0
libobs-opengl/gl-shaderparser.c

@@ -63,6 +63,12 @@ static bool gl_write_type_n(struct gl_shader_parser *glsp,
 		dstr_cat(&glsp->gl_string, "vec3");
 	else if (cmp_type(type, len, "float4", 6) == 0)
 		dstr_cat(&glsp->gl_string, "vec4");
+	else if (cmp_type(type, len, "int2", 4) == 0)
+		dstr_cat(&glsp->gl_string, "ivec2");
+	else if (cmp_type(type, len, "int3", 4) == 0)
+		dstr_cat(&glsp->gl_string, "ivec3");
+	else if (cmp_type(type, len, "int4", 4) == 0)
+		dstr_cat(&glsp->gl_string, "ivec4");
 	else if (cmp_type(type, len, "float3x3", 8) == 0)
 		dstr_cat(&glsp->gl_string, "mat3x3");
 	else if (cmp_type(type, len, "float3x4", 8) == 0)

+ 3 - 0
libobs/graphics/graphics.h

@@ -284,6 +284,9 @@ enum gs_shader_param_type {
 	GS_SHADER_PARAM_VEC2,
 	GS_SHADER_PARAM_VEC3,
 	GS_SHADER_PARAM_VEC4,
+	GS_SHADER_PARAM_INT2,
+	GS_SHADER_PARAM_INT3,
+	GS_SHADER_PARAM_INT4,
 	GS_SHADER_PARAM_MATRIX4X4,
 	GS_SHADER_PARAM_TEXTURE,
 };

+ 6 - 0
libobs/graphics/shader-parser.c

@@ -28,6 +28,12 @@ enum gs_shader_param_type get_shader_param_type(const char *type)
 		return GS_SHADER_PARAM_VEC3;
 	else if (strcmp(type, "float4") == 0)
 		return GS_SHADER_PARAM_VEC4;
+	else if (strcmp(type, "int2") == 0)
+		return GS_SHADER_PARAM_INT2;
+	else if (strcmp(type, "int3") == 0)
+		return GS_SHADER_PARAM_INT3;
+	else if (strcmp(type, "int4") == 0)
+		return GS_SHADER_PARAM_INT4;
 	else if (astrcmp_n(type, "texture", 7) == 0)
 		return GS_SHADER_PARAM_TEXTURE;
 	else if (strcmp(type, "float4x4") == 0)