VulkanShader_1.21.10-0.0.4-alpha.jar

Download file
    package net.vulkanmod.mixin.render.frapi;

import com.llamalad7.mixinextras.sugar.Local;
import com.llamalad7.mixinextras.sugar.Share;
import com.llamalad7.mixinextras.sugar.ref.LocalRef;
import java.util.function.Consumer;
import net.minecraft.class_10444;
import net.vulkanmod.render.chunk.build.frapi.accessor.AccessLayerRenderState;
import net.vulkanmod.render.chunk.build.frapi.mesh.MutableMeshImpl;
import net.vulkanmod.render.chunk.build.frapi.render.QuadToPosPipe;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.joml.Vector3fc;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin({class_10444.class})
abstract class ItemRenderStateM {
   @Inject(
      method = {"method_67991"},
      at = {@At(
   value = "NEW",
   target = "()Lnet/minecraft/class_4587$class_4665;"
)}
   )
   private void afterInitVecLoad(Consumer<Vector3fc> posConsumer, CallbackInfo ci, @Local Vector3f vec, @Share("pipe") LocalRef<QuadToPosPipe> pipeRef) {
      pipeRef.set(new QuadToPosPipe(posConsumer, vec));
   }

   @Inject(
      method = {"method_67991"},
      at = {@At(
   value = "INVOKE",
   target = "Lnet/minecraft/class_4587$class_4665;method_67801()V",
   shift = Shift.BEFORE
)}
   )
   private void afterLayerLoad(Consumer<Vector3fc> posConsumer, CallbackInfo ci, @Local(ordinal = 0) Vector3f vec, @Local class_10444.class_10446 layer, @Local Matrix4f matrix, @Share("pipe") LocalRef<QuadToPosPipe> pipeRef) {
      MutableMeshImpl mutableMesh = ((AccessLayerRenderState)layer).getMutableMesh();
      if (mutableMesh.size() > 0) {
         QuadToPosPipe pipe = (QuadToPosPipe)pipeRef.get();
         pipe.matrix = matrix;
         mutableMesh.forEachMutable(pipe);
      }

   }
}
    
Download file