KhronosGroup / glslang

Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
Other
2.9k stars 816 forks source link

How to use glslang in the browser? #3643

Open racz16 opened 5 days ago

racz16 commented 5 days ago

I built glslang with Emscripten and included the JavaScript file into an HTML file. It runs and prints the help message to the console. My question is how can I pass arguments to it and how can I validate GLSL. I tried to set Module.arguments and call Module._main with arguments, but it still only prints the help message to the console. My code is something like this:

<script src="glslang.js"></script>
<script>
    var Module = {
        onRuntimeInitialized: async () => {
            setTimeout(() => {
                Module.arguments = ['--stdin -C -l -S vert'];
                Module.stdin = () => 'void main(){a}';
                Module._main(['--stdin -C -l -S vert']);
            }, 5000);
        },
    };
</script>

I use an additional setTimeout because initially, the browser says that _main is not a function. I'm not sure why because I'm inside onRuntimeInitialized.