diff --git a/filament/backend/src/opengl/OpenGLProgram.cpp b/filament/backend/src/opengl/OpenGLProgram.cpp index 364932764b..885a93f434 100644 --- a/filament/backend/src/opengl/OpenGLProgram.cpp +++ b/filament/backend/src/opengl/OpenGLProgram.cpp @@ -94,7 +94,7 @@ vec2 unpackHalf2x16(highp uint v) { } )"}; - // a good point for insertion is just before the first occurence of an uniform block + // a good point for insertion is just before the first occurrence of an uniform block auto pos = temp.find("layout(std140)"); if (pos != std::string_view::npos) { temp.insert(pos, unpackHalf2x16); diff --git a/libs/filamat/src/GLSLPostProcessor.cpp b/libs/filamat/src/GLSLPostProcessor.cpp index 9dcd6b6610..b2eb53c1dd 100644 --- a/libs/filamat/src/GLSLPostProcessor.cpp +++ b/libs/filamat/src/GLSLPostProcessor.cpp @@ -344,6 +344,11 @@ void GLSLPostProcessor::fullOptimization(const TShader& tShader, CompilerGLSL glslCompiler(move(spirv)); glslCompiler.set_common_options(glslOptions); + if (tShader.getStage() == EShLangFragment && !glslOptions.es) { + // enable GL_ARB_shading_language_packing if available + glslCompiler.add_header_line("#extension GL_ARB_shading_language_packing : enable"); + } + if (tShader.getStage() == EShLangFragment && glslOptions.es) { for (auto i : config.glsl.subpassInputToColorLocation) { glslCompiler.remap_ext_framebuffer_fetch(i.first, i.second, true); diff --git a/libs/filamat/src/shaders/CodeGenerator.cpp b/libs/filamat/src/shaders/CodeGenerator.cpp index d05c81eda1..61bb0a6172 100644 --- a/libs/filamat/src/shaders/CodeGenerator.cpp +++ b/libs/filamat/src/shaders/CodeGenerator.cpp @@ -64,6 +64,7 @@ io::sstream& CodeGenerator::generateProlog(io::sstream& out, ShaderType type, out << "#version 450 core\n\n"; } else { out << "#version 410 core\n\n"; + out << "#extension GL_ARB_shading_language_packing : enable\n\n"; } break; }