diff --git a/src/common/rendering/gl/gl_shader.cpp b/src/common/rendering/gl/gl_shader.cpp index 2ef56a288..60c5677a6 100644 --- a/src/common/rendering/gl/gl_shader.cpp +++ b/src/common/rendering/gl/gl_shader.cpp @@ -49,6 +49,8 @@ #include #include +EXTERN_CVAR(Bool, r_skipmats) + namespace OpenGLRenderer { @@ -729,6 +731,9 @@ FShader *FShaderManager::BindEffect(int effect, EPassType passType) FShader *FShaderManager::Get(unsigned int eff, bool alphateston, EPassType passType) { + if (r_skipmats && eff >= 3 && eff <= 4) + eff = 0; + if (passType < mPassShaders.Size()) return mPassShaders[passType]->Get(eff, alphateston); else diff --git a/src/common/rendering/v_video.cpp b/src/common/rendering/v_video.cpp index 0d00c4c2e..047894466 100644 --- a/src/common/rendering/v_video.cpp +++ b/src/common/rendering/v_video.cpp @@ -72,6 +72,8 @@ CVAR(Int, win_w, -1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Int, win_h, -1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Bool, win_maximized, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +CVAR(Bool, r_skipmats, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) + // 0 means 'no pipelining' for non GLES2 and 4 elements for GLES2 CUSTOM_CVAR(Int, gl_pipeline_depth, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) { diff --git a/src/common/rendering/vulkan/renderer/vk_renderstate.cpp b/src/common/rendering/vulkan/renderer/vk_renderstate.cpp index d8314405d..a2df4a28e 100644 --- a/src/common/rendering/vulkan/renderer/vk_renderstate.cpp +++ b/src/common/rendering/vulkan/renderer/vk_renderstate.cpp @@ -37,6 +37,7 @@ #include "hwrenderer/data/shaderuniforms.h" CVAR(Int, vk_submit_size, 1000, 0); +EXTERN_CVAR(Bool, r_skipmats) VkRenderState::VkRenderState() { @@ -239,6 +240,8 @@ void VkRenderState::ApplyRenderPass(int dt) int effectState = mMaterial.mOverrideShader >= 0 ? mMaterial.mOverrideShader : (mMaterial.mMaterial ? mMaterial.mMaterial->GetShaderIndex() : 0); pipelineKey.SpecialEffect = EFF_NONE; pipelineKey.EffectState = mTextureEnabled ? effectState : SHADER_NoTexture; + if (r_skipmats && pipelineKey.EffectState >= 3 && pipelineKey.EffectState <= 4) + pipelineKey.EffectState = 0; pipelineKey.AlphaTest = mAlphaThreshold >= 0.f; }