Finishing work on font renderer and working UIRenderer

This commit is contained in:
Speiger 2025-02-23 04:09:49 +01:00
parent a061b267f7
commit 857f5eec64
12 changed files with 26 additions and 8 deletions

View File

@ -66,7 +66,7 @@ public class NewInputTest {
} }
private void applyWindowSize(Window window) { private void applyWindowSize(Window window) {
int scale = 0; int scale = 2;
guiShader.get().proView.set(new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000)); guiShader.get().proView.set(new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000));
} }

View File

@ -68,8 +68,7 @@ public abstract non-sealed class GuiComponent extends FlagObject implements ICas
animator = null; animator = null;
} }
public void updateComponent() { protected void updateComponent() {
children.forEach(GuiComponent::updateComponent);
} }
protected void renderComponent(IUIRenderer renderer, int mouseX, int mouseY, float partialTicks) { protected void renderComponent(IUIRenderer renderer, int mouseX, int mouseY, float partialTicks) {
@ -83,6 +82,14 @@ public abstract non-sealed class GuiComponent extends FlagObject implements ICas
} }
} }
public static void tickComponent(GuiComponent comp) {
if(comp.renderer != null && comp.renderer.overrideTick()) {
comp.renderer.updateComponent(comp);
}
else comp.updateComponent();
comp.children.forEach(GuiComponent::tickComponent);
}
public static boolean renderComponent(GuiComponent comp, IUIRenderer renderer, int mouseX, int mouseY, float partialTicks) { public static boolean renderComponent(GuiComponent comp, IUIRenderer renderer, int mouseX, int mouseY, float partialTicks) {
if(!comp.isVisible()) return false; if(!comp.isVisible()) return false;
comp.updateAnimations(partialTicks); comp.updateAnimations(partialTicks);

View File

@ -4,4 +4,6 @@ import speiger.src.coreengine.rendering.gui.renderer.IUIRenderer;
public interface IComponentRenderer<T extends GuiComponent> { public interface IComponentRenderer<T extends GuiComponent> {
public void renderComponent(T component, IUIRenderer renderer, int mouseX, int mouseY, float particalTicks); public void renderComponent(T component, IUIRenderer renderer, int mouseX, int mouseY, float particalTicks);
public default boolean overrideTick() { return false; }
public default void updateComponent(T component) {}
} }

View File

@ -83,7 +83,7 @@ public class GuiContainer implements IComponentScreen, IInteractableContainer {
public void tick() { public void tick() {
for(Object2BooleanMap.Entry<GuiComponent> entry : container) { for(Object2BooleanMap.Entry<GuiComponent> entry : container) {
entry.getKey().updateComponent(); GuiComponent.tickComponent(entry.getKey());
} }
} }

View File

@ -50,6 +50,7 @@ public class GLFunctions {
GL45.glTextureSubImage2D(texture, mipmaps, 0, 0, width, height, externalFormat, dataFormat, pixels); GL45.glTextureSubImage2D(texture, mipmaps, 0, 0, width, height, externalFormat, dataFormat, pixels);
} }
public static void upload2DSubImage(int texture, int level, int xoffset, int yoffset, int width, int height, ITextureFormatType format, IGLDataType type, long pixels) { public static void upload2DSubImage(int texture, int level, int xoffset, int yoffset, int width, int height, ITextureFormatType format, IGLDataType type, long pixels) {
// if(format.internal()) throw new IllegalArgumentException("Format ["+format.glValue()+"] is internal"); // if(format.internal()) throw new IllegalArgumentException("Format ["+format.glValue()+"] is internal");
upload2DSubImage(texture, level, xoffset, yoffset, width, height, format.glValue(), type.glValue(), pixels); upload2DSubImage(texture, level, xoffset, yoffset, width, height, format.glValue(), type.glValue(), pixels);

View File

@ -0,0 +1,10 @@
{
"type": "free-ttf",
"regular": {
"file": "font/rainyhearts/rainyhearts.ttf",
"oversample": 2,
"shadowOffset": 1,
"skip": "",
"offset": { "x": 0, "y": 0 }
}
}

View File

@ -1,7 +1,7 @@
{ {
"type": "free-ttf", "type": "free-ttf",
"regular": { "regular": {
"file": "font/roboto/rainyhearts.ttf", "file": "font/roboto/Roboto-Light.ttf",
"oversample": 2, "oversample": 2,
"shadowOffset": 1, "shadowOffset": 1,
"skip": "", "skip": "",

View File

@ -9,7 +9,5 @@ uniform sampler2D texture;
void main() void main()
{ {
vec4 color = pass_color * texture2D(texture, pass_tex); frag_color = pass_color * texture2D(texture, pass_tex);
if(color.a < 0.25) discard;
frag_color = color;
} }