Selaa lähdekoodia

Adding decay power to VolumetricLighting.hx

clementlandrin 2 vuotta sitten
vanhempi
commit
c25d6f7a9c
1 muutettua tiedostoa jossa 5 lisäystä ja 1 poistoa
  1. 5 1
      hrt/prefab/rfx/VolumetricLighting.hx

+ 5 - 1
hrt/prefab/rfx/VolumetricLighting.hx

@@ -21,6 +21,7 @@ class VolumetricLightingShader extends hrt.shader.PbrShader {
 		@param var gamma : Float;
 
 		@param var maxDist : Float;
+		@param var decayPower : Float;
 
 		@param var cameraInverseViewProj : Mat4;
 		@param var cameraPosition : Vec3;
@@ -72,7 +73,7 @@ class VolumetricLightingShader extends hrt.shader.PbrShader {
 			}
 			var end = startPos + d * camDir;
 
-			var density = smoothstep(0.0, 1.0, distance(startPos, end) / maxDist);
+			var density = smoothstep(0.0, 1.0, pow(distance(startPos, end) / maxDist, decayPower));
 
 			var fog = 0.0;
 			for ( i in 1...steps ) {
@@ -123,6 +124,7 @@ class VolumetricLighting extends RendererFX {
 	@:s public var ditheringIntensity : Float = 1.0;
 
 	@:s public var maxDist : Float = 30.0;
+	@:s public var decayPower : Float = 1.0;
 
 	override function makeInstance( ctx : hrt.prefab.Context ) : hrt.prefab.Context {
 		ctx = super.makeInstance(ctx);
@@ -151,6 +153,7 @@ class VolumetricLighting extends RendererFX {
 			r.ctx.engine.pushTarget(tex);
 
 			pass.shader.maxDist = maxDist;
+			pass.shader.decayPower = decayPower;
 			
 			pass.shader.gamma = gamma;
 			pass.shader.bottom = bottom;
@@ -216,6 +219,7 @@ class VolumetricLighting extends RendererFX {
 					<dt>Top</dt><dd><input type="range" min="0" max="10" field="top"/></dd>
 					<dt>Falloff</dt><dd><input type="range" min="0" max="1" field="fallOff"/></dd>
 					<dt>Decay distance</dt><dd><input type="range" min="0" max="50" field="maxDist"/></dd>
+					<dt>Decay power</dt><dd><input type="range" min="0.2" max="5" field="decayPower"/></dd>
 				</dl>
 			</div>
 			<div class="group" name="Rendering">