Skip to content

Commit

Permalink
feat(1.20.1-forged): finish halo render
Browse files Browse the repository at this point in the history
  • Loading branch information
cnlimiter committed Jun 9, 2024
1 parent 2bc3d8f commit 8384c96
Show file tree
Hide file tree
Showing 34 changed files with 236 additions and 186 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static List<BakedQuad> bakeItem(ModelState state, TextureAtlasSprite... s
for (int i = 0; i < sprites.length; i++) {
TextureAtlasSprite sprite = sprites[i];
List<BlockElement> unbaked = UnbakedGeometryHelper.createUnbakedItemElements(i, sprite.contents());
quads.addAll(UnbakedGeometryHelper.bakeElements(unbaked, e -> sprite, state, new ResourceLocation("ccl:dynamic")));
quads.addAll(UnbakedGeometryHelper.bakeElements(unbaked, e -> sprite, state, new ResourceLocation("avaritia:dynamic")));
}
return quads;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public PerspectiveModelState getModelState() {
}

@Override
public @NotNull BakedModel applyTransform(ItemDisplayContext context, PoseStack pStack, boolean leftFlip) {
public @NotNull BakedModel applyTransform(@NotNull ItemDisplayContext context, @NotNull PoseStack pStack, boolean leftFlip) {
return PerspectiveModel.super.applyTransform(context, pStack, leftFlip);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import committee.nova.mods.avaritia.api.client.model.PerspectiveModelState;
import committee.nova.mods.avaritia.util.client.TransformUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
Expand Down Expand Up @@ -45,7 +46,7 @@ public abstract class WrappedItemModel implements BakedModel {

private final ItemOverrides overrideList = new ItemOverrides() {
@Override
public BakedModel resolve(BakedModel originalModel, ItemStack stack, @Nullable ClientLevel world, @Nullable LivingEntity entity, int seed) {
public BakedModel resolve(@NotNull BakedModel originalModel, @NotNull ItemStack stack, @Nullable ClientLevel world, @Nullable LivingEntity entity, int seed) {
WrappedItemModel.this.entity = entity;
WrappedItemModel.this.world = world == null ? entity == null ? null : (ClientLevel) entity.level() : null;
return originalModel;
Expand All @@ -58,25 +59,40 @@ public WrappedItemModel(BakedModel wrapped) {
}

@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand) {
public @NotNull List<BakedQuad> getQuads(BlockState state, Direction side, @NotNull RandomSource rand) {
return Collections.emptyList();
}

@Override
public TextureAtlasSprite getParticleIcon() {
public @NotNull TextureAtlasSprite getParticleIcon() {
return wrapped.getParticleIcon();
}

@Override
public TextureAtlasSprite getParticleIcon(@NotNull ModelData data) {
public @NotNull TextureAtlasSprite getParticleIcon(@NotNull ModelData data) {
return wrapped.getParticleIcon(data);
}

@Override
public ItemOverrides getOverrides() {
public @NotNull ItemOverrides getOverrides() {
return overrideList;
}

@Override
public boolean useAmbientOcclusion() {
return this.wrapped.useAmbientOcclusion();
}

@Override
public boolean isGui3d() {
return this.wrapped.isGui3d();
}

@Override
public boolean usesBlockLight() {
return this.wrapped.usesBlockLight();
}

/**
* Render the wrapped model.
* <p>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package committee.nova.mods.avaritia.api.client.render.buffer;

import com.mojang.blaze3d.vertex.VertexConsumer;
import org.jetbrains.annotations.NotNull;

/**
* Created by covers1624 on 29/3/22.
Expand All @@ -19,7 +20,7 @@ public AlphaOverrideVertexConsumer(VertexConsumer delegate, int alpha) {
}

@Override
public VertexConsumer color(int r, int g, int b, int a) {
public @NotNull VertexConsumer color(int r, int g, int b, int a) {
return super.color(r, g, b, alpha);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import org.jetbrains.annotations.NotNull;

/**
* A simple {@link VertexConsumer} implementation which forwards to a delegate.
Expand All @@ -24,37 +25,37 @@ public void sprite(TextureAtlasSprite sprite) {
}

@Override
public VertexConsumer vertex(double x, double y, double z) {
public @NotNull VertexConsumer vertex(double x, double y, double z) {
delegate.vertex(x, y, z);
return this;
}

@Override
public VertexConsumer color(int r, int g, int b, int a) {
public @NotNull VertexConsumer color(int r, int g, int b, int a) {
delegate.color(r, g, b, a);
return this;
}

@Override
public VertexConsumer uv(float u, float v) {
public @NotNull VertexConsumer uv(float u, float v) {
delegate.uv(u, v);
return this;
}

@Override
public VertexConsumer overlayCoords(int u, int v) {
public @NotNull VertexConsumer overlayCoords(int u, int v) {
delegate.overlayCoords(u, v);
return this;
}

@Override
public VertexConsumer uv2(int u, int v) {
public @NotNull VertexConsumer uv2(int u, int v) {
delegate.uv2(u, v);
return this;
}

@Override
public VertexConsumer normal(float x, float y, float z) {
public @NotNull VertexConsumer normal(float x, float y, float z) {
delegate.normal(x, y, z);
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import committee.nova.mods.avaritia.util.vec.Matrix4;
import committee.nova.mods.avaritia.util.vec.Transformation;
import committee.nova.mods.avaritia.util.vec.Vector3;
import org.jetbrains.annotations.NotNull;

/**
* Created by covers1624 on 4/24/20.
Expand All @@ -24,14 +25,14 @@ public TransformingVertexConsumer(VertexConsumer delegate, Transformation transf
}

@Override
public VertexConsumer vertex(double x, double y, double z) {
public @NotNull VertexConsumer vertex(double x, double y, double z) {
storage.set(x, y, z);
transform.apply(storage);
return super.vertex(storage.x, storage.y, storage.z);
}

@Override
public VertexConsumer normal(float x, float y, float z) {
public @NotNull VertexConsumer normal(float x, float y, float z) {
storage.set(x, y, z);
transform.applyN(storage);
return delegate.normal((float) storage.x, (float) storage.y, (float) storage.z);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;
import java.util.List;
Expand All @@ -34,9 +35,9 @@ public interface IItemRenderer extends PerspectiveModel {

//Useless methods for IItemRenderer.
//@formatter:off
@Override default List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand) { return Collections.emptyList(); }
@Override default @NotNull List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand) { return Collections.emptyList(); }
@Override default boolean isCustomRenderer() { return true; }
@Override default TextureAtlasSprite getParticleIcon() { return TextureUtils.getMissingSprite(); }
@Override default @NotNull TextureAtlasSprite getParticleIcon() { return TextureUtils.getMissingSprite(); }
@Override default ItemOverrides getOverrides() { return ItemOverrides.EMPTY; }
//@formatter:on
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Transformation;
import committee.nova.mods.avaritia.Static;
import committee.nova.mods.avaritia.api.client.model.ItemQuadBakery;
import committee.nova.mods.avaritia.api.client.model.PerspectiveModelState;
import committee.nova.mods.avaritia.api.client.model.bakedmodels.WrappedItemModel;
import committee.nova.mods.avaritia.api.client.render.item.IItemRenderer;
Expand All @@ -18,7 +19,6 @@
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
Expand All @@ -39,20 +39,18 @@

public class CosmicBakeModel extends WrappedItemModel implements IItemRenderer {
private final List<BakedQuad> maskQuads;
public static final SimpleModelState IDENTITY = new SimpleModelState(Transformation.identity());
private final ItemOverrides overrideList = new ItemOverrides() {
public BakedModel resolve(@NotNull BakedModel originalModel, @NotNull ItemStack stack, @javax.annotation.Nullable ClientLevel world, @javax.annotation.Nullable LivingEntity entity, int seed) {
CosmicBakeModel.this.entity = entity;
CosmicBakeModel.this.world = world == null ? (entity == null ? null : (ClientLevel)entity.level()) : null;
return CosmicBakeModel.this.wrapped.getOverrides().resolve(originalModel, stack, world, entity, seed);
}
};
private static final ItemModelGenerator ITEM_MODEL_GENERATOR = new ItemModelGenerator();
private static final FaceBakery FACE_BAKERY = new FaceBakery();

public CosmicBakeModel(BakedModel wrapped, TextureAtlasSprite maskSprite) {

public CosmicBakeModel(final BakedModel wrapped, final TextureAtlasSprite maskSprite) {
super(wrapped);
this.maskQuads = bakeItem(maskSprite);
this.maskQuads = ItemQuadBakery.bakeItem(maskSprite);
}

@Override
Expand Down Expand Up @@ -81,14 +79,16 @@ public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseSt
scale = 25.0F;
}
if (AvaritiaShaders.cosmicOpacity != null) {
AvaritiaShaders.cosmicOpacity.glUniform1f(1.0F);
AvaritiaShaders.cosmicOpacity.set(1.0F);
}
AvaritiaShaders.cosmicYaw.glUniform1f(yaw);
AvaritiaShaders.cosmicPitch.glUniform1f(pitch);
AvaritiaShaders.cosmicExternalScale.glUniform1f(scale);
AvaritiaShaders.cosmicYaw.set(yaw);
AvaritiaShaders.cosmicPitch.set(pitch);
AvaritiaShaders.cosmicExternalScale.set(scale);
final ItemRenderer itemRenderer = mc.getItemRenderer();
final VertexConsumer cons = source.getBuffer(AvaritiaShaders.COSMIC_RENDER_TYPE);
itemRenderer.renderQuadList(pStack, cons, maskQuads, stack, light, overlay);
//this.renderWrapped(stack, pStack, source, light, overlay, true, vertexConsumer -> cons);
itemRenderer.renderQuadList(pStack, cons, this.maskQuads, stack, light, overlay);
//itemRenderer.renderModelLists(wrapped, stack, light, overlay, pStack, cons);
}


Expand All @@ -97,45 +97,9 @@ public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseSt
return (PerspectiveModelState) this.parentState;
}

@Override
public boolean useAmbientOcclusion() {
return this.wrapped.useAmbientOcclusion();
}

@Override
public boolean isGui3d() {
return this.wrapped.isGui3d();
}

@Override
public boolean usesBlockLight() {
return this.wrapped.usesBlockLight();
}

@Override
public @NotNull ItemOverrides getOverrides() {
return this.overrideList;
}

private static List<BakedQuad> bakeItem(TextureAtlasSprite... sprites) {
return bakeItem(Transformation.identity(), sprites);
}

private static List<BakedQuad> bakeItem(Transformation state, TextureAtlasSprite... sprites) {
List<BakedQuad> quads = new LinkedList<>();

for(int i = 0; i < sprites.length; ++i) {
TextureAtlasSprite sprite = sprites[i];
List<BlockElement> unbaked = ITEM_MODEL_GENERATOR.processFrames(i, "layer" + i, sprite.contents());

for (BlockElement element : unbaked) {

for (Map.Entry<Direction, BlockElementFace> directionBlockElementFaceEntry : element.faces.entrySet()) {
quads.add(FACE_BAKERY.bakeQuad(element.from, element.to, directionBlockElementFaceEntry.getValue(), sprite, directionBlockElementFaceEntry.getKey(), IDENTITY, element.rotation, element.shade, Static.rl( "dynamic")));
}
}
}

return quads;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import net.minecraftforge.client.model.geometry.IGeometryLoader;
import net.minecraftforge.client.model.geometry.IUnbakedGeometry;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;

Expand Down Expand Up @@ -46,29 +48,18 @@ public CosmicGeometry read(JsonObject modelContents, JsonDeserializationContext
public static class CosmicGeometry implements IUnbakedGeometry<CosmicGeometry>{
private final BlockModel baseModel;
private final String maskTexture;
Material maskMaterial;

public CosmicGeometry(BlockModel baseModel, String maskTexture) {
public CosmicGeometry(final BlockModel baseModel, final String maskTexture) {
this.baseModel = baseModel;
this.maskTexture = maskTexture;
}

@Override
public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Function<Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides overrides, ResourceLocation modelLocation) {
Material maskMaterial = context.getMaterial(maskTexture);
ImmutableList.Builder<Material> builder = ImmutableList.builder();
for (int i = 0; context.hasMaterial("layer" + i); i++)
{
builder.add(context.getMaterial("layer" + i));
}
builder.add(maskMaterial);
ImmutableList<Material> textures = builder.build();
TextureAtlasSprite particle = spriteGetter.apply(
context.hasMaterial("particle") ? context.getMaterial("particle") : textures.get(0)
);


BakedModel baseBakedModel = this.baseModel.bake(baker, this.baseModel, spriteGetter, modelState, modelLocation, true);
return new CosmicBakeModel(baseBakedModel, particle);
this.maskMaterial = context.getMaterial(this.maskTexture);
return new CosmicBakeModel(baseBakedModel, spriteGetter.apply(this.maskMaterial));
}

@Override
Expand Down
Loading

0 comments on commit 8384c96

Please sign in to comment.