Преглед на файлове

Merge pull request #965 from HeapsIO/clement_dev

Disable shadows option (including screen lights and static shadows) m…
clementlandrin преди 4 години
родител
ревизия
d27db785d1
променени са 3 файла, в които са добавени 7 реда и са изтрити 8 реда
  1. 2 0
      h3d/scene/Renderer.hx
  2. 2 2
      h3d/scene/pbr/LightSystem.hx
  3. 3 6
      h3d/scene/pbr/Renderer.hx

+ 2 - 0
h3d/scene/Renderer.hx

@@ -32,6 +32,8 @@ class Renderer extends hxd.impl.AnyProps {
 
 	public var renderMode : RenderMode = Default;
 
+	public var shadows : Bool = true;
+
 	public function new() {
 		allPasses = [];
 		passObjects = new Map();

+ 2 - 2
h3d/scene/pbr/LightSystem.hx

@@ -45,7 +45,7 @@ class LightSystem extends h3d.scene.LightSystem {
 		passes.reset();
 	}
 
-	public function drawScreenLights( r : h3d.scene.Renderer, lightPass : h3d.pass.ScreenFx<Dynamic> ) {
+	public function drawScreenLights( r : h3d.scene.Renderer, lightPass : h3d.pass.ScreenFx<Dynamic>, shadows : Bool = true ) {
 		var plight = @:privateAccess ctx.lights;
 		var currentTarget = ctx.engine.getCurrentTarget();
 		var width = currentTarget == null ? ctx.engine.width : currentTarget.width;
@@ -53,7 +53,7 @@ class LightSystem extends h3d.scene.LightSystem {
 		while( plight != null ) {
 			var light = hxd.impl.Api.downcast(plight, h3d.scene.pbr.Light);
 			if( light != null && light.primitive == null ) {
-				if( light.shadows.shader != null ) lightPass.addShader(light.shadows.shader);
+				if( light.shadows.shader != null && shadows) lightPass.addShader(light.shadows.shader);
 				lightPass.addShader(light.shader);
 				lightPass.render();
 				lightPass.removeShader(light.shader);

+ 3 - 6
h3d/scene/pbr/Renderer.hx

@@ -41,7 +41,6 @@ typedef RenderProps = {
 	var tone : TonemapMap;
 	var emissive : Float;
 	var occlusion : Float;
-	var shadows : Bool;
 }
 
 class DepthCopy extends h3d.shader.ScreenShader {
@@ -82,7 +81,6 @@ class Renderer extends h3d.scene.Renderer {
 	public var displayMode : DisplayMode = Pbr;
 	public var env : Environment;
 	public var exposure(get,set) : Float;
-	public var shadows = true;
 	var debugShadowMapIndex = 0;
 
 	static var ALPHA : hxsl.Output = Swiz(Value("output.color"),[W]);
@@ -215,7 +213,7 @@ class Renderer extends h3d.scene.Renderer {
 		pbrProps.isScreen = true;
 		if( ls != null ) {
 			var count = ctx.engine.drawCalls;
-			ls.drawScreenLights(this, lpass);
+			ls.drawScreenLights(this, lpass, shadows);
 			ctx.lightSystem.drawPasses += ctx.engine.drawCalls - count;
 		}
 		// Direct Lighting - With Primitive
@@ -312,6 +310,8 @@ class Renderer extends h3d.scene.Renderer {
 	override function computeStatic() {
 		var light = @:privateAccess ctx.lights;
 		var passes = get("shadow");
+		if (!shadows)
+			passes.clear();
 		while( light != null ) {
 			var plight = hxd.impl.Api.downcast(light, h3d.scene.pbr.Light);
 			if( plight != null ) {
@@ -592,7 +592,6 @@ class Renderer extends h3d.scene.Renderer {
 			sky : Irrad,
 			tone : Linear,
 			occlusion : 1.,
-			shadows: true
 		};
 		return props;
 	}
@@ -607,7 +606,6 @@ class Renderer extends h3d.scene.Renderer {
 		skyMode = props.sky;
 		toneMode = props.tone;
 		exposure = props.exposure;
-		shadows = props.shadows;
 	}
 
 	#if editor
@@ -657,7 +655,6 @@ class Renderer extends h3d.scene.Renderer {
 					<dt>Emissive</dt><dd><input type="range" min="0" max="2" field="emissive"></dd>
 					<dt>Occlusion</dt><dd><input type="range" min="0" max="2" field="occlusion"></dd>
 					<dt>Exposure</dt><dd><input type="range" min="-3" max="3" field="exposure"></dd>
-					<dt>Shadows</dt><dd><input type="checkbox" field="shadows"></dd>
 				</div>
 			</dl>
 			</div>