mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-08 06:26:43 +01:00
Fixed shield rendering weirdly with fabulous graphics
This commit is contained in:
parent
afe820b704
commit
e9e57cb949
2 changed files with 66 additions and 10 deletions
|
@ -120,6 +120,7 @@ public class SphereParticle extends Particle implements Attachment {
|
||||||
}
|
}
|
||||||
|
|
||||||
MatrixStack matrices = new MatrixStack();
|
MatrixStack matrices = new MatrixStack();
|
||||||
|
|
||||||
VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers();
|
VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers();
|
||||||
model.setPosition(
|
model.setPosition(
|
||||||
MathHelper.lerp(tickDelta, prevPosX, x) - camera.getPos().x,
|
MathHelper.lerp(tickDelta, prevPosX, x) - camera.getPos().x,
|
||||||
|
@ -130,8 +131,10 @@ public class SphereParticle extends Particle implements Attachment {
|
||||||
|
|
||||||
float lerpedRad = MathHelper.lerp(tickDelta, prevRadius, radius);
|
float lerpedRad = MathHelper.lerp(tickDelta, prevRadius, radius);
|
||||||
|
|
||||||
VertexConsumer buffer = immediate.getBuffer(RenderLayers.magic());
|
VertexConsumer buffer;
|
||||||
|
buffer = immediate.getBuffer(RenderLayers.getTintedTexturedLayer(red, green, blue, alpha));
|
||||||
model.render(matrices, lerpedRad + 0.1F, buffer, 1, 1, red, green, blue, alpha);
|
model.render(matrices, lerpedRad + 0.1F, buffer, 1, 1, red, green, blue, alpha);
|
||||||
|
buffer = immediate.getBuffer(RenderLayers.getTintedTexturedLayer(red * 0.9F, green * 0.9F, blue * 0.9F, Math.min(1, alpha + 0.2F)));
|
||||||
model.render(matrices, lerpedRad - 0.1F, buffer, 1, 1, red * 0.9F, green * 0.9F, blue * 0.9F, Math.min(1, alpha + 0.2F));
|
model.render(matrices, lerpedRad - 0.1F, buffer, 1, 1, red * 0.9F, green * 0.9F, blue * 0.9F, Math.min(1, alpha + 0.2F));
|
||||||
|
|
||||||
immediate.draw();
|
immediate.draw();
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
package com.minelittlepony.unicopia.client.render;
|
package com.minelittlepony.unicopia.client.render;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.platform.GlStateManager.DstFactor;
|
||||||
|
import com.mojang.blaze3d.platform.GlStateManager.SrcFactor;
|
||||||
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
import net.minecraft.client.render.RenderPhase;
|
||||||
import net.minecraft.client.render.VertexFormat;
|
import net.minecraft.client.render.VertexFormat;
|
||||||
import net.minecraft.client.render.VertexFormats;
|
import net.minecraft.client.render.VertexFormats;
|
||||||
|
|
||||||
|
@ -11,15 +16,63 @@ public final class RenderLayers extends RenderLayer {
|
||||||
super(name, vertexFormat, drawMode, expectedBufferSize, hasCrumbling, translucent, startAction, endAction);
|
super(name, vertexFormat, drawMode, expectedBufferSize, hasCrumbling, translucent, startAction, endAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final RenderLayer MAGIC = of("mlp_magic_glow", VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL, 7, 256, RenderLayer.MultiPhaseParameters.builder()
|
protected static final RenderPhase.Transparency GLOWING_TRANSPARENCY = new RenderPhase.Transparency("glowing_transparency", () -> {
|
||||||
.texture(NO_TEXTURE)
|
RenderSystem.enableBlend();
|
||||||
.writeMaskState(COLOR_MASK)
|
RenderSystem.blendFuncSeparate(
|
||||||
.transparency(LIGHTNING_TRANSPARENCY)
|
SrcFactor.CONSTANT_COLOR, DstFactor.ONE,
|
||||||
.lightmap(DISABLE_LIGHTMAP)
|
SrcFactor.ONE, DstFactor.ZERO);
|
||||||
.cull(DISABLE_CULLING)
|
}, () -> {
|
||||||
.build(false));
|
RenderSystem.disableBlend();
|
||||||
|
RenderSystem.defaultBlendFunc();
|
||||||
|
});
|
||||||
|
|
||||||
public static RenderLayer magic() {
|
public static RenderLayer getTintedTexturedLayer(float red, float green, float blue, float alpha) {
|
||||||
return MAGIC;
|
return RenderLayer.of("mlp_tint_layer", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, true, RenderLayer.MultiPhaseParameters.builder()
|
||||||
|
.texture(new Color(red, green, blue, alpha))
|
||||||
|
.writeMaskState(COLOR_MASK)
|
||||||
|
.alpha(ONE_TENTH_ALPHA)
|
||||||
|
.transparency(GLOWING_TRANSPARENCY)
|
||||||
|
.shadeModel(SMOOTH_SHADE_MODEL)
|
||||||
|
.lightmap(DISABLE_LIGHTMAP)
|
||||||
|
.overlay(DISABLE_OVERLAY_COLOR)
|
||||||
|
.cull(DISABLE_CULLING)
|
||||||
|
.build(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class Color extends Texture {
|
||||||
|
|
||||||
|
private final float red;
|
||||||
|
private final float green;
|
||||||
|
private final float blue;
|
||||||
|
private final float alpha;
|
||||||
|
|
||||||
|
public Color(float red, float green, float blue, float alpha) {
|
||||||
|
super();
|
||||||
|
this.red = red;
|
||||||
|
this.green = green;
|
||||||
|
this.blue = blue;
|
||||||
|
this.alpha = alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startDrawing() {
|
||||||
|
RenderSystem.blendColor(red, green, blue, alpha);
|
||||||
|
super.startDrawing();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endDrawing() {
|
||||||
|
super.endDrawing();
|
||||||
|
RenderSystem.blendColor(1, 1, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
return super.equals(other)
|
||||||
|
&& ((Color)other).red == red
|
||||||
|
&& ((Color)other).green == green
|
||||||
|
&& ((Color)other).blue == blue
|
||||||
|
&& ((Color)other).alpha == alpha;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue