Normally I use
mc.entityRenderer.loadShader(new ResourceLocation("shaders/post/blur.json"));
to load a shader however, this puts the shader on the entire screen. How do I apply the blur shader on only a specific part of the screen?
I tried
Field resourceManager = EntityRenderer.class.getDeclaredField(Mapping.resourceManager); /* shaderGroup = isObfuscated() ? "field_147707_" : "shaderGroup"; */
Field shaderGroup = EntityRenderer.class.getDeclaredField(Mapping.shaderGroup); /* resourceManager = isObfuscated() ? "field_147711_ac" : "resourceManager"; */
Field useShader = EntityRenderer.class.getDeclaredField(Mapping.useShader); /* useShader = isObfuscated() ? "field_175083_ad" : "useShader"; */
resourceManager.setAccessible(true);
shaderGroup.setAccessible(true);
useShader.setAccessible(true);
shaderGroup.set(mc.entityRenderer, new ShaderGroup(mc.getTextureManager(), (IResourceManager) resourceManager.get(mc.entityRenderer), mc.getFramebuffer(), new ResourceLocation("shaders/post/blur.json")));
((ShaderGroup) shaderGroup.get(mc.entityRenderer)).createBindFramebuffers(300, 300);
useShader.setBoolean(mc.entityRenderer, true);
However, this shurk my entire screen and applied the blur filter there and resizing the window causes it to reset. Is there any way I am able to only blur the part of the screen I want and not just the entire screen?