VulkanShader_1.21.10-0.0.4-alpha.jar

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

import com.google.common.base.Preconditions;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.fabricmc.fabric.api.renderer.v1.mesh.QuadView;
import net.fabricmc.fabric.api.renderer.v1.mesh.ShadeMode;
import net.fabricmc.fabric.api.renderer.v1.model.ModelHelper;
import net.fabricmc.fabric.api.util.TriState;
import net.minecraft.class_10444;
import net.minecraft.class_11515;
import net.minecraft.class_2350;
import net.minecraft.class_290;
import net.minecraft.class_3532;
import net.minecraft.class_10444.class_10445;
import org.apache.commons.lang3.ArrayUtils;
import org.jetbrains.annotations.Nullable;

public final class EncodingFormat {
   static final int HEADER_BITS = 0;
   static final int HEADER_FACE_NORMAL = 1;
   static final int HEADER_TINT_INDEX = 2;
   static final int HEADER_TAG = 3;
   public static final int HEADER_STRIDE = 4;
   static final int VERTEX_X;
   static final int VERTEX_Y;
   static final int VERTEX_Z;
   static final int VERTEX_COLOR;
   static final int VERTEX_U;
   static final int VERTEX_V;
   static final int VERTEX_LIGHTMAP;
   static final int VERTEX_NORMAL;
   public static final int VERTEX_STRIDE;
   public static final int QUAD_STRIDE;
   public static final int QUAD_STRIDE_BYTES;
   public static final int TOTAL_STRIDE;
   private static final int DIRECTION_COUNT;
   private static final int NULLABLE_DIRECTION_COUNT;
   private static final @Nullable class_11515[] NULLABLE_BLOCK_RENDER_LAYERS;
   private static final int NULLABLE_BLOCK_RENDER_LAYER_COUNT;
   private static final TriState[] TRI_STATES;
   private static final int TRI_STATE_COUNT;
   private static final @Nullable class_10444.class_10445[] NULLABLE_GLINTS;
   private static final int NULLABLE_GLINT_COUNT;
   private static final ShadeMode[] SHADE_MODES;
   private static final int SHADE_MODE_COUNT;
   private static final int NULL_RENDER_LAYER_INDEX;
   private static final int NULL_GLINT_INDEX;
   private static final int CULL_BIT_LENGTH;
   private static final int LIGHT_BIT_LENGTH;
   private static final int NORMALS_BIT_LENGTH = 4;
   private static final int GEOMETRY_BIT_LENGTH = 3;
   private static final int RENDER_LAYER_BIT_LENGTH;
   private static final int EMISSIVE_BIT_LENGTH = 1;
   private static final int DIFFUSE_BIT_LENGTH = 1;
   private static final int AO_BIT_LENGTH;
   private static final int GLINT_BIT_LENGTH;
   private static final int SHADE_MODE_BIT_LENGTH;
   private static final int CULL_BIT_OFFSET = 0;
   private static final int LIGHT_BIT_OFFSET;
   private static final int NORMALS_BIT_OFFSET;
   private static final int GEOMETRY_BIT_OFFSET;
   private static final int RENDER_LAYER_BIT_OFFSET;
   private static final int EMISSIVE_BIT_OFFSET;
   private static final int DIFFUSE_BIT_OFFSET;
   private static final int AO_BIT_OFFSET;
   private static final int GLINT_BIT_OFFSET;
   private static final int SHADE_MODE_BIT_OFFSET;
   private static final int TOTAL_BIT_LENGTH;
   private static final int CULL_MASK;
   private static final int LIGHT_MASK;
   private static final int NORMALS_MASK;
   private static final int GEOMETRY_MASK;
   private static final int RENDER_LAYER_MASK;
   private static final int EMISSIVE_MASK;
   private static final int DIFFUSE_MASK;
   private static final int AO_MASK;
   private static final int GLINT_MASK;
   private static final int SHADE_MODE_MASK;

   private EncodingFormat() {
   }

   private static int bitMask(int bitLength, int bitOffset) {
      return (1 << bitLength) - 1 << bitOffset;
   }

   static @Nullable class_2350 cullFace(int bits) {
      return ModelHelper.faceFromIndex((bits & CULL_MASK) >>> 0);
   }

   static int cullFace(int bits, @Nullable class_2350 face) {
      return bits & ~CULL_MASK | ModelHelper.toFaceIndex(face) << 0;
   }

   static class_2350 lightFace(int bits) {
      return ModelHelper.faceFromIndex((bits & LIGHT_MASK) >>> LIGHT_BIT_OFFSET);
   }

   static int lightFace(int bits, class_2350 face) {
      return bits & ~LIGHT_MASK | ModelHelper.toFaceIndex(face) << LIGHT_BIT_OFFSET;
   }

   static int normalFlags(int bits) {
      return (bits & NORMALS_MASK) >>> NORMALS_BIT_OFFSET;
   }

   static int normalFlags(int bits, int normalFlags) {
      return bits & ~NORMALS_MASK | normalFlags << NORMALS_BIT_OFFSET & NORMALS_MASK;
   }

   static int geometryFlags(int bits) {
      return (bits & GEOMETRY_MASK) >>> GEOMETRY_BIT_OFFSET;
   }

   static int geometryFlags(int bits, int geometryFlags) {
      return bits & ~GEOMETRY_MASK | geometryFlags << GEOMETRY_BIT_OFFSET & GEOMETRY_MASK;
   }

   static @Nullable class_11515 renderLayer(int bits) {
      return NULLABLE_BLOCK_RENDER_LAYERS[(bits & RENDER_LAYER_MASK) >>> RENDER_LAYER_BIT_OFFSET];
   }

   static int renderLayer(int bits, @Nullable class_11515 renderLayer) {
      int index = renderLayer == null ? NULL_RENDER_LAYER_INDEX : renderLayer.ordinal();
      return bits & ~RENDER_LAYER_MASK | index << RENDER_LAYER_BIT_OFFSET;
   }

   static boolean emissive(int bits) {
      return (bits & EMISSIVE_MASK) != 0;
   }

   static int emissive(int bits, boolean emissive) {
      return emissive ? bits | EMISSIVE_MASK : bits & ~EMISSIVE_MASK;
   }

   static boolean diffuseShade(int bits) {
      return (bits & DIFFUSE_MASK) != 0;
   }

   static int diffuseShade(int bits, boolean shade) {
      return shade ? bits | DIFFUSE_MASK : bits & ~DIFFUSE_MASK;
   }

   static TriState ambientOcclusion(int bits) {
      return TRI_STATES[(bits & AO_MASK) >>> AO_BIT_OFFSET];
   }

   static int ambientOcclusion(int bits, TriState ao) {
      return bits & ~AO_MASK | ao.ordinal() << AO_BIT_OFFSET;
   }

   static class_10444.@Nullable class_10445 glint(int bits) {
      return NULLABLE_GLINTS[(bits & GLINT_MASK) >>> GLINT_BIT_OFFSET];
   }

   static int glint(int bits, class_10444.@Nullable class_10445 glint) {
      int index = glint == null ? NULL_GLINT_INDEX : glint.ordinal();
      return bits & ~GLINT_MASK | index << GLINT_BIT_OFFSET;
   }

   static ShadeMode shadeMode(int bits) {
      return SHADE_MODES[(bits & SHADE_MODE_MASK) >>> SHADE_MODE_BIT_OFFSET];
   }

   static int shadeMode(int bits, ShadeMode mode) {
      return bits & ~SHADE_MODE_MASK | mode.ordinal() << SHADE_MODE_BIT_OFFSET;
   }

   static {
      VertexFormat format = class_290.field_1590;
      VERTEX_X = 4;
      VERTEX_Y = 5;
      VERTEX_Z = 6;
      VERTEX_COLOR = 7;
      VERTEX_U = 8;
      VERTEX_V = VERTEX_U + 1;
      VERTEX_LIGHTMAP = 10;
      VERTEX_NORMAL = 11;
      VERTEX_STRIDE = format.getVertexSize() / 4;
      QUAD_STRIDE = VERTEX_STRIDE * 4;
      QUAD_STRIDE_BYTES = QUAD_STRIDE * 4;
      TOTAL_STRIDE = 4 + QUAD_STRIDE;
      Preconditions.checkState(VERTEX_STRIDE == QuadView.VANILLA_VERTEX_STRIDE, "Indigo vertex stride (%s) mismatched with rendering API (%s)", VERTEX_STRIDE, QuadView.VANILLA_VERTEX_STRIDE);
      Preconditions.checkState(QUAD_STRIDE == QuadView.VANILLA_QUAD_STRIDE, "Indigo quad stride (%s) mismatched with rendering API (%s)", QUAD_STRIDE, QuadView.VANILLA_QUAD_STRIDE);
      DIRECTION_COUNT = class_2350.values().length;
      NULLABLE_DIRECTION_COUNT = DIRECTION_COUNT + 1;
      NULLABLE_BLOCK_RENDER_LAYERS = (class_11515[])ArrayUtils.add(class_11515.values(), (Object)null);
      NULLABLE_BLOCK_RENDER_LAYER_COUNT = NULLABLE_BLOCK_RENDER_LAYERS.length;
      TRI_STATES = TriState.values();
      TRI_STATE_COUNT = TRI_STATES.length;
      NULLABLE_GLINTS = (class_10444.class_10445[])ArrayUtils.add(class_10445.values(), (Object)null);
      NULLABLE_GLINT_COUNT = NULLABLE_GLINTS.length;
      SHADE_MODES = ShadeMode.values();
      SHADE_MODE_COUNT = SHADE_MODES.length;
      NULL_RENDER_LAYER_INDEX = NULLABLE_BLOCK_RENDER_LAYER_COUNT - 1;
      NULL_GLINT_INDEX = NULLABLE_GLINT_COUNT - 1;
      CULL_BIT_LENGTH = class_3532.method_15342(NULLABLE_DIRECTION_COUNT);
      LIGHT_BIT_LENGTH = class_3532.method_15342(DIRECTION_COUNT);
      RENDER_LAYER_BIT_LENGTH = class_3532.method_15342(NULLABLE_BLOCK_RENDER_LAYER_COUNT);
      AO_BIT_LENGTH = class_3532.method_15342(TRI_STATE_COUNT);
      GLINT_BIT_LENGTH = class_3532.method_15342(NULLABLE_GLINT_COUNT);
      SHADE_MODE_BIT_LENGTH = class_3532.method_15342(SHADE_MODE_COUNT);
      LIGHT_BIT_OFFSET = 0 + CULL_BIT_LENGTH;
      NORMALS_BIT_OFFSET = LIGHT_BIT_OFFSET + LIGHT_BIT_LENGTH;
      GEOMETRY_BIT_OFFSET = NORMALS_BIT_OFFSET + 4;
      RENDER_LAYER_BIT_OFFSET = GEOMETRY_BIT_OFFSET + 3;
      EMISSIVE_BIT_OFFSET = RENDER_LAYER_BIT_OFFSET + RENDER_LAYER_BIT_LENGTH;
      DIFFUSE_BIT_OFFSET = EMISSIVE_BIT_OFFSET + 1;
      AO_BIT_OFFSET = DIFFUSE_BIT_OFFSET + 1;
      GLINT_BIT_OFFSET = AO_BIT_OFFSET + AO_BIT_LENGTH;
      SHADE_MODE_BIT_OFFSET = GLINT_BIT_OFFSET + GLINT_BIT_LENGTH;
      TOTAL_BIT_LENGTH = SHADE_MODE_BIT_OFFSET + SHADE_MODE_BIT_LENGTH;
      CULL_MASK = bitMask(CULL_BIT_LENGTH, 0);
      LIGHT_MASK = bitMask(LIGHT_BIT_LENGTH, LIGHT_BIT_OFFSET);
      NORMALS_MASK = bitMask(4, NORMALS_BIT_OFFSET);
      GEOMETRY_MASK = bitMask(3, GEOMETRY_BIT_OFFSET);
      RENDER_LAYER_MASK = bitMask(RENDER_LAYER_BIT_LENGTH, RENDER_LAYER_BIT_OFFSET);
      EMISSIVE_MASK = bitMask(1, EMISSIVE_BIT_OFFSET);
      DIFFUSE_MASK = bitMask(1, DIFFUSE_BIT_OFFSET);
      AO_MASK = bitMask(AO_BIT_LENGTH, AO_BIT_OFFSET);
      GLINT_MASK = bitMask(GLINT_BIT_LENGTH, GLINT_BIT_OFFSET);
      SHADE_MODE_MASK = bitMask(SHADE_MODE_BIT_LENGTH, SHADE_MODE_BIT_OFFSET);
      Preconditions.checkArgument(TOTAL_BIT_LENGTH <= 32, "Indigo header encoding bit count (%s) exceeds integer bit length)", TOTAL_STRIDE);
   }
}
    
Download file