From 2c404d4ba39479d49d49d0272d800c7270a2102b Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sun, 2 Jun 2024 12:18:47 +0530 Subject: [PATCH] attempt fix marble smooth and fix few dif bugs, add more materials for customs --- src/DifBuilder.hx | 37 +++++++++++++++++++++++++++++--- src/Marble.hx | 5 +++-- src/modes/HuntMode.hx | 2 +- src/shaders/NoiseTileMaterial.hx | 4 ++-- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx index 88281065..e23a151f 100644 --- a/src/DifBuilder.hx +++ b/src/DifBuilder.hx @@ -281,7 +281,8 @@ class DifBuilder { worker.run(); } - static function createNoiseTileMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, noiseSuffix:String, shininess:Float, specular:Vector) { + static function createNoiseTileMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, noiseSuffix:String, shininess:Float, specular:Vector, + uvScale:Float = 1.0) { var worker = new ResourceLoaderWorker(() -> { var diffuseTex = ResourceLoader.getTexture('data/textures/${baseTexture}').resource; diffuseTex.wrap = Repeat; @@ -293,7 +294,7 @@ class DifBuilder { var noiseTex = ResourceLoader.getTexture('data/textures/noise${noiseSuffix}.jpg').resource; noiseTex.wrap = Repeat; noiseTex.mipMap = None; - var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, 1); + var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, uvScale); #if hl shader.useAccurateNoise = true; #end @@ -322,6 +323,9 @@ class DifBuilder { static var shaderMaterialDict:MapVoid)->Void> = [ 'plate_1' => (onFinish) -> createDefaultMaterial(onFinish, 'data/textures/plate.randomize.png', 'data/textures/plate.normal.png', 8, new Vector(1, 1, 0.8, 1), 1, true), + 'plate_1_small' => (onFinish) -> createDefaultMaterial(onFinish, 'data/textures/plate.randomize.png', 'data/textures/plate.normal.png', 8, + new Vector(1, 1, 0.8, 1), 1, false), + // Tiles 'tile_beginner' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '', 40, new Vector(1, 1, 1, 1)), 'tile_beginner_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), 'tile_beginner_red' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red', 40, new Vector(1, 1, 1, 1)), @@ -344,6 +348,33 @@ class DifBuilder { 'tile_advanced_green_shadow' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), 'tile_underside' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_underside.png', '', 40, new Vector(1, 1, 1, 1)), + // 4x4 Variant + 'tile_beginner_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '', 40, new Vector(1, 1, 1, 1), 4), + 'tile_beginner_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_beginner_red_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red', 40, new Vector(1, 1, 1, 1), 4), + 'tile_beginner_red_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_beginner_blue_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue', 40, new Vector(1, 1, 1, 1), 4), + 'tile_beginner_blue_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_intermediate_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '', 40, new Vector(1, 1, 1, 1), 4), + 'tile_intermediate_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_intermediate_red_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red', 40, new Vector(1, 1, 1, 1), 4), + 'tile_intermediate_red_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_intermediate_green_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green', 40, new Vector(1, 1, 1, 1), 4), + 'tile_intermediate_green_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_advanced_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '', 40, new Vector(1, 1, 1, 1), 4), + 'tile_advanced_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_advanced_blue_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue', 40, new Vector(1, 1, 1, 1), 4), + 'tile_advanced_blue_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + 'tile_advanced_green_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green', 40, new Vector(1, 1, 1, 1), 4), + 'tile_advanced_green_shadow_4x4' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green_shadow', 40, + new Vector(0.2, 0.2, 0.2, 0.2), 4), + // Others 'wall_beginner' => (onFinish) -> createDefaultNormalMaterial(onFinish, 'data/textures/wall_beginner.png', 12, new Vector(0.8, 0.8, 0.6, 1)), 'edge_white' => (onFinish) -> createDefaultMaterial(onFinish, 'data/textures/edge_white.png', 'data/textures/edge.normal.png', 50, new Vector(0.8, 0.8, 0.8, 1)), @@ -923,7 +954,7 @@ class DifBuilder { var texture:Texture; var material:Material; - var exactName = StringTools.replace(grp.toLowerCase(), "textures/", ""); + var exactName = stripTexName(StringTools.replace(grp.toLowerCase(), "textures/", "")); if (canFindTex(grp) || shaderMaterialDict.exists(exactName)) { material = h3d.mat.Material.create(); if (shaderMaterialDict.exists(exactName)) { diff --git a/src/Marble.hx b/src/Marble.hx index e4f1c34e..b7829c21 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1942,7 +1942,7 @@ class Marble extends GameObject { function calculateNetSmooth() { if (this.netCorrected) { this.netCorrected = false; - this.netSmoothOffset.load(this.lastRenderPos.sub(this.newPos)); + this.netSmoothOffset.load(this.lastRenderPos.sub(this.oldPos)); // this.oldPos.load(this.posStore); } } @@ -2020,7 +2020,8 @@ class Marble extends GameObject { var newDt = 2.3 * (timeState.dt / 0.4); var smooth = 1.0 / (newDt * (newDt * 0.235 * newDt) + newDt + 1.0 + 0.48 * newDt * newDt); this.netSmoothOffset.scale(smooth); - if (this.netSmoothOffset.lengthSq() < 0.1) + var smoothScale = this.netSmoothOffset.lengthSq(); + if (smoothScale < 0.1 || smoothScale > 10.0) this.netSmoothOffset.set(0, 0, 0); if (oldPos != null && newPos != null) { diff --git a/src/modes/HuntMode.hx b/src/modes/HuntMode.hx index 791f592a..76475916 100644 --- a/src/modes/HuntMode.hx +++ b/src/modes/HuntMode.hx @@ -313,7 +313,7 @@ class HuntMode extends NullMode { } override function onGemPickup(marble:Marble, gem:Gem) { - if (@:privateAccess !marble.isNetUpdate && Net.isHost) { + if ((@:privateAccess !marble.isNetUpdate && Net.isHost) || !Net.isMP) { if (marble == level.marble) AudioManager.playSound(ResourceLoader.getResource('data/sound/gem_collect.wav', ResourceLoader.getAudio, @:privateAccess this.level.soundResources)); diff --git a/src/shaders/NoiseTileMaterial.hx b/src/shaders/NoiseTileMaterial.hx index 971d02db..e20cd96b 100644 --- a/src/shaders/NoiseTileMaterial.hx +++ b/src/shaders/NoiseTileMaterial.hx @@ -39,7 +39,7 @@ class NoiseTileMaterial extends hxsl.Shader { return mat3(vec3(m[0].x, m[1].x, m[2].x), vec3(m[0].y, m[1].y, m[2].y), vec3(m[0].z, m[1].z, m[2].z)); } function vertex() { - calculatedUV = input.uv; + calculatedUV = input.uv * secondaryMapUvFactor; var objToTangentSpace = mat3(input.t, input.b, input.n); outLightVec = vec4(0); var inLightVec = vec3(-0.5732, 0.27536, -0.77176) * mat3(global.modelViewTranspose); @@ -57,7 +57,7 @@ class NoiseTileMaterial extends hxsl.Shader { outLightVec.w = step(0, dot(n, -inLightVec)); } function fragment() { - var bumpNormal = normalMap.get(calculatedUV * secondaryMapUvFactor).xyz * 2 - 1; + var bumpNormal = normalMap.get(calculatedUV).xyz * 2 - 1; var bumpDot = saturate(dot(bumpNormal, outLightVec.xyz)); // Diffuse part var diffuse = diffuseMap.get(calculatedUV);