skybox shader for real now

This commit is contained in:
RandomityGuy 2021-06-19 19:55:24 +05:30
parent 6e6f2c9fb9
commit ea114423a9
4 changed files with 46 additions and 17 deletions

View file

@ -65,14 +65,14 @@ class Main extends hxd.App {
var mission = new Mission();
mission.root = mis.root;
canvas = new Canvas(s2d);
// canvas = new Canvas(s2d);
canvas.setContent(new MainMenuGui());
// canvas.setContent(new MainMenuGui());
// world = new MarbleWorld(s3d, s2d, mission);
world = new MarbleWorld(s3d, s2d, mission);
// world.init();
// world.start();
world.init();
world.start();
fpsCounter = new Text(DefaultFont.get(), s2d);
fpsCounter.y = 40;
@ -81,17 +81,17 @@ class Main extends hxd.App {
override function update(dt:Float) {
super.update(dt);
var wnd = Window.getInstance();
var mouseState:MouseState = {
position: new Vector(wnd.mouseX, wnd.mouseY)
}
canvas.update(dt, mouseState);
// world.update(dt);
// var wnd = Window.getInstance();
// var mouseState:MouseState = {
// position: new Vector(wnd.mouseX, wnd.mouseY)
// }
// canvas.update(dt, mouseState);
world.update(dt);
fpsCounter.text = 'FPS: ${this.engine.fps}';
}
override function render(e:h3d.Engine) {
// this.world.render(e);
this.world.render(e);
super.render(e);
}

View file

@ -219,7 +219,7 @@ class MarbleWorld extends Scheduler {
this.marble.camera.oob = false;
this.marble.mode = Start;
this.marble.startPad = cast startquat.pad;
// sky.follow = marble;
sky.follow = marble;
var missionInfo:MissionElementScriptObject = cast this.mission.root.elements.filter((element) -> element._type == MissionElementType.ScriptObject
&& element._name == "MissionInfo")[0];
@ -525,6 +525,7 @@ class MarbleWorld extends Scheduler {
if (element.datablock == "OutOfBoundsTrigger") {
trigger = new OutOfBoundsTrigger(element, cast this);
} else if (element.datablock == "InBoundsTrigger") {
return;
trigger = new InBoundsTrigger(element, cast this);
} else if (element.datablock == "HelpTrigger") {
trigger = new HelpTrigger(element, cast this);
@ -587,7 +588,7 @@ class MarbleWorld extends Scheduler {
this.scene.addChild(marble.camera);
this.marble = marble;
// Ugly hack
// sky.follow = marble;
sky.follow = marble;
}
this.collisionWorld.addMovingEntity(marble.collider);
this.scene.addChild(marble);

View file

@ -1,5 +1,6 @@
package src;
import shaders.Skybox;
import h3d.shader.pbr.PropsValues;
import h3d.shader.AmbientLight;
import h3d.scene.pbr.Environment;
@ -38,13 +39,13 @@ class Sky extends Object {
pbrprops.occlusionValue = 0;
pbrprops.metalnessValue = 1;
skyMesh.scale(3000);
skyMesh.scale(3500);
var env = new Environment(texture);
env.compute();
// var renderer = cast(level.scene.renderer, h3d.scene.pbr.Renderer);
var shad = new CubeMap(texture);
var shad = new Skybox(texture);
skyMesh.material.mainPass.addShader(shad);
skyMesh.material.shadows = false;
// skyMesh.material.shadows = false;
}
function createSkyboxCubeTextured(dmlPath:String) {

27
src/shaders/Skybox.hx Normal file
View file

@ -0,0 +1,27 @@
package shaders;
class Skybox extends hxsl.Shader {
static var SRC = {
var pixelColor:Vec4;
var transformedNormal:Vec3;
var transformedPosition:Vec3;
@param var texture:SamplerCube;
@global var camera:{
var position:Vec3;
var viewProj:Mat4;
var view:Mat4;
var proj:Mat4;
};
function vertex() {
transformedNormal = transformedPosition - camera.position;
}
function fragment() {
pixelColor.rgb = texture.get(normalize(transformedNormal)).rgb;
}
}
public function new(texture) {
super();
this.texture = texture;
}
}