fix some bugs

This commit is contained in:
RandomityGuy 2022-12-10 21:20:38 +05:30
parent 30381deb19
commit 19ca4fef2d
6 changed files with 36 additions and 9 deletions

View file

@ -72,6 +72,7 @@ class InstanceManager {
dtsShader.currentOpacity = instance.gameObject.currentOpacity;
}
var transform = instance.emptyObj.getAbsPos();
minfo.meshbatch.shadersChanged = true;
minfo.meshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
minfo.meshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights;
minfo.meshbatch.setTransform(transform);
@ -79,7 +80,7 @@ class InstanceManager {
}
}
if (minfo.transparencymeshbatch != null) {
var transparentinstances = visibleinstances.filter(x -> x.gameObject.currentOpacity != 1);
var transparentinstances = visibleinstances.filter(x -> x.gameObject.currentOpacity != 1 && x.gameObject.currentOpacity != 0); // Filter out all zero opacity things too
minfo.transparencymeshbatch.begin(transparentinstances.length);
for (instance in transparentinstances) { // Non opaque shit
var dtsShader = minfo.transparencymeshbatch.material.mainPass.getShader(DtsTexture);

View file

@ -323,10 +323,11 @@ class Marble extends GameObject {
if (Settings.optionsSettings.marbleShader == null
|| Settings.optionsSettings.marbleShader == "Default"
|| Settings.optionsSettings.marbleShader == "") {
|| Settings.optionsSettings.marbleShader == ""
|| !isUltra) { // Use this shit everywhere except ultra
mat.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
} else {
// Generate tangents for next shaders
// Generate tangents for next shaders, only for Ultra
for (node in marbleDts.graphNodes) {
for (ch in node.children) {
var chmesh = cast(ch, Mesh);

View file

@ -313,7 +313,7 @@ class MarbleWorld extends Scheduler {
worker.loadFile(file);
}
this.scene.camera.zFar = Std.parseFloat(this.skyElement.visibledistance);
this.scene.camera.zFar = Math.max(4000, Std.parseFloat(this.skyElement.visibledistance));
this.sky = new Sky();
@ -362,8 +362,14 @@ class MarbleWorld extends Scheduler {
"shapes/pads/blue.jpg",
"shapes/pads/green.jpg",
"shapes/items/gem.dts", // Ew ew
"shapes/items/gemshine.png"
"shapes/items/gemshine.png",
];
if (this.game == "ultra") {
marblefiles.push("shapes/balls/pack1/marble20.normal.png");
marblefiles.push("shapes/balls/pack1/marble18.normal.png");
marblefiles.push("shapes/balls/pack1/marble01.normal.png");
marblefiles.push("sound/blast.wav");
}
// Hacky
marblefiles.push(StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""));
if (Settings.optionsSettings.marbleCategoryIndex == 0)

View file

@ -46,13 +46,15 @@ class Sky extends Object {
// pbrprops.occlusionValue = 0;
// pbrprops.metalnessValue = 1;
// skyMesh.scale(3500);
skyMesh.scale(3500);
// var env = new Environment(texture);
// env.compute();
// var renderer = cast(level.scene.renderer, h3d.scene.pbr.Renderer);
var shad = new Skybox(texture);
skyMesh.material.mainPass.removeShader(skyMesh.material.textureShader);
skyMesh.material.mainPass.addShader(shad);
skyMesh.material.mainPass.depthWrite = false;
skyMesh.material.mainPass.depth(false, h3d.mat.Data.Compare.LessEqual);
cubemap = texture;
onFinish();
});

View file

@ -3,21 +3,38 @@ package shaders;
class Skybox extends hxsl.Shader {
static var SRC = {
var pixelColor:Vec4;
var transformedNormal:Vec3;
var transformedPosition:Vec3;
var projectedPosition:Vec4;
@param var texture:SamplerCube;
@global var camera:{
var position:Vec3;
var viewProj:Mat4;
var view:Mat4;
var proj:Mat4;
var projFlip:Float;
};
@input var input:{
var position:Vec3;
};
@global var global:{
@perObject var modelView:Mat4;
};
var output:{
var position:Vec4;
var color:Vec4;
var depth:Float;
};
var projNorm:Vec3;
function __init__() {
transformedPosition = input.position * global.modelView.mat3x4();
projectedPosition = vec4(transformedPosition, 1) * camera.viewProj;
}
function vertex() {
projNorm = transformedPosition - camera.position;
output.position = projectedPosition * vec4(1, camera.projFlip, 1, 1);
}
function fragment() {
pixelColor.rgba = texture.get(normalize(projNorm)).rgba;
output.color = texture.get(normalize(projNorm)).rgba;
}
}

View file

@ -47,7 +47,7 @@ class Trigger extends GameObject {
var mat = new Matrix();
var quat = MisParser.parseRotation(element.rotation);
quat.x = -quat.x;
// quat.w = -quat.w;
quat.w = -quat.w;
quat.toMatrix(mat);
var scale = MisParser.parseVector3(element.scale);
mat.scale(scale.x, scale.y, scale.z);