diff --git a/assets/Shaders/core/imagepanel/imagepanel.fs b/assets/Shaders/core/imagepanel/imagepanel.fs new file mode 100644 index 00000000..6a4c29c7 --- /dev/null +++ b/assets/Shaders/core/imagepanel/imagepanel.fs @@ -0,0 +1,18 @@ +#version 430 core +out vec4 FragColor; + +in vec2 TexCoords; + +uniform sampler2D screenTexture; +uniform vec3 color; + +void main(){ + vec4 textureColor = texture(screenTexture, TexCoords); + textureColor.r = textureColor.r * color.r; + textureColor.g = textureColor.g * color.g; + textureColor.b = textureColor.b * color.b; + if(textureColor.a < 0.1){ + discard; + } + FragColor = textureColor; +} \ No newline at end of file diff --git a/assets/Shaders/core/imagepanel/imagepanel.vs b/assets/Shaders/core/imagepanel/imagepanel.vs new file mode 100644 index 00000000..8d5d18c4 --- /dev/null +++ b/assets/Shaders/core/imagepanel/imagepanel.vs @@ -0,0 +1,33 @@ +#version 430 core +layout (location = 0) in vec3 aPos; +layout (location = 4) in vec2 aTexCoords; + +out vec2 TexCoords; + +uniform vec3 mPosition; +uniform vec3 mDimension; +uniform vec3 tPosition; +uniform vec3 tDimension; + +void main(){ + + vec2 finalPos = vec2( + ((aPos.x + 1)/2 * mDimension.x + mPosition.x) * 2 - 1, + ((aPos.y + 1)/2 * mDimension.y + (1 - mDimension.y) - mPosition.y) * 2 - 1 + + // ((((aPos.y + 1)/2) * mDimension.y + mPosition.y) * 2 - 1) + // aPos.y * mDimension.y + (mPosition.y) + (1 - mDimension.y) + ); + gl_Position = vec4(finalPos.x, finalPos.y, 0.0, 1.0); + + vec2 finalTex = vec2( + aTexCoords.x * tDimension.x + tPosition.x, + aTexCoords.y * tDimension.y + tPosition.y + ); + // vec2 finalTex = aTexCoords; + // vec2 finalTex = vec2( + // aTexCoords.x + 0.7, + // aTexCoords.y + // ); + TexCoords = finalTex + vec2(0,-1); +} diff --git a/buildNumber.properties b/buildNumber.properties index 88000257..8394a28b 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Sat Nov 16 12:45:38 EST 2024 -buildNumber=387 +#Sat Nov 16 20:18:53 EST 2024 +buildNumber=390 diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index d17e5a06..010a74e4 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1055,6 +1055,7 @@ Update visuals on pine tree (11/16/2024) Mountain generation work Implement crafting +Fix image panel test diff --git a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java index 8d8d2fa2..20f940b8 100644 --- a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java +++ b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java @@ -31,6 +31,7 @@ import electrosphere.renderer.actor.ActorUtils; import electrosphere.renderer.ui.elements.ActorPanel; import electrosphere.renderer.ui.elements.Button; import electrosphere.renderer.ui.elements.FormElement; +import electrosphere.renderer.ui.elements.ImagePanel; import electrosphere.renderer.ui.elements.Slider; import electrosphere.renderer.ui.elements.StringCarousel; import electrosphere.renderer.ui.elements.VirtualScrollable; @@ -61,6 +62,7 @@ public class MenuGeneratorsUITesting { "Generic", "Slider", "Button", + "ImagePanel1", "CharacterCustomizer", "NaturalInventoryPanel", "EquipInventoryPanel", @@ -124,6 +126,15 @@ public class MenuGeneratorsUITesting { case "Button": { formEl.addChild(Button.createButton("test", () -> {})); } break; + case "ImagePanel1": { + Globals.assetManager.addTexturePathtoQueue("Textures/default_diffuse.png"); + ImagePanel panel = ImagePanel.createImagePanel("Textures/default_diffuse.png"); + panel.setMinWidth(100); + panel.setMinHeight(100); + panel.setWidth(100); + panel.setHeight(100); + formEl.addChild(panel); + } break; case "CharacterCustomizer": { formEl.addChild(CharacterCustomizer.createCharacterCustomizerPanel("human", (CreatureTemplate template) ->{})); } break; diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index 51820d67..19869c83 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -655,7 +655,7 @@ public class Globals { solidPlaneModelID = assetManager.registerModel(RenderUtils.createInWindowPanel("Shaders/ui/plainBox/plainBox.vs", "Shaders/ui/plainBox/plainBox.fs")); //image panel - ImagePanel.imagePanelModelPath = assetManager.registerModel(RenderUtils.createPlaneModel("Shaders/core/plane/plane.vs", "Shaders/core/plane/plane.fs")); + ImagePanel.imagePanelModelPath = assetManager.registerModel(RenderUtils.createPlaneModel("Shaders/core/imagepanel/imagepanel.vs", "Shaders/core/imagepanel/imagepanel.fs")); Globals.assetManager.addShaderToQueue("Shaders/ui/plainBox/plainBox.vs", "Shaders/ui/plainBox/plainBox.fs"); diff --git a/src/main/java/electrosphere/renderer/ui/elements/ImagePanel.java b/src/main/java/electrosphere/renderer/ui/elements/ImagePanel.java index 7e18dcfe..db27febd 100644 --- a/src/main/java/electrosphere/renderer/ui/elements/ImagePanel.java +++ b/src/main/java/electrosphere/renderer/ui/elements/ImagePanel.java @@ -133,7 +133,7 @@ public class ImagePanel extends StandardElement implements DrawableElement, Drag boxPosition = new Vector3f(ndcX,ndcY,0); boxDimensions = new Vector3f(ndcWidth,ndcHeight,0); - Model planeModel = Globals.assetManager.fetchModel(Globals.imagePlaneModelID); + Model planeModel = Globals.assetManager.fetchModel(imagePanelModelPath); if(texture != null){ customMat.setTexturePointer(texture.getTexturePointer()); } else if(this.texturePath != null){ diff --git a/test/java/renderer/ui/elements/toggleinput1.png b/test/java/renderer/ui/elements/toggleinput1.png index 1bfd0347..f307b0fb 100644 Binary files a/test/java/renderer/ui/elements/toggleinput1.png and b/test/java/renderer/ui/elements/toggleinput1.png differ