ShaderCompileWorker expects different HLSL header format
In master and 4.9 branches, when packed uniforms are not used (or not supported, I'm not sure), GlslBackend in ShaderFormatOpenglModule generates at least '@Samplers' header line in different format than ShaderCompileWorker expects.
Which leads to error "Bad hlslcc header found! Missing '#'!" in ShaderCompileWorker, since parsing stops at '// @Samplers: t;-1:ps0' line (ShaderCompileWorker expects something like '// @Samplers: t(-1:ps0)').
I tried to fix it by changing the format in print_extern_vars function in GlslBackend.cpp and parser in ShaderCompileWorker, but it seems parser requires more information than that's generated by the backend and the fix will require some deeper changes in backend, which are outside of my knowledge.
In branch 4.8 there's similar issue, but the error generated is 'Assertion failed: Assertion failed: Match(ShaderSource, '(') in OpenGLShaderCompiler.cpp'
Thank you very much! These finding turned out useful.
Could you attempt to cherry pick those two commits to see if they fix the crash for you?
answered Jul 30 '15 at 06:26 PM
Are your SCW and the engine using the same hlslcc version? (that is, have you [re]built SCW after pulling latest from master?). Also, has DDC been generated by the same version? You can remove the whole Engine/DerivedDataCache and /DerivedDataCache directories.
Otherwise, please add more exact repro steps, preferably starting from a clean clone of the repo to rule out previous state.
answered Jul 25 '15 at 02:24 PM
Follow this question
Once you sign in you will be able to subscribe for any updates here