Index: NoesisRenderDevice.cpp
===================================================================
--- NoesisRenderDevice.cpp	(revision 16798)
+++ NoesisRenderDevice.cpp	(working copy)
@@ -1257,32 +1257,61 @@
 	RHIUpdateTexture2D(Texture->GetTexture2D(), MipIndex, UpdateRegion, SourcePitch, SourceData);
 }
 
+static void SetStaticUniformBuffer(FRHICommandList* RHICmdList, FRHIUniformBuffer* UniformBuffer)
+{
+	if (UniformBuffer)
+	{
+		const FRHIUniformBufferLayout& Layout = UniformBuffer->GetLayout();
+
+		const FUniformBufferStaticSlot Slot = Layout.StaticSlot;
+		checkf(IsUniformBufferStaticSlotValid(Slot), TEXT("Attempted to set a global uniform buffer %s with an invalid slot."), *Layout.GetDebugName());
+
+		RHICmdList->SetStaticUniformBuffer(Slot, UniformBuffer);
+	}
+}
+
 void FNoesisRenderDevice::BeginOffscreenRender()
 {
-	FUniformBufferStaticBindings StaticUniformBufferBindings;
-	StaticUniformBufferBindings.TryAddUniformBuffer(SceneTexturesUniformBuffer);
-	StaticUniformBufferBindings.TryAddUniformBuffer(MobileSceneTexturesUniformBuffer);
-	StaticUniformBufferBindings.TryAddUniformBuffer(ViewUniformBuffer);
-	RHICmdList->SetStaticUniformBuffers(MoveTemp(StaticUniformBufferBindings));
+	if (SceneTexturesUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, SceneTexturesUniformBuffer);
+	}
+
+	if (MobileSceneTexturesUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, MobileSceneTexturesUniformBuffer);
+	}
+
+	if (ViewUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, ViewUniformBuffer);
+	}
 }
 
 void FNoesisRenderDevice::EndOffscreenRender()
 {
-	RHICmdList->SetStaticUniformBuffers({});
 }
 
 void FNoesisRenderDevice::BeginOnscreenRender()
 {
-	FUniformBufferStaticBindings StaticUniformBufferBindings;
-	StaticUniformBufferBindings.TryAddUniformBuffer(SceneTexturesUniformBuffer);
-	StaticUniformBufferBindings.TryAddUniformBuffer(MobileSceneTexturesUniformBuffer);
-	StaticUniformBufferBindings.TryAddUniformBuffer(ViewUniformBuffer);
-	RHICmdList->SetStaticUniformBuffers(MoveTemp(StaticUniformBufferBindings));
+	if (SceneTexturesUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, SceneTexturesUniformBuffer);
+	}
+
+	if (MobileSceneTexturesUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, MobileSceneTexturesUniformBuffer);
+	}
+
+	if (ViewUniformBuffer)
+	{
+		SetStaticUniformBuffer(RHICmdList, ViewUniformBuffer);
+	}
 }
 
 void FNoesisRenderDevice::EndOnscreenRender()
 {
-	RHICmdList->SetStaticUniformBuffers({});
 }
 
 void FNoesisRenderDevice::SetRenderTarget(Noesis::RenderTarget* Surface)
Index: NoesisShaders.h
===================================================================
--- NoesisShaders.h	(revision 16798)
+++ NoesisShaders.h	(working copy)
@@ -291,12 +291,6 @@
 
 	static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
 	{
-		FPermutationDomain PermutationVector(Parameters.PermutationId);
-		UE::StereoRenderUtils::FStereoShaderAspects Aspects(Parameters.Platform);
-		if (PermutationVector.Get<FStereo>() && !Aspects.IsInstancedStereoEnabled())
-		{
-			return false;
-		}
 		return true;
 	}
 
