mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
attempt fix marble smooth and fix few dif bugs, add more materials for customs
This commit is contained in:
parent
7fd23609f5
commit
2c404d4ba3
4 changed files with 40 additions and 8 deletions
|
|
@ -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:Map<String, (hxsl.Shader->Void)->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)) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue