VulkanShader_1.21.10-0.0.4-alpha.jar

Download file
    package net.vulkanmod.render.chunk.build.frapi.helper;

import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView;
import net.minecraft.class_1058;
import net.minecraft.class_2350;

public class TextureHelper {
   private static final float NORMALIZER = 0.0625F;
   private static final VertexModifier[] ROTATIONS = new VertexModifier[]{null, (q, i) -> q.uv(i, q.v(i), 1.0F - q.u(i)), (q, i) -> q.uv(i, 1.0F - q.u(i), 1.0F - q.v(i)), (q, i) -> q.uv(i, 1.0F - q.v(i), q.u(i))};
   private static final VertexModifier[] UVLOCKERS = new VertexModifier[6];

   private TextureHelper() {
   }

   public static void bakeSprite(MutableQuadView quad, class_1058 sprite, int bakeFlags) {
      if (quad.nominalFace() != null && (4 & bakeFlags) != 0) {
         applyModifier(quad, UVLOCKERS[quad.nominalFace().method_10146()]);
      } else if ((32 & bakeFlags) == 0) {
         applyModifier(quad, (q, i) -> q.uv(i, q.u(i) * 0.0625F, q.v(i) * 0.0625F));
      }

      int rotation = bakeFlags & 3;
      if (rotation != 0) {
         applyModifier(quad, ROTATIONS[rotation]);
      }

      if ((8 & bakeFlags) != 0) {
         applyModifier(quad, (q, i) -> q.uv(i, 1.0F - q.u(i), q.v(i)));
      }

      if ((16 & bakeFlags) != 0) {
         applyModifier(quad, (q, i) -> q.uv(i, q.u(i), 1.0F - q.v(i)));
      }

      interpolate(quad, sprite);
   }

   private static void interpolate(MutableQuadView q, class_1058 sprite) {
      float uMin = sprite.method_4594();
      float uSpan = sprite.method_4577() - uMin;
      float vMin = sprite.method_4593();
      float vSpan = sprite.method_4575() - vMin;

      for(int i = 0; i < 4; ++i) {
         q.uv(i, uMin + q.u(i) * uSpan, vMin + q.v(i) * vSpan);
      }

   }

   private static void applyModifier(MutableQuadView quad, VertexModifier modifier) {
      for(int i = 0; i < 4; ++i) {
         modifier.apply(quad, i);
      }

   }

   static {
      UVLOCKERS[class_2350.field_11034.method_10146()] = (q, i) -> q.uv(i, 1.0F - q.z(i), 1.0F - q.y(i));
      UVLOCKERS[class_2350.field_11039.method_10146()] = (q, i) -> q.uv(i, q.z(i), 1.0F - q.y(i));
      UVLOCKERS[class_2350.field_11043.method_10146()] = (q, i) -> q.uv(i, 1.0F - q.x(i), 1.0F - q.y(i));
      UVLOCKERS[class_2350.field_11035.method_10146()] = (q, i) -> q.uv(i, q.x(i), 1.0F - q.y(i));
      UVLOCKERS[class_2350.field_11033.method_10146()] = (q, i) -> q.uv(i, q.x(i), 1.0F - q.z(i));
      UVLOCKERS[class_2350.field_11036.method_10146()] = (q, i) -> q.uv(i, q.x(i), q.z(i));
   }

   @FunctionalInterface
   private interface VertexModifier {
      void apply(MutableQuadView var1, int var2);
   }
}
    
Download file