diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 97f5a86d56..b141a1a7b5 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -345,6 +345,16 @@ GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* in return shader; } +#ifdef HYP_GLSLANG_MODIFICATIONS +GLSLANG_EXPORT glslang::TShader* glslang_get_cpp_shader(glslang_shader_t* shader) { + return shader->shader; +} + +GLSLANG_EXPORT glslang::TProgram* glslang_get_cpp_program(glslang_program_t* program) { + return program->program; +} +#endif + GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s) { shader->shader->setPreamble(s); } diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index bfe0652257..5b98bc2e18 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -39,6 +39,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang_c_shader_types.h" #include "visibility.h" +#ifdef HYP_GLSLANG_MODIFICATIONS +namespace glslang { +class TShader; +class TProgram; +} // namespace glslang +#endif + typedef struct glslang_shader_s glslang_shader_t; typedef struct glslang_program_s glslang_program_t; typedef struct glslang_mapper_s glslang_mapper_t; @@ -245,6 +252,11 @@ typedef struct glslang_spv_options_s { extern "C" { #endif +#ifdef HYP_GLSLANG_MODIFICATIONS +GLSLANG_EXPORT glslang::TShader* glslang_get_cpp_shader(glslang_shader_t* shader); +GLSLANG_EXPORT glslang::TProgram* glslang_get_cpp_program(glslang_program_t* program); +#endif + GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version); GLSLANG_EXPORT int glslang_initialize_process(void); diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 739d7f7b2f..e51e96eb63 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -994,7 +994,13 @@ class TProgram { TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; +#ifdef HYP_GLSL_MODIFICATIONS // Make reflection member public +public: +#endif TReflection* reflection; +#ifdef HYP_GLSL_MODIFICATIONS +private: +#endif bool linked; private: