Skip to content

Commit

Permalink
Vanillinization
Browse files Browse the repository at this point in the history
- Move all text visual related things into vanillin
  • Loading branch information
Jozufozu committed Jan 23, 2025
1 parent 6003748 commit 6d2aab7
Show file tree
Hide file tree
Showing 28 changed files with 126 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,27 +103,6 @@ public final class InstanceTypes {
.cullShader(Flywheel.rl("instance/cull/shadow.glsl"))
.build();

public static final InstanceType<GlyphInstance> GLYPH = SimpleInstanceType.builder(GlyphInstance::new)
.layout(LayoutBuilder.create()
.matrix("pose", FloatRepr.FLOAT, 4)
.vector("u0u1v0v1", FloatRepr.NORMALIZED_UNSIGNED_SHORT, 4)
.vector("color", FloatRepr.NORMALIZED_UNSIGNED_BYTE, 4)
.vector("light", FloatRepr.UNSIGNED_SHORT, 2)
.build())
.writer((ptr, instance) -> {
ExtraMemoryOps.putMatrix4f(ptr, instance.pose);
ExtraMemoryOps.put2x16(ptr + 64, instance.packedUs);
ExtraMemoryOps.put2x16(ptr + 68, instance.packedVs);
MemoryUtil.memPutByte(ptr + 72, instance.red);
MemoryUtil.memPutByte(ptr + 73, instance.green);
MemoryUtil.memPutByte(ptr + 74, instance.blue);
MemoryUtil.memPutByte(ptr + 75, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 76, instance.light);
})
.vertexShader(Flywheel.rl("instance/glyph.vert"))
.cullShader(Flywheel.rl("instance/cull/glyph.glsl"))
.build();

private InstanceTypes() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@

import dev.engine_room.flywheel.api.internal.DependencyInjection;
import dev.engine_room.flywheel.lib.transform.PoseTransformStack;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.font.FontSet;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.resources.ResourceLocation;

public interface FlwLibLink {
FlwLibLink INSTANCE = DependencyInjection.load(FlwLibLink.class, "dev.engine_room.flywheel.impl.FlwLibLinkImpl");
Expand All @@ -36,10 +32,4 @@ public interface FlwLibLink {
boolean isShaderPackInUse();

boolean isRenderingShadowPass();

FontSet getFontSet(Font font, ResourceLocation loc);

boolean getFilterFishyGlyphs(Font font);

BakedGlyphExtension getBakedGlyphExtension(BakedGlyph glyph);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,9 @@
import dev.engine_room.flywheel.impl.extension.PoseStackExtension;
import dev.engine_room.flywheel.impl.mixin.ModelPartAccessor;
import dev.engine_room.flywheel.impl.mixin.PoseStackAccessor;
import dev.engine_room.flywheel.impl.mixin.text.FontAccessor;
import dev.engine_room.flywheel.lib.internal.BakedGlyphExtension;
import dev.engine_room.flywheel.lib.internal.FlwLibLink;
import dev.engine_room.flywheel.lib.transform.PoseTransformStack;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.font.FontSet;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.resources.ResourceLocation;

public class FlwLibLinkImpl implements FlwLibLink {
@Override
Expand Down Expand Up @@ -80,19 +74,4 @@ public boolean isRenderingShadowPass() {
return false;
}
}

@Override
public FontSet getFontSet(Font font, ResourceLocation loc) {
return ((FontAccessor) font).flywheel$getFontSet(loc);
}

@Override
public boolean getFilterFishyGlyphs(Font font) {
return ((FontAccessor) font).flywheel$getFilterFishyGlyphs();
}

@Override
public BakedGlyphExtension getBakedGlyphExtension(BakedGlyph glyph) {
return (BakedGlyphExtension) glyph;
}
}
6 changes: 0 additions & 6 deletions common/src/main/resources/flywheel.impl.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,6 @@
"PoseStackMixin",
"fix.FixFabulousDepthMixin",
"fix.FixNormalScalingMixin",
"text.BakedGlyphMixin",
"text.CodePointMapMixin",
"text.FontAccessor",
"text.FontSetMixin",
"text.FontTexture$NodeAccessor",
"text.FontTextureMixin",
"visualmanage.BlockEntityMixin",
"visualmanage.LevelChunkMixin",
"visualmanage.LevelRendererMixin",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package dev.engine_room.flywheel.lib.instance;
package dev.engine_room.vanillin;

import org.joml.Matrix4f;
import org.joml.Matrix4fc;

import dev.engine_room.flywheel.api.instance.InstanceHandle;
import dev.engine_room.flywheel.api.instance.InstanceType;
import dev.engine_room.flywheel.lib.internal.BakedGlyphExtension;
import dev.engine_room.flywheel.lib.internal.FlwLibLink;
import dev.engine_room.flywheel.lib.instance.ColoredLitInstance;
import dev.engine_room.flywheel.lib.math.DataPacker;
import dev.engine_room.vanillin.text.BakedGlyphExtension;
import dev.engine_room.vanillin.text.TextUtil;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;

public class GlyphInstance extends ColoredLitInstance {
Expand All @@ -25,7 +26,7 @@ public GlyphInstance(InstanceType<? extends GlyphInstance> type, InstanceHandle
}

public GlyphInstance setGlyph(BakedGlyph glyph, Matrix4fc initialPose, float x, float y, boolean italic) {
var glyphExtension = FlwLibLink.INSTANCE.getBakedGlyphExtension(glyph);
var glyphExtension = TextUtil.getBakedGlyphExtension(glyph);
setUvs(glyphExtension);

float left = glyphExtension.flywheel$left();
Expand All @@ -44,7 +45,7 @@ public GlyphInstance setGlyph(BakedGlyph glyph, Matrix4fc initialPose, float x,
}

public GlyphInstance setEffect(BakedGlyph glyph, Matrix4fc initialPose, float x0, float y0, float x1, float y1, float depth) {
var glyphExtension = FlwLibLink.INSTANCE.getBakedGlyphExtension(glyph);
var glyphExtension = TextUtil.getBakedGlyphExtension(glyph);
setUvs(glyphExtension);

pose.set(initialPose);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import dev.engine_room.vanillin.visuals.ChestVisual;
import dev.engine_room.vanillin.visuals.MinecartVisual;
import dev.engine_room.vanillin.visuals.ShulkerBoxVisual;
import dev.engine_room.vanillin.visuals.SignVisual;
import dev.engine_room.vanillin.visuals.TntMinecartVisual;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.world.entity.Entity;
Expand Down Expand Up @@ -33,6 +34,9 @@ public static void init() {
.factory(ShulkerBoxVisual::new)
.apply(true);

builder(BlockEntityType.SIGN).factory(SignVisual::new)
.apply(false);

builder(EntityType.CHEST_MINECART)
.factory((ctx, entity, partialTick) -> new MinecartVisual<>(ctx, entity, partialTick, ModelLayers.CHEST_MINECART))
.skipVanillaRender(MinecartVisual::shouldSkipRender)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package dev.engine_room.vanillin;

import org.lwjgl.system.MemoryUtil;

import dev.engine_room.flywheel.api.instance.InstanceType;
import dev.engine_room.flywheel.api.layout.FloatRepr;
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
import dev.engine_room.flywheel.lib.instance.SimpleInstanceType;
import dev.engine_room.flywheel.lib.util.ExtraMemoryOps;

public class VanillinInstanceTypes {
public static final InstanceType<GlyphInstance> GLYPH = SimpleInstanceType.builder(GlyphInstance::new)
.layout(LayoutBuilder.create()
.matrix("pose", FloatRepr.FLOAT, 4)
.vector("u0u1v0v1", FloatRepr.NORMALIZED_UNSIGNED_SHORT, 4)
.vector("color", FloatRepr.NORMALIZED_UNSIGNED_BYTE, 4)
.vector("light", FloatRepr.UNSIGNED_SHORT, 2)
.build())
.writer((ptr, instance) -> {
ExtraMemoryOps.putMatrix4f(ptr, instance.pose);
ExtraMemoryOps.put2x16(ptr + 64, instance.packedUs);
ExtraMemoryOps.put2x16(ptr + 68, instance.packedVs);
MemoryUtil.memPutByte(ptr + 72, instance.red);
MemoryUtil.memPutByte(ptr + 73, instance.green);
MemoryUtil.memPutByte(ptr + 74, instance.blue);
MemoryUtil.memPutByte(ptr + 75, instance.alpha);
ExtraMemoryOps.put2x16(ptr + 76, instance.light);
})
.vertexShader(Vanillin.rl("instance/glyph.vert"))
.cullShader(Vanillin.rl("instance/cull/glyph.glsl"))
.build();
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;

import dev.engine_room.flywheel.lib.internal.BakedGlyphExtension;
import dev.engine_room.vanillin.text.BakedGlyphExtension;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;
import net.minecraft.resources.ResourceLocation;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import java.util.function.IntFunction;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -8,7 +8,7 @@
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;

import dev.engine_room.flywheel.impl.extension.FontTextureExtension;
import dev.engine_room.vanillin.text.FontTextureExtension;
import net.minecraft.client.gui.font.FontSet;
import net.minecraft.client.gui.font.FontTexture;
import net.minecraft.resources.ResourceLocation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.mixin.text;
package dev.engine_room.vanillin.mixin.text;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -20,9 +20,9 @@
import com.mojang.blaze3d.platform.NativeImage;
import com.mojang.blaze3d.systems.RenderSystem;

import dev.engine_room.flywheel.impl.FontTextureUpload;
import dev.engine_room.flywheel.impl.extension.FontTextureExtension;
import dev.engine_room.flywheel.lib.internal.BakedGlyphExtension;
import dev.engine_room.vanillin.text.BakedGlyphExtension;
import dev.engine_room.vanillin.text.FontTextureExtension;
import dev.engine_room.vanillin.text.FontTextureUpload;
import net.minecraft.client.gui.font.FontTexture;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;
import net.minecraft.client.renderer.texture.AbstractTexture;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.lib.internal;
package dev.engine_room.vanillin.text;

import net.minecraft.resources.ResourceLocation;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl.extension;
package dev.engine_room.vanillin.text;

import net.minecraft.resources.ResourceLocation;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.impl;
package dev.engine_room.vanillin.text;

import com.mojang.blaze3d.font.SheetGlyphInfo;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.lib.visual.text;
package dev.engine_room.vanillin.text;

import java.util.Objects;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.lib.visual.text;
package dev.engine_room.vanillin.text;

import java.util.function.Consumer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dev.engine_room.flywheel.lib.visual.text;
package dev.engine_room.vanillin.text;

import net.minecraft.client.gui.Font;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package dev.engine_room.vanillin.text;

import dev.engine_room.vanillin.mixin.text.FontAccessor;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.font.FontSet;
import net.minecraft.client.gui.font.glyphs.BakedGlyph;
import net.minecraft.resources.ResourceLocation;

public class TextUtil {
public static FontSet getFontSet(Font font, ResourceLocation loc) {
return ((FontAccessor) font).flywheel$getFontSet(loc);
}

public static boolean getFilterFishyGlyphs(Font font) {
return ((FontAccessor) font).flywheel$getFilterFishyGlyphs();
}

public static BakedGlyphExtension getBakedGlyphExtension(BakedGlyph glyph) {
return (BakedGlyphExtension) glyph;
}
}
Loading

0 comments on commit 6d2aab7

Please sign in to comment.