Pārlūkot izejas kodu

RendererFXVolume: add modulation on volumetric rfx

lviguier 1 mēnesi atpakaļ
vecāks
revīzija
fd700528f2
2 mainītis faili ar 8 papildinājumiem un 2 dzēšanām
  1. 3 0
      h3d/impl/RendererFX.hx
  2. 5 2
      h3d/scene/pbr/Renderer.hx

+ 3 - 0
h3d/impl/RendererFX.hx

@@ -18,5 +18,8 @@ interface RendererFX {
 	public function begin( r : h3d.scene.Renderer, step : Step ) : Void;
 	public function end( r : h3d.scene.Renderer, step : Step ) : Void;
 	public function dispose() : Void;
+
+	// Volumetric RFX
+	public function modulate( t : Float ) : RendererFX;
 	public function transition( r1 : RendererFX, r2 : RendererFX, t : Float ) : RendererFX;
 }

+ 5 - 2
h3d/scene/pbr/Renderer.hx

@@ -203,8 +203,11 @@ class Renderer extends h3d.scene.Renderer {
 	override function startEffects() {
 		if (volumeEffects.length == 1) {
 			for (e in volumeEffects[0].effects) {
-				toRemove.push(e);
-				this.effects.push(e);
+				var newEffect = e.modulate(volumeEffects[0].getFactor());
+				if (newEffect == null)
+					continue;
+				toRemove.push(newEffect);
+				this.effects.push(newEffect);
 			}
 		}
 		else if (volumeEffects.length >= 2) {