From bc74b910667522d2243bb0ba6aab1338b4f6133d Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 24 Dec 2024 16:45:15 -0500 Subject: [PATCH 1/3] fix rendering size on nonstandard monitor --- buildNumber.properties | 4 ++-- ...ere_server_fluid_simulator_FluidAcceleratedSimulator.h | 4 ++-- src/main/java/electrosphere/engine/Globals.java | 2 +- src/main/java/electrosphere/game/config/UserSettings.java | 3 ++- src/main/java/electrosphere/renderer/RenderingEngine.java | 6 +++--- .../renderer/pipelines/PostProcessingPipeline.java | 8 ++++---- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/buildNumber.properties b/buildNumber.properties index a92c4c9f..6ae86f2c 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Fri Dec 06 21:26:11 EST 2024 -buildNumber=600 +#Tue Dec 24 16:29:47 EST 2024 +buildNumber=603 diff --git a/src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h b/src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h index 6b2ad3a2..6c0f565d 100644 --- a/src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h +++ b/src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h @@ -8,9 +8,9 @@ extern "C" { #endif #undef electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_SIMULATE_TIMESTEP -#define electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_SIMULATE_TIMESTEP 0.01f +#define electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_SIMULATE_TIMESTEP 0.1f #undef electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_GRAVITY_CONST -#define electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_GRAVITY_CONST -1000.0f +#define electrosphere_server_fluid_simulator_FluidAcceleratedSimulator_GRAVITY_CONST -100.0f /* * Class: electrosphere_server_fluid_simulator_FluidAcceleratedSimulator * Method: init diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index 9e525394..8ea65803 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -170,7 +170,7 @@ public class Globals { public static boolean RUN_DEMO = false; public static boolean RUN_CLIENT = true; public static boolean RUN_HIDDEN = false; //glfw session will be created with hidden window - public static boolean RUN_AUDIO = true; + public static boolean RUN_AUDIO = false; public static boolean RUN_SCRIPTS = true; public static boolean RUN_PHYSICS = true; //toggles whether physics is run or not public static int clientCharacterID; diff --git a/src/main/java/electrosphere/game/config/UserSettings.java b/src/main/java/electrosphere/game/config/UserSettings.java index 14f4fd71..cdc0f714 100644 --- a/src/main/java/electrosphere/game/config/UserSettings.java +++ b/src/main/java/electrosphere/game/config/UserSettings.java @@ -41,7 +41,8 @@ public class UserSettings { */ boolean graphicsPerformanceEnableFoliageManager; - //resolution + //resolution to render at + //this will be scaled to displayWidth/displayHeight after rendering int renderResolutionX; int renderResolutionY; //debug diff --git a/src/main/java/electrosphere/renderer/RenderingEngine.java b/src/main/java/electrosphere/renderer/RenderingEngine.java index 8409b4d8..eac0ebd5 100644 --- a/src/main/java/electrosphere/renderer/RenderingEngine.java +++ b/src/main/java/electrosphere/renderer/RenderingEngine.java @@ -314,12 +314,12 @@ public class RenderingEngine { defaultFramebuffer = new Framebuffer(GL_DEFAULT_FRAMEBUFFER); //generate framebuffers - Texture screenTextureColor = FramebufferUtils.generateScreenTextureColorAlpha(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT); + Texture screenTextureColor = FramebufferUtils.generateScreenTextureColorAlpha(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); RenderingEngine.screenTextureColor = screenTextureColor; - Texture screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT); + Texture screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); RenderingEngine.screenTextureDepth = screenTextureDepth; try { - Framebuffer screenFramebuffer = FramebufferUtils.generateScreenTextureFramebuffer(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, screenTextureColor, screenTextureDepth); + Framebuffer screenFramebuffer = FramebufferUtils.generateScreenTextureFramebuffer(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY(), screenTextureColor, screenTextureDepth); RenderingEngine.screenFramebuffer = screenFramebuffer; } catch (Exception e){ LoggerInterface.loggerRenderer.ERROR(e); diff --git a/src/main/java/electrosphere/renderer/pipelines/PostProcessingPipeline.java b/src/main/java/electrosphere/renderer/pipelines/PostProcessingPipeline.java index f70f0cd5..b690f4ad 100644 --- a/src/main/java/electrosphere/renderer/pipelines/PostProcessingPipeline.java +++ b/src/main/java/electrosphere/renderer/pipelines/PostProcessingPipeline.java @@ -37,10 +37,10 @@ public class PostProcessingPipeline implements RenderPipeline { */ public void init(OpenGLState openGLState){ postProcessingShader = VisualShader.loadSpecificShader("Shaders/core/postprocessing/postprocessing.vs", "Shaders/core/postprocessing/postprocessing.fs"); - Texture screenTextureColor = FramebufferUtils.generateScreenTextureColorAlpha(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT); - Texture screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT); + Texture screenTextureColor = FramebufferUtils.generateScreenTextureColorAlpha(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); + Texture screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); try { - postProcessBuffer = FramebufferUtils.generateScreenTextureFramebuffer(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, screenTextureColor, screenTextureDepth); + postProcessBuffer = FramebufferUtils.generateScreenTextureFramebuffer(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY(), screenTextureColor, screenTextureDepth); } catch (Exception e){ LoggerInterface.loggerRenderer.ERROR(e); } @@ -54,7 +54,7 @@ public class PostProcessingPipeline implements RenderPipeline { // openGLState.glDepthTest(false); openGLState.glBlend(false); - openGLState.glViewport(Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT); + openGLState.glViewport(Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); postProcessBuffer.bind(openGLState); From 3c43bca798ac73e743813e23c783ab58841a5712 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 24 Dec 2024 17:03:43 -0500 Subject: [PATCH 2/3] fix shader data type --- assets/Shaders/FragmentShader.fs | 4 ++-- assets/Shaders/core/oit/general/FragmentShader.fs | 4 ++-- assets/Shaders/entities/fluid2/fluid2.fs | 4 ++-- assets/Shaders/entities/foliage/foliage.fs | 4 ++-- assets/Shaders/entities/foliage/foliage.vs | 4 ++-- assets/Shaders/entities/particle/particle.fs | 4 ++-- assets/Shaders/entities/terrain2/terrain2.fs | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/assets/Shaders/FragmentShader.fs b/assets/Shaders/FragmentShader.fs index 717a81ae..ae0ba1bb 100644 --- a/assets/Shaders/FragmentShader.fs +++ b/assets/Shaders/FragmentShader.fs @@ -17,7 +17,7 @@ in vec2 TexCoord; in vec4 FragPosLightSpace; -uniform vec3 viewPos; +uniform dvec3 viewPos; uniform Material material; /** @@ -30,7 +30,7 @@ void main(){ discard; } vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity vec3 lightIntensity = vec3(calcLightIntensityTotal(norm)); diff --git a/assets/Shaders/core/oit/general/FragmentShader.fs b/assets/Shaders/core/oit/general/FragmentShader.fs index 535ad36f..9b904637 100644 --- a/assets/Shaders/core/oit/general/FragmentShader.fs +++ b/assets/Shaders/core/oit/general/FragmentShader.fs @@ -22,7 +22,7 @@ in vec4 FragPosLightSpace; //view position -uniform vec3 viewPos; +uniform dvec3 viewPos; //material uniform Material material; @@ -41,7 +41,7 @@ float weightCalcNew(float finalAlpha, float zLoc, float linearizedLoc); void main(){ vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity vec3 lightIntensity = vec3(calcLightIntensityTotal(norm)); diff --git a/assets/Shaders/entities/fluid2/fluid2.fs b/assets/Shaders/entities/fluid2/fluid2.fs index 5d3597a8..92e8fc8a 100644 --- a/assets/Shaders/entities/fluid2/fluid2.fs +++ b/assets/Shaders/entities/fluid2/fluid2.fs @@ -18,7 +18,7 @@ in vec2 texPlane3; in vec4 FragPosLightSpace; -uniform vec3 viewPos; +uniform dvec3 viewPos; uniform Material material; @@ -29,7 +29,7 @@ vec3 getColor(vec2 texPlane1, vec2 texPlane2, vec2 texPlane3, vec3 normal, Mater void main(){ vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity float lightIntensity = calcLightIntensityTotal(norm); diff --git a/assets/Shaders/entities/foliage/foliage.fs b/assets/Shaders/entities/foliage/foliage.fs index 78933346..82c92a28 100644 --- a/assets/Shaders/entities/foliage/foliage.fs +++ b/assets/Shaders/entities/foliage/foliage.fs @@ -19,7 +19,7 @@ in vec3 normalRot1; in vec3 normalRot2; -uniform vec3 viewPos; +uniform dvec3 viewPos; // uniform DirLight dirLight; // uniform PointLight pointLights[NR_POINT_LIGHTS]; // uniform SpotLight spotLight; @@ -58,7 +58,7 @@ void main(){ float normalMultiplier = -(1.0 + -2.0 * int(gl_FrontFacing)); vec3 norm = normalize(mix(normalRot1,normalRot2,normalMix) * normalMultiplier); // vec3 norm = normalize(Normal * normalMultiplier); - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity vec3 lightIntensity = vec3(calcLightIntensityTotal(norm)); diff --git a/assets/Shaders/entities/foliage/foliage.vs b/assets/Shaders/entities/foliage/foliage.vs index a3bb74a9..fcd50f0d 100644 --- a/assets/Shaders/entities/foliage/foliage.vs +++ b/assets/Shaders/entities/foliage/foliage.vs @@ -31,7 +31,7 @@ uniform mat4 model; uniform mat4 view; uniform mat4 projection; uniform mat4 lightSpaceMatrix; -uniform vec3 viewPos; +uniform dvec3 viewPos; uniform vec3 modelWorldPos; uniform float time; @@ -151,7 +151,7 @@ void main() { //shift in viewspace to make it feel slightly fuller // //dot view and normal - vec3 viewDir = normalize(viewPos - FinalVertex.xyz); + vec3 viewDir = normalize(vec3(viewPos) - FinalVertex.xyz); float viewDotNormal = clamp(dot(FinalNormal.xz,viewDir.xz),0,1); //calculate thinkening factor to shift verts slightly based on view angle float viewSpaceThickenFactor = easeOut(1.0 - viewDotNormal); diff --git a/assets/Shaders/entities/particle/particle.fs b/assets/Shaders/entities/particle/particle.fs index e800cdad..0f98f0fe 100644 --- a/assets/Shaders/entities/particle/particle.fs +++ b/assets/Shaders/entities/particle/particle.fs @@ -22,7 +22,7 @@ in vec4 FragPosLightSpace; in vec4 instanceColor; -uniform vec3 viewPos; +uniform dvec3 viewPos; uniform Material material; uniform mat4 view; @@ -37,7 +37,7 @@ float easeIn(float interpolator); float easeOut(float interpolator); void main(){ - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity vec3 lightIntensity = vec3(calcLightIntensityTotal(Normal)); diff --git a/assets/Shaders/entities/terrain2/terrain2.fs b/assets/Shaders/entities/terrain2/terrain2.fs index cbc9f3c8..e55cbedc 100644 --- a/assets/Shaders/entities/terrain2/terrain2.fs +++ b/assets/Shaders/entities/terrain2/terrain2.fs @@ -27,7 +27,7 @@ in vec3 samplerIndexVec; //the indices in the atlas of textures to sample in vec3 samplerRatioVec; //the vector of HOW MUCH to pull from each texture in the atlas -uniform vec3 viewPos; +uniform dvec3 viewPos; // uniform DirLight dirLight; // uniform PointLight pointLights[NR_POINT_LIGHTS]; // uniform SpotLight spotLight; @@ -45,7 +45,7 @@ vec3 getColor(vec2 texPlane1, vec2 texPlane2, vec2 texPlane3, vec3 normal, vec3 void main(){ vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - FragPos); + vec3 viewDir = normalize(vec3(viewPos) - FragPos); //grab light intensity vec3 lightIntensity = vec3(calcLightIntensityTotal(norm)); From 9472a990b4ed169b4cd7be9d6faa63f81ad42876 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 24 Dec 2024 17:15:21 -0500 Subject: [PATCH 3/3] fix particle shader datatype --- assets/Shaders/entities/particle/particle.vs | 4 ++-- .../electrosphere/client/entity/particle/ParticleService.java | 2 +- .../renderer/actor/instance/HomogenousInstanceData.java | 2 +- .../renderer/buffer/HomogenousInstancedArray.java | 2 +- .../renderer/buffer/HomogenousUniformBuffer.java | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/Shaders/entities/particle/particle.vs b/assets/Shaders/entities/particle/particle.vs index 2beafcb6..2f85a1e7 100644 --- a/assets/Shaders/entities/particle/particle.vs +++ b/assets/Shaders/entities/particle/particle.vs @@ -10,7 +10,7 @@ Bind points for different SSBOs A point light */ struct ParticleData { - mat4 model; + dmat4 model; vec4 color; vec4 texture; }; @@ -48,7 +48,7 @@ out vec4 instanceColor; void main() { ParticleData currentParticle = particleData[gl_InstanceID]; - mat4 model = currentParticle.model; + mat4 model = mat4(currentParticle.model); //normalize posiiton and normal vec4 FinalVertex = vec4(aPos, 1.0); diff --git a/src/main/java/electrosphere/client/entity/particle/ParticleService.java b/src/main/java/electrosphere/client/entity/particle/ParticleService.java index ff443d4d..dbb15775 100644 --- a/src/main/java/electrosphere/client/entity/particle/ParticleService.java +++ b/src/main/java/electrosphere/client/entity/particle/ParticleService.java @@ -96,7 +96,7 @@ public class ParticleService extends SignalServiceImpl { boolean rVal = false; switch(signal.getType()){ case RENDERING_ENGINE_READY: { - modelAttrib = new ShaderAttribute("model", HomogenousBufferTypes.MAT4F); + modelAttrib = new ShaderAttribute("model", HomogenousBufferTypes.MAT4D); colorAttrib = new ShaderAttribute("color", HomogenousBufferTypes.VEC4F); textureAttrib = new ShaderAttribute("texture", HomogenousBufferTypes.VEC4F); List types = Arrays.asList(new ShaderAttribute[]{ diff --git a/src/main/java/electrosphere/renderer/actor/instance/HomogenousInstanceData.java b/src/main/java/electrosphere/renderer/actor/instance/HomogenousInstanceData.java index 46a2a111..33d85bb1 100644 --- a/src/main/java/electrosphere/renderer/actor/instance/HomogenousInstanceData.java +++ b/src/main/java/electrosphere/renderer/actor/instance/HomogenousInstanceData.java @@ -97,7 +97,7 @@ public class HomogenousInstanceData implements InstanceData { attributeCpuBufferMap.put(shaderAttribute, BufferUtils.createFloatBuffer(capacity * 4 * 4)); } break; case MAT4D: { - attributeCpuBufferMap.put(shaderAttribute, BufferUtils.createFloatBuffer(capacity * 4 * 4)); + attributeCpuBufferMap.put(shaderAttribute, BufferUtils.createFloatBuffer(capacity * 4 * 8)); } break; } if(shaderAttribute.isSingleIndex()){ diff --git a/src/main/java/electrosphere/renderer/buffer/HomogenousInstancedArray.java b/src/main/java/electrosphere/renderer/buffer/HomogenousInstancedArray.java index d125c0dd..9950b558 100644 --- a/src/main/java/electrosphere/renderer/buffer/HomogenousInstancedArray.java +++ b/src/main/java/electrosphere/renderer/buffer/HomogenousInstancedArray.java @@ -120,7 +120,7 @@ public class HomogenousInstancedArray { return capacity * 4 * 4 * 4; } case MAT4D: { - return capacity * 4 * 4 * 4; + return capacity * 4 * 4 * 8; } } return 0; diff --git a/src/main/java/electrosphere/renderer/buffer/HomogenousUniformBuffer.java b/src/main/java/electrosphere/renderer/buffer/HomogenousUniformBuffer.java index 4c91cc8e..09302dda 100644 --- a/src/main/java/electrosphere/renderer/buffer/HomogenousUniformBuffer.java +++ b/src/main/java/electrosphere/renderer/buffer/HomogenousUniformBuffer.java @@ -113,7 +113,7 @@ public class HomogenousUniformBuffer { return capacity * 4 * 4 * 4; } case MAT4D: { - return capacity * 4 * 4 * 4; + return capacity * 4 * 4 * 8; } } return 0; @@ -150,7 +150,7 @@ public class HomogenousUniformBuffer { return 4 * 4 * 4; } case MAT4D: { - return 4 * 4 * 4; + return 4 * 4 * 8; } } return 0;