TerrificTable55

Untitled

Nov 13th, 2022
906
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.32 KB | None | 0 0
  1.  
  2. public class BlurUtil {
  3.  
  4.     private static final Minecraft mc = Minecraft.getMinecraft();
  5.     private final ResourceLocation resourceLocation;
  6.     private ShaderGroup shaderGroup;
  7.     private Framebuffer framebuffer;
  8.  
  9.     private int lastFactor;
  10.     private int lastWidth;
  11.     private int lastHeight;
  12.  
  13.     public BlurUtil() {
  14.         this.resourceLocation = new ResourceLocation("arsenic/shader/blur.json");
  15.     }
  16.  
  17.     public void init() {
  18.         try {
  19.             this.shaderGroup = new ShaderGroup(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), resourceLocation);
  20.             this.shaderGroup.createBindFramebuffers(mc.displayWidth, mc.displayHeight);
  21.             this.framebuffer = shaderGroup.mainFramebuffer;
  22.         } catch (final JsonSyntaxException | IOException e) {
  23.             e.printStackTrace();
  24.         }
  25.     }
  26.  
  27.     private void setValues(final int strength) {
  28.         this.shaderGroup.listShaders.get(0).getShaderManager().getShaderUniform("Radius").set(strength);
  29.         this.shaderGroup.listShaders.get(1).getShaderManager().getShaderUniform("Radius").set(strength);
  30.         this.shaderGroup.listShaders.get(2).getShaderManager().getShaderUniform("Radius").set(strength);
  31.         this.shaderGroup.listShaders.get(3).getShaderManager().getShaderUniform("Radius").set(strength);
  32.     }
  33.  
  34.     public final void blur(final int blurStrength) {
  35.         final ScaledResolution scaledResolution = new ScaledResolution(mc);
  36.  
  37.         final int scaleFactor = scaledResolution.getScaleFactor();
  38.         final int width = scaledResolution.getScaledWidth();
  39.         final int height = scaledResolution.getScaledHeight();
  40.  
  41.         if (sizeHasChanged(scaleFactor, width, height) || framebuffer == null || shaderGroup == null) {
  42.             init();
  43.         }
  44.  
  45.         this.lastFactor = scaleFactor;
  46.         this.lastWidth = width;
  47.         this.lastHeight = height;
  48.  
  49.         setValues(blurStrength);
  50.         framebuffer.bindFramebuffer(true);
  51.         shaderGroup.loadShaderGroup(mc.timer.renderPartialTicks);
  52.         mc.getFramebuffer().bindFramebuffer(true);
  53.         GlStateManager.enableAlpha();
  54.     }
  55.  
  56.     public final void blur(final double x, final double y, final double areaWidth, final double areaHeight, final int blurStrength) {
  57.         final ScaledResolution scaledResolution = new ScaledResolution(mc);
  58.  
  59.         final int scaleFactor = scaledResolution.getScaleFactor();
  60.         final int width = scaledResolution.getScaledWidth();
  61.         final int height = scaledResolution.getScaledHeight();
  62.  
  63.         if (sizeHasChanged(scaleFactor, width, height) || framebuffer == null || shaderGroup == null) {
  64.             init();
  65.         }
  66.  
  67.         this.lastFactor = scaleFactor;
  68.         this.lastWidth = width;
  69.         this.lastHeight = height;
  70.  
  71.         GL11.glEnable(GL11.GL_SCISSOR_TEST);
  72.         RenderUtil.scissor(x, y, areaWidth, areaHeight);
  73.         framebuffer.bindFramebuffer(true);
  74.         shaderGroup.loadShaderGroup(mc.timer.renderPartialTicks);
  75.         setValues(blurStrength);
  76.         mc.getFramebuffer().bindFramebuffer(false);
  77.  
  78.         GL11.glDisable(GL11.GL_SCISSOR_TEST);
  79.     }
  80.  
  81.     private boolean sizeHasChanged(final int scaleFactor, final int width, final int height) {
  82.         return (lastFactor != scaleFactor || lastWidth != width || lastHeight != height);
  83.     }
  84.  
  85. }
  86.  
Advertisement
Add Comment
Please, Sign In to add comment