Skip to content

Commit 7021fe0

Browse files
committed
Some 3D Rendering attempts. Currently, no really implemented api for 3d objects, just playing around with the renderer to get a feeling how I want to design the functions for the 3d objects
1 parent 8b95891 commit 7021fe0

23 files changed

+514
-40
lines changed

src/main/java/de/srendi/advancedperipherals/client/RenderUtil.java

Lines changed: 255 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package de.srendi.advancedperipherals.client.smartglasses;
2+
3+
import com.mojang.blaze3d.systems.RenderSystem;
4+
import com.mojang.blaze3d.vertex.BufferBuilder;
5+
import com.mojang.blaze3d.vertex.BufferUploader;
6+
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
7+
import com.mojang.blaze3d.vertex.PoseStack;
8+
import com.mojang.blaze3d.vertex.Tesselator;
9+
import de.srendi.advancedperipherals.AdvancedPeripherals;
10+
import de.srendi.advancedperipherals.client.RenderUtil;
11+
import de.srendi.advancedperipherals.common.util.EnumColor;
12+
import net.minecraft.client.Minecraft;
13+
import net.minecraft.client.renderer.GameRenderer;
14+
import net.minecraft.client.renderer.RenderType;
15+
import net.minecraft.core.BlockPos;
16+
import net.minecraft.world.level.block.Blocks;
17+
import net.minecraft.world.phys.Vec3;
18+
import net.minecraftforge.api.distmarker.Dist;
19+
import net.minecraftforge.client.event.RenderLevelStageEvent;
20+
import net.minecraftforge.eventbus.api.SubscribeEvent;
21+
import net.minecraftforge.fml.common.Mod;
22+
23+
@Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE, modid = AdvancedPeripherals.MOD_ID)
24+
public class OverlayModuleLevelRenderer {
25+
26+
@SubscribeEvent
27+
public static void renderLevelState(RenderLevelStageEvent event) {
28+
PoseStack posestack = event.getPoseStack();
29+
Vec3 view = Minecraft.getInstance().getEntityRenderDispatcher().camera.getPosition();
30+
31+
BufferBuilder bufferbuilder = Tesselator.getInstance().getBuilder();
32+
if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS) {
33+
bufferbuilder.begin(RenderType.solid().mode(), DefaultVertexFormat.BLOCK);
34+
BlockPos blockPos = new BlockPos(0, 190, 0);
35+
36+
posestack.pushPose();
37+
posestack.translate(-view.x + blockPos.getX(), -view.y + blockPos.getY(), -view.z + blockPos.getZ());
38+
float[] colors = EnumColor.GREEN.getRgb();
39+
RenderSystem.setShaderColor(colors[0], colors[1], colors[2], 0.8f);
40+
41+
Minecraft.getInstance().getBlockRenderer().renderBatched(Blocks.STONE.defaultBlockState(), blockPos, event.getCamera().getEntity().level, posestack, bufferbuilder, false, event.getCamera().getEntity().level.random);
42+
BufferUploader.drawWithShader(bufferbuilder.end());
43+
RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
44+
45+
posestack.popPose();
46+
47+
blockPos = new BlockPos(2, 190, 0);
48+
49+
colors = EnumColor.DARK_PURPLE.getRgb();
50+
51+
RenderSystem.setShader(GameRenderer::getPositionColorShader);
52+
bufferbuilder.begin(RenderType.translucent().mode(), DefaultVertexFormat.POSITION_COLOR_NORMAL);
53+
posestack.pushPose();
54+
55+
posestack.translate(-view.x + blockPos.getX(), -view.y + blockPos.getY(), -view.z + blockPos.getZ());
56+
57+
RenderUtil.drawPlane(posestack, bufferbuilder, colors[0], colors[1], colors[2], 0.8f, RenderUtil.Perspective.UP, 0f, 0.5f, 0f, 0.5f, 0f, 1f);
58+
59+
BufferUploader.drawWithShader(bufferbuilder.end());
60+
posestack.popPose();
61+
posestack.pushPose();
62+
RenderSystem.setShader(GameRenderer::getPositionColorShader);
63+
bufferbuilder.begin(RenderType.translucent().mode(), DefaultVertexFormat.POSITION_COLOR_NORMAL);
64+
65+
blockPos = new BlockPos(5, 190, 0);
66+
posestack.translate(-view.x + blockPos.getX(), -view.y + blockPos.getY(), -view.z + blockPos.getZ());
67+
68+
RenderUtil.drawBox(posestack, bufferbuilder, colors[0], colors[1], colors[2], 0.8f, 16f, 16f, 12f);
69+
BufferUploader.drawWithShader(bufferbuilder.end());
70+
posestack.popPose();
71+
72+
}
73+
}
74+
75+
}

src/main/java/de/srendi/advancedperipherals/client/smartglasses/OverlayModuleOverlay.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package de.srendi.advancedperipherals.client.smartglasses;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
55
import net.minecraftforge.client.gui.overlay.ForgeGui;
66
import net.minecraftforge.client.gui.overlay.IGuiOverlay;
77

src/main/java/de/srendi/advancedperipherals/client/smartglasses/OverlayObjectHolder.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package de.srendi.advancedperipherals.client.smartglasses;
22

33
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.ObjectDecodeRegistry;
4-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.CircleObject;
5-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.ItemObject;
6-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RectangleObject;
7-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
8-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.TextObject;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.three_dim.BlockObject;
5+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.CircleObject;
6+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.ItemObject;
7+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RectangleObject;
8+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
9+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.TextObject;
910

1011
import java.util.Collection;
1112
import java.util.HashMap;
@@ -45,5 +46,7 @@ public static void registerDecodeObjects() {
4546
ObjectDecodeRegistry.register(CircleObject.TYPE_ID, CircleObject::decode);
4647
ObjectDecodeRegistry.register(TextObject.TYPE_ID, TextObject::decode);
4748
ObjectDecodeRegistry.register(ItemObject.TYPE_ID, ItemObject::decode);
49+
50+
ObjectDecodeRegistry.register(BlockObject.TYPE_ID, BlockObject::decode);
4851
}
4952
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package de.srendi.advancedperipherals.client.smartglasses.objects;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
5+
import net.minecraftforge.client.gui.overlay.ForgeGui;
6+
7+
import java.util.List;
8+
9+
public class BlockRenderer implements IObjectRenderer {
10+
11+
@Override
12+
public void renderBatch(List<RenderableObject> objects, ForgeGui gui, PoseStack poseStack, float partialTick, int screenWidth, int screenHeight) {
13+
14+
}
15+
}

src/main/java/de/srendi/advancedperipherals/client/smartglasses/objects/CircleRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import com.mojang.blaze3d.vertex.Tesselator;
99
import com.mojang.blaze3d.vertex.VertexFormat;
1010
import com.mojang.math.Matrix4f;
11-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.CircleObject;
12-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
11+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.CircleObject;
12+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
1313
import net.minecraft.client.renderer.GameRenderer;
1414
import net.minecraftforge.client.gui.overlay.ForgeGui;
1515

src/main/java/de/srendi/advancedperipherals/client/smartglasses/objects/IObjectRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package de.srendi.advancedperipherals.client.smartglasses.objects;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
55
import net.minecraftforge.client.gui.overlay.ForgeGui;
66

77
import java.util.List;

src/main/java/de/srendi/advancedperipherals/client/smartglasses/objects/ItemRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package de.srendi.advancedperipherals.client.smartglasses.objects;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.ItemObject;
5-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.ItemObject;
5+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
66
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
77
import net.minecraft.client.Minecraft;
88
import net.minecraft.world.item.Item;

src/main/java/de/srendi/advancedperipherals/client/smartglasses/objects/RectangleRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.mojang.blaze3d.vertex.Tesselator;
99
import com.mojang.blaze3d.vertex.VertexFormat;
1010
import com.mojang.math.Matrix4f;
11-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
11+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
1212
import net.minecraft.client.renderer.GameRenderer;
1313
import net.minecraftforge.client.gui.overlay.ForgeGui;
1414

src/main/java/de/srendi/advancedperipherals/client/smartglasses/objects/TextRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package de.srendi.advancedperipherals.client.smartglasses.objects;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.RenderableObject;
5-
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.TextObject;
4+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.RenderableObject;
5+
import de.srendi.advancedperipherals.common.smartglasses.modules.overlay.objects.two_dim.TextObject;
66
import net.minecraft.client.Minecraft;
77
import net.minecraftforge.client.gui.overlay.ForgeGui;
88

0 commit comments

Comments
 (0)