Jelajahi Sumber

- Update volumetric lightmaps

ShiroSmith 7 tahun lalu
induk
melakukan
49e603da23
2 mengubah file dengan 8 tambahan dan 13 penghapusan
  1. 1 0
      h3d/scene/CameraController.hx
  2. 7 13
      h3d/scene/pbr/LightProbeBaker.hx

+ 1 - 0
h3d/scene/CameraController.hx

@@ -30,6 +30,7 @@ class CameraController extends h3d.scene.Object {
 
 	public function new(?distance,?parent) {
 		super(parent);
+		name = "CameraController";
 		set(distance);
 		flags.set(FNoSerialize,true);
 		toTarget();

+ 7 - 13
h3d/scene/pbr/LightProbeBaker.hx

@@ -7,13 +7,6 @@ class LightProbeBaker {
 	public var useGPU = false;
 	public var environment : h3d.scene.pbr.Environment;
 
-	var output = new h3d.pass.Output("mrt",[
-		Value("output.color"),
-		Vec4([Value("output.normal",3),Value("output.depth",1)]),
-		Vec4([Value("output.metalness"), Value("output.roughness"), Value("output.occlusion"), Const(0)]),
-		Vec4([Value("output.emissive"),Const(0),Const(0),Const(0)])
-	]);
-
 	var envMap : h3d.mat.Texture;
 	var customCamera = new h3d.Camera();
 	var cubeDir = [ h3d.Matrix.L([0,0,-1,0, 0,1,0,0, -1,-1,1,0]),
@@ -64,8 +57,8 @@ class LightProbeBaker {
 			// Bake a Probe
 			for( f in 0...6 ) {
 				engine.begin();
-				s3d.camera.setCubeMap(f, volumetricLightMap.lightProbes[index].position);
-				s3d.camera.update();
+				customCamera.setCubeMap(f, volumetricLightMap.lightProbes[index].position);
+				customCamera.update();
 				engine.pushTarget(envMap, f);
 				engine.clear(0,1,0);
 				s3d.render(engine);
@@ -85,6 +78,7 @@ class LightProbeBaker {
 		s3d.renderer = oldRenderer;
 		s3d.renderer.renderMode = oldRenderMode;
 
+
 		return time - timeElapsed;
 	}
 
@@ -100,16 +94,15 @@ class LightProbeBaker {
 		var oldRenderMode = renderer.renderMode;
 		s3d.renderer = renderer;
 		s3d.renderer.renderMode = LightProbe;
-		var camera = new h3d.Camera();
-		s3d.camera = camera;
+		s3d.camera = customCamera;
 		var engine = h3d.Engine.getCurrent();
 
 		for( i in 0 ... volumetricLightMap.lightProbes.length){
 			// Render the 6 faces
 			for( f in 0...6 ) {
 				engine.begin();
-				camera.setCubeMap(f, volumetricLightMap.lightProbes[i].position);
-				camera.update();
+				customCamera.setCubeMap(f, volumetricLightMap.lightProbes[i].position);
+				customCamera.update();
 				engine.pushTarget(envMap, f);
 				engine.clear(0,1,0);
 				s3d.render(engine);
@@ -123,6 +116,7 @@ class LightProbeBaker {
 		s3d.camera = oldCamera;
 		s3d.renderer = oldRenderer;
 		s3d.renderer.renderMode = oldRenderMode;
+
 	}
 
 	function setupEnvMap(resolution : Int){