diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 2576ded9..d0b20b8a 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -396,6 +396,17 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt if (options & GLSLANG_SHADER_INVERT_Y) { shader->shader->setInvertY(true); } + +#ifdef ENABLE_HLSL + if (options & GLSLANG_SHADER_HLSL_IO_MAPPING) { + shader->shader->setHlslIoMapping(true); + } + + if (options & GLSLANG_SHADER_HLSL_FLATTEN_UNIFORM_ARRAYS) { + shader->shader->setFlattenUniformArrays(true); + } + +#endif } GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version) @@ -422,6 +433,14 @@ GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* sh shader->shader->setResourceSetBinding(shader->baseResourceSetBinding); } +GLSLANG_EXPORT void glslang_shader_add_source_text(glslang_shader_t* shader, const char* text, size_t len) { + shader->shader->addSourceText(text, len); +} + +GLSLANG_EXPORT void glslang_shader_set_source_file(glslang_shader_t* shader, const char* file) { + shader->shader->setSourceFile(file); +} + GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index c24964b3..3718ee7e 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -263,6 +263,8 @@ GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, in GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding); GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name); GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* shader, const char *const *bindings, unsigned int num_bindings); +GLSLANG_EXPORT void glslang_shader_add_source_text(glslang_shader_t* shader, const char* text, size_t len); +GLSLANG_EXPORT void glslang_shader_set_source_file(glslang_shader_t* shader, const char* file); GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index bccab765..bc02fb1c 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -212,6 +212,10 @@ typedef enum { GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1), GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2), GLSLANG_SHADER_INVERT_Y = (1 << 3), +#ifdef ENABLE_HLSL + GLSLANG_SHADER_HLSL_IO_MAPPING = (1 << 4), + GLSLANG_SHADER_HLSL_FLATTEN_UNIFORM_ARRAYS = (1 << 5), +#endif LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT), } glslang_shader_options_t;