mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 21:58:31 +09:00
[Feat] (MG_Util/ShaderCompiler): add new item to ShaderCompileBits and implement it
This commit is contained in:
@@ -131,15 +131,22 @@ namespace MobileGL {
|
|||||||
const char* src[] = {sourceStr.data()};
|
const char* src[] = {sourceStr.data()};
|
||||||
tshader->setStrings(src, 1);
|
tshader->setStrings(src, 1);
|
||||||
tshader->setInvertY(true);
|
tshader->setInvertY(true);
|
||||||
tshader->setEnvInput(glslang::EShSourceGlsl, lang, glslang::EShClientVulkan, 450);
|
if (attrib.flags & ShaderCompileBits::CompileForOpenGL) {
|
||||||
tshader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_3);
|
tshader->setEnvInput(glslang::EShSourceGlsl, lang, glslang::EShClientOpenGL, 450);
|
||||||
tshader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_5);
|
tshader->setEnvClient(glslang::EShClientOpenGL, glslang::EShTargetOpenGL_450);
|
||||||
|
tshader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_5);
|
||||||
|
} else {
|
||||||
|
tshader->setEnvInput(glslang::EShSourceGlsl, lang, glslang::EShClientVulkan, 450);
|
||||||
|
tshader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_3);
|
||||||
|
tshader->setEnvTarget(glslang::EShTargetSpv,
|
||||||
|
((attrib.flags & ShaderCompileBits::EmitDiscardAsDemote) ? glslang::EShTargetSpv_1_6 : glslang::EShTargetSpv_1_5));
|
||||||
|
}
|
||||||
tshader->setAutoMapLocations(true);
|
tshader->setAutoMapLocations(true);
|
||||||
tshader->setAutoMapBindings(true);
|
tshader->setAutoMapBindings(true);
|
||||||
tshader->setEnvInputVulkanRulesRelaxed(); // using EXT_vulkan_glsl_relaxed for gl_VertexID and
|
tshader->setEnvInputVulkanRulesRelaxed(); // using EXT_vulkan_glsl_relaxed for gl_VertexID and
|
||||||
// gl_InstanceID?
|
// gl_InstanceID?
|
||||||
tshader->setGlobalUniformBlockName(GLOBAL_UBO_NAME);
|
tshader->setGlobalUniformBlockName(GLOBAL_UBO_NAME);
|
||||||
if (!tshader->parse(&GetTBuiltInResourceInstance(), 150, ECoreProfile,
|
if (!tshader->parse(&GetTBuiltInResourceInstance(), 460, ECoreProfile,
|
||||||
/*forceDefaultVersionAndProfile: */ false,
|
/*forceDefaultVersionAndProfile: */ false,
|
||||||
/*forwardCompatible: */ true, EShMsgDefault)) {
|
/*forwardCompatible: */ true, EShMsgDefault)) {
|
||||||
ResultInfo r;
|
ResultInfo r;
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ namespace MobileGL {
|
|||||||
struct EmptyType {};
|
struct EmptyType {};
|
||||||
|
|
||||||
enum class ShaderCompileBits : Uint {
|
enum class ShaderCompileBits : Uint {
|
||||||
EmitDiscardAsDemote = 1 << 0,
|
CompileForOpenGL = 1 << 0,
|
||||||
|
EmitDiscardAsDemote = 1 << 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ShaderAttrib {
|
struct ShaderAttrib {
|
||||||
|
|||||||
Reference in New Issue
Block a user