Browse Source

merge all fogs into a single rfx

Nicolas Cannasse 5 years ago
parent
commit
fb523be6ef

+ 0 - 93
hrt/prefab/rfx/DistanceFog.hx

@@ -1,93 +0,0 @@
-package hrt.prefab.rfx;
-
-typedef DistanceFogProps = {
- 	var startDistance : Float;
-	var endDistance : Float;
-	var startOpacity : Float;
-	var endOpacity : Float;
-
-	var startColor : Int;
-	var endColor : Int;
-	var startColorDistance : Float;
-	var endColorDistance : Float;
-	var renderMode : String;
-}
-
-class DistanceFog extends RendererFX {
-
-	var fogPass = new h3d.pass.ScreenFx(new hrt.shader.DistanceFog());
-
-	public function new(?parent) {
-		super(parent);
-		props = ({
-			startDistance : 0,
-			endDistance : 100,
-			startOpacity : 0,
-			endOpacity : 1,
-		 	startColor : 0xffffff,
-	    	endColor : 0xffffff,
-			startColorDistance : 0,
-			endColorDistance : 100,
-			renderMode : "AfterTonemapping",
-		} : DistanceFogProps);
-
-		fogPass.pass.setBlendMode(Alpha);
-	}
-
-	override function apply(r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step) {
-		var p : DistanceFogProps = props;
-		if( (step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping") ) {
-			r.mark("DistanceFog");
-			var ctx = r.ctx;
-			var depth : hxsl.ChannelTexture = ctx.getGlobal("depthMap");
-
-			fogPass.shader.startDistance = p.startDistance;
-			fogPass.shader.endDistance = p.endDistance;
-			fogPass.shader.startOpacity = p.startOpacity;
-			fogPass.shader.endOpacity = p.endOpacity;
-			fogPass.shader.startColorDistance = p.startColorDistance;
-			fogPass.shader.endColorDistance = p.endColorDistance;
-			fogPass.shader.startColor = h3d.Vector.fromColor(p.startColor);
-			fogPass.shader.endColor = h3d.Vector.fromColor(p.endColor);
-			fogPass.shader.depthTextureChannel = depth.channel;
-			fogPass.shader.depthTexture = depth.texture;
-
-			fogPass.shader.cameraPos = ctx.camera.pos;
-			fogPass.shader.cameraInverseViewProj.load(ctx.camera.getInverseViewProj());
-
-			fogPass.render();
-		}
-	}
-
-	#if editor
-	override function edit( ctx : hide.prefab.EditContext ) {
-		ctx.properties.add(new hide.Element('
-			<dl>
-				<div class="group" name="Opacity">
-					<dt>Start Distance</dt><dd><input type="range" min="0" max="100" field="startDistance"/></dd>
-					<dt>End Distance</dt><dd><input type="range" min="0" max="100" field="endDistance"/></dd>
-					<dt>Start Opacity</dt><dd><input type="range" min="0" max="1" field="startOpacity"/></dd>
-					<dt>End Opacity</dt><dd><input type="range" min="0" max="1" field="endOpacity"/></dd>
-				</div>
-				<div class="group" name="Color">
-					<dt>Start Distance</dt><dd><input type="range" min="0" max="100" field="startColorDistance"/></dd>
-					<dt>End Distance</dt><dd><input type="range" min="0" max="100" field="endColorDistance"/></dd>
-					<dt>Start Color</dt><dd><input type="color" field="startColor"/></dd>
-					<dt>End Color</dt><dd><input type="color" field="endColor"/></dd>
-				</div>
-				<div class="group" name="Rendering">
-					<dt>Render Mode</dt>
-						<dd><select field="renderMode">
-							<option value="BeforeTonemapping">Before Tonemapping</option>
-							<option value="AfterTonemapping">After Tonemapping</option>
-						</select></dd>
-				</div>
-
-			</dl>
-		'),props);
-	}
-	#end
-
-	static var _ = Library.register("rfx.distanceFog", DistanceFog);
-
-}

+ 194 - 0
hrt/prefab/rfx/GenFog.hx

@@ -0,0 +1,194 @@
+package hrt.prefab.rfx;
+
+class GenFogShader extends h3d.shader.ScreenShader {
+
+	static var SRC = {
+
+		@param var startDistance : Float;
+		@param var distanceScale : Float;
+		@param var distanceOpacity : Float;
+		@param var cameraDistance : Float;
+
+		@param var startHeight : Float;
+		@param var heightScale : Float;
+		@param var heightOpacity : Float;
+
+		@param var startColor : Vec4;
+		@param var endColor : Vec4;
+
+		@const var usePosition : Bool;
+		@param var position : Vec3;
+
+		@ignore @param var depthTexture : Channel;
+		@ignore @param var cameraPos : Vec3;
+		@ignore @param var cameraInverseViewProj : Mat4;
+
+		function getPosition( uv: Vec2 ) : Vec3 {
+			var depth = depthTexture.get(uv);
+			var uv2 = uvToScreen(calculatedUV);
+			var isSky = 1 - ceil(depth);
+			depth = mix(depth, 1, isSky);
+			var temp = vec4(uv2, depth, 1) * cameraInverseViewProj;
+			var originWS = temp.xyz / temp.w;
+			return originWS;
+		}
+
+		function fragment() {
+			var calculatedUV = input.uv;
+			var origin = getPosition(calculatedUV);
+			var amount = 0.;
+
+			if( distanceScale != 0 ) {
+				var distance = (origin - (usePosition ? position : cameraPos)).length() - cameraDistance;
+				amount += clamp((distance - startDistance) * distanceScale, 0, 1) * distanceOpacity;
+			}
+
+			if( heightScale != 0 ) {
+				var height = origin.z;
+				if( usePosition ) height -= position.z;
+				amount += clamp((height - startHeight) * heightScale, 0, 1) * heightOpacity;
+			}
+
+			var fogColor = mix(startColor, endColor, amount);
+			pixelColor = fogColor;
+		}
+
+	};
+
+	public function new() {
+		super();
+	}
+
+}
+
+typedef GenFogProps = {
+ 	var startDistance : Float;
+	var endDistance : Float;
+	var distanceOpacity : Float;
+	var distanceFixed : Bool;
+
+	var startHeight : Float;
+	var endHeight : Float;
+	var heightOpacity : Float;
+
+	var startOpacity : Float;
+	var endOpacity : Float;
+
+	var startColor : Int;
+	var endColor : Int;
+	var renderMode : String;
+
+	var posX : Float;
+	var posY : Float;
+	var posZ : Float;
+	var usePosition : Bool;
+}
+
+class GenFog extends RendererFX {
+
+	var fogPass = new h3d.pass.ScreenFx(new GenFogShader());
+
+	public function new(?parent) {
+		super(parent);
+		props = ({
+			startDistance : 0,
+			endDistance : 100,
+			distanceOpacity : 0,
+			distanceFixed : false,
+
+			startHeight : 100,
+			endHeight : 0,
+			heightOpacity : 0,
+
+			posX : 0,
+			posY : 0,
+			posZ : 0,
+			usePosition : false,
+
+			startOpacity : 0,
+			endOpacity : 1,
+		 	startColor : 0xffffff,
+	    	endColor : 0xffffff,
+			renderMode : "AfterTonemapping",
+		} : GenFogProps);
+
+		fogPass.pass.setBlendMode(Alpha);
+	}
+
+	override function apply(r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step) {
+		var p : GenFogProps = props;
+		if( (step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping") ) {
+			r.mark("DistanceFog");
+			var ctx = r.ctx;
+			var depth : hxsl.ChannelTexture = ctx.getGlobal("depthMap");
+
+			fogPass.shader.startDistance = p.startDistance;
+			fogPass.shader.distanceScale = 1 / (p.endDistance - p.startDistance);
+			fogPass.shader.distanceOpacity = p.distanceOpacity;
+			fogPass.shader.cameraDistance = p.distanceFixed ? r.ctx.camera.pos.sub(r.ctx.camera.target).length() : 0;
+
+			fogPass.shader.startHeight = p.startHeight;
+			fogPass.shader.heightScale = 1 / (p.endHeight - p.startHeight);
+			fogPass.shader.heightOpacity = p.heightOpacity;
+
+			fogPass.shader.startColor.setColor(p.startColor);
+			fogPass.shader.endColor.setColor(p.endColor);
+			fogPass.shader.startColor.a = p.startOpacity;
+			fogPass.shader.endColor.a = p.endOpacity;
+
+			fogPass.shader.position.set(p.posX, p.posY, p.posZ);
+			fogPass.shader.usePosition = p.usePosition;
+
+			fogPass.shader.depthTextureChannel = depth.channel;
+			fogPass.shader.depthTexture = depth.texture;
+
+			fogPass.shader.cameraPos = ctx.camera.pos;
+			fogPass.shader.cameraInverseViewProj.load(ctx.camera.getInverseViewProj());
+
+			fogPass.render();
+		}
+	}
+
+	#if editor
+	override function edit( ctx : hide.prefab.EditContext ) {
+		ctx.properties.add(new hide.Element('
+			<dl>
+				<div class="group" name="Distance">
+					<dt>Start Distance</dt><dd><input type="range" min="0" max="100" field="startDistance"/></dd>
+					<dt>End Distance</dt><dd><input type="range" min="0" max="100" field="endDistance"/></dd>
+					<dt>Distance Opacity</dt><dd><input type="range" min="0" max="2" field="distanceOpacity"/></dd>
+					<dt>Camera Independant</dt><dd><input type="checkbox" field="distanceFixed"/></dd>
+				</div>
+				<div class="group" name="Height">
+					<dt>Start Height</dt><dd><input type="range" min="0" max="100" field="startHeight"/></dd>
+					<dt>End Height</dt><dd><input type="range" min="0" max="100" field="endHeight"/></dd>
+					<dt>Height Opacity</dt><dd><input type="range" min="0" max="2" field="heightOpacity"/></dd>
+				</div>
+				<div class="group" name="Center">
+					<dt>X</dt><dd><input type="range" min="-100" max="100" field="posX"/></dd>
+					<dt>Y</dt><dd><input type="range" min="-100" max="100" field="posY"/></dd>
+					<dt>Z</dt><dd><input type="range" min="-100" max="100" field="posZ"/></dd>
+					<dt>Use Center Point</dt><dd><input type="checkbox" field="usePosition"/></dd>
+				</div>
+				<div class="group" name="Color">
+					<dt>Start Color</dt><dd><input type="color" field="startColor"/></dd>
+					<dt>End Color</dt><dd><input type="color" field="endColor"/></dd>
+					<dt>Start Opacity</dt><dd><input type="range" min="0" max="1" field="startOpacity"/></dd>
+					<dt>End Opacity</dt><dd><input type="range" min="0" max="1" field="endOpacity"/></dd>
+				</div>
+				<div class="group" name="Rendering">
+					<dt>Render Mode</dt>
+						<dd><select field="renderMode">
+							<option value="BeforeTonemapping">Before Tonemapping</option>
+							<option value="AfterTonemapping">After Tonemapping</option>
+						</select></dd>
+				</div>
+
+			</dl>
+		'),props);
+	}
+	#end
+
+	static var _ = Library.register("rfx.genFog", GenFog);
+
+}

+ 0 - 95
hrt/prefab/rfx/HeightFog.hx

@@ -1,95 +0,0 @@
-package hrt.prefab.rfx;
-
-typedef HeightFogProps = {
- 	var startHeight : Float;
-	var endHeight : Float;
-	var startOpacity : Float;
-	var endOpacity : Float;
-
-	var startColor : Int;
-	var endColor : Int;
-	var startColorHeight : Float;
-	var endColorHeight : Float;
-	var renderMode : String;
-}
-
-class HeightFog extends RendererFX {
-
-	var fogPass = new h3d.pass.ScreenFx(new hrt.shader.HeightFog());
-
-	public function new(?parent) {
-		super(parent);
-		props = ({
-			startHeight : 0,
-			endHeight : 100,
-			startOpacity : 1,
-			endOpacity : 0,
-		 	startColor : 0xffffff,
-	    	endColor : 0xffffff,
-			startColorHeight : 0,
-			endColorHeight : 100,
-			renderMode : "AfterTonemapping",
-		} : HeightFogProps);
-
-		fogPass.pass.setBlendMode(Alpha);
-	}
-
-	function sync( r : h3d.scene.Renderer ) {
-		var ctx = r.ctx;
-		var p : HeightFogProps = props;
-		var depth : hxsl.ChannelTexture = ctx.getGlobal("depthMap");
-		fogPass.shader.startHeight = p.startHeight;
-		fogPass.shader.endHeight = p.endHeight;
-		fogPass.shader.startOpacity = p.startOpacity;
-		fogPass.shader.endOpacity = p.endOpacity;
-		fogPass.shader.startColorHeight = p.startColorHeight;
-		fogPass.shader.endColorHeight = p.endColorHeight;
-		fogPass.shader.startColor = h3d.Vector.fromColor(p.startColor);
-		fogPass.shader.endColor = h3d.Vector.fromColor(p.endColor);
-		fogPass.shader.depthTextureChannel = depth.channel;
-		fogPass.shader.depthTexture = depth.texture;
-		fogPass.shader.cameraPos = ctx.camera.pos;
-		fogPass.shader.cameraInverseViewProj.load(ctx.camera.getInverseViewProj());
-	}
-
-	override function apply(r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step) {
-		var p : HeightFogProps = props;
-		if( (step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping") ) {
-			r.mark("HeightFog");
-			sync(r);
-			fogPass.render();
-		}
-	}
-
-	#if editor
-	override function edit( ctx : hide.prefab.EditContext ) {
-		ctx.properties.add(new hide.Element('
-			<dl>
-				<div class="group" name="Opacity">
-					<dt>Start Height</dt><dd><input type="range" min="0" max="100" field="startHeight"/></dd>
-					<dt>End Height</dt><dd><input type="range" min="0" max="100" field="endHeight"/></dd>
-					<dt>Start Opacity</dt><dd><input type="range" min="0" max="1" field="startOpacity"/></dd>
-					<dt>End Opacity</dt><dd><input type="range" min="0" max="1" field="endOpacity"/></dd>
-				</div>
-				<div class="group" name="Color">
-					<dt>Start Height</dt><dd><input type="range" min="0" max="100" field="startColorHeight"/></dd>
-					<dt>End Height</dt><dd><input type="range" min="0" max="100" field="endColorHeight"/></dd>
-					<dt>Start Color</dt><dd><input type="color" field="startColor"/></dd>
-					<dt>End Color</dt><dd><input type="color" field="endColor"/></dd>
-				</div>
-				<div class="group" name="Rendering">
-					<dt>Render Mode</dt>
-						<dd><select field="renderMode">
-							<option value="BeforeTonemapping">Before Tonemapping</option>
-							<option value="AfterTonemapping">After Tonemapping</option>
-						</select></dd>
-				</div>
-
-			</dl>
-		'),props);
-	}
-	#end
-
-	static var _ = Library.register("rfx.heightFog", HeightFog);
-
-}

+ 0 - 127
hrt/prefab/rfx/PointDistanceFog.hx

@@ -1,127 +0,0 @@
-package hrt.prefab.rfx;
-
-typedef PointDistanceFogProps = {
- 	var startDistance : Float;
-	var endDistance : Float;
-	var startOpacity : Float;
-	var endOpacity : Float;
-
-	var startHeight : Float;
-	var endHeight : Float;
-	var startHeightOpacity : Float;
-	var endHeightOpacity : Float;
-
-	var startColor : Int;
-	var endColor : Int;
-	var startColorDistance : Float;
-	var endColorDistance : Float;
-	var renderMode : String;
-	var pointPosition : Dynamic;
-}
-
-class PointDistanceFog extends RendererFX {
-
-	var fogPass = new h3d.pass.ScreenFx(new hrt.shader.PointDistanceFog());
-	public var pointPosition : h3d.Vector;
-
-	public function new(?parent) {
-		super(parent);
-		props = ({
-			startDistance : 0,
-			endDistance : 100,
-			startOpacity : 0,
-			endOpacity : 1,
-			startHeight : 0,
-			endHeight : 100,
-			startHeightOpacity : 1,
-			endHeightOpacity : 0,
-		 	startColor : 0xffffff,
-	    	endColor : 0xffffff,
-			startColorDistance : 0,
-			endColorDistance : 100,
-			renderMode : "AfterTonemapping",
-			pointPosition : new h3d.Vector(0,0,0),
-		} : PointDistanceFogProps);
-
-		fogPass.pass.setBlendMode(Alpha);
-	}
-
-	override function apply(r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step) {
-		var p : PointDistanceFogProps = props;
-		if( (step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping") ) {
-			r.mark("PointDistanceFog");
-			var ctx = r.ctx;
-			var depth : hxsl.ChannelTexture = ctx.getGlobal("depthMap");
-
-			fogPass.shader.startDistance = p.startDistance;
-			fogPass.shader.endDistance = p.endDistance;
-			fogPass.shader.startOpacity = p.startOpacity;
-			fogPass.shader.endOpacity = p.endOpacity;
-
-			fogPass.shader.startHeight = p.startHeight;
-			fogPass.shader.endHeight = p.endHeight;
-			fogPass.shader.startHeightOpacity = p.startHeightOpacity;
-			fogPass.shader.endHeightOpacity = p.endHeightOpacity;
-
-			fogPass.shader.startColorDistance = p.startColorDistance;
-			fogPass.shader.endColorDistance = p.endColorDistance;
-			fogPass.shader.startColor = h3d.Vector.fromColor(p.startColor);
-			fogPass.shader.endColor = h3d.Vector.fromColor(p.endColor);
-			fogPass.shader.depthTextureChannel = depth.channel;
-			fogPass.shader.depthTexture = depth.texture;
-
-			if( pointPosition != null )
-				fogPass.shader.pointPosition.load(pointPosition);
-			else
-				fogPass.shader.pointPosition.set(p.pointPosition.x, p.pointPosition.y, p.pointPosition.z);
-
-			fogPass.shader.cameraPos = ctx.camera.pos;
-			fogPass.shader.cameraInverseViewProj.load(ctx.camera.getInverseViewProj());
-
-			fogPass.render();
-		}
-	}
-
-	#if editor
-	override function edit( ctx : hide.prefab.EditContext ) {
-		ctx.properties.add(new hide.Element('
-			<dl>
-				<div class="group" name="Point Position">
-					<dt>X</dt><dd><input type="range" min="0" max="10" field="pointPosition.x"/></dd>
-					<dt>Y</dt><dd><input type="range" min="0" max="10" field="pointPosition.y"/></dd>
-					<dt>Z</dt><dd><input type="range" min="0" max="10" field="pointPosition.z"/></dd>
-				</div>
-				<div class="group" name="Opacity">
-					<dt>Start Distance</dt><dd><input type="range" min="0" max="100" field="startDistance"/></dd>
-					<dt>End Distance</dt><dd><input type="range" min="0" max="100" field="endDistance"/></dd>
-					<dt>Start Opacity</dt><dd><input type="range" min="0" max="1" field="startOpacity"/></dd>
-					<dt>End Opacity</dt><dd><input type="range" min="0" max="1" field="endOpacity"/></dd>
-				</div>
-				<div class="group" name="Height Opacity">
-					<dt>Start Height</dt><dd><input type="range" min="0" max="100" field="startHeight"/></dd>
-					<dt>End Height</dt><dd><input type="range" min="0" max="100" field="endHeight"/></dd>
-					<dt>Start Opacity</dt><dd><input type="range" min="0" max="1" field="startHeightOpacity"/></dd>
-					<dt>End Opacity</dt><dd><input type="range" min="0" max="1" field="endHeightOpacity"/></dd>
-				</div>
-				<div class="group" name="Color">
-					<dt>Start Distance</dt><dd><input type="range" min="0" max="100" field="startColorDistance"/></dd>
-					<dt>End Distance</dt><dd><input type="range" min="0" max="100" field="endColorDistance"/></dd>
-					<dt>Start Color</dt><dd><input type="color" field="startColor"/></dd>
-					<dt>End Color</dt><dd><input type="color" field="endColor"/></dd>
-				</div>
-				<div class="group" name="Rendering">
-					<dt>Render Mode</dt>
-						<dd><select field="renderMode">
-							<option value="BeforeTonemapping">Before Tonemapping</option>
-							<option value="AfterTonemapping">After Tonemapping</option>
-						</select></dd>
-				</div>
-
-			</dl>
-		'),props);
-	}
-	#end
-
-	static var _ = Library.register("rfx.PointDistanceFog", PointDistanceFog);
-
-}

+ 0 - 48
hrt/shader/DistanceFog.hx

@@ -1,48 +0,0 @@
-package hrt.shader;
-
-class DistanceFog extends h3d.shader.ScreenShader {
-
-	static var SRC = {
-
-		@param var startDistance : Float;
-		@param var endDistance : Float;
-		@param var startOpacity : Float;
-		@param var endOpacity: Float;
-		@param var startColorDistance : Float;
-		@param var endColorDistance : Float;
-		@param var startColor : Vec3;
-		@param var endColor : Vec3;
-
-		@ignore @param var depthTexture : Channel;
-		@ignore @param var cameraPos : Vec3;
-		@ignore @param var cameraInverseViewProj : Mat4;
-
-		function getPosition( uv: Vec2 ) : Vec3 {
-			var depth = depthTexture.get(uv);
-			var uv2 = uvToScreen(calculatedUV);
-			var isSky = 1 - ceil(depth);
-			depth = mix(depth, 1, isSky);
-			var temp = vec4(uv2, depth, 1) * cameraInverseViewProj;
-			var originWS = temp.xyz / temp.w;
-			return originWS;
-		}
-
-		function fragment() {
-			var calculatedUV = input.uv;
-			var origin = getPosition(calculatedUV);
-			var distance = (origin - cameraPos).length();
-			if( startDistance > distance ) discard;
-			var opacityFactor = clamp((distance - startDistance) / (endDistance - startDistance), 0, 1);
-			var colorFactor = clamp((distance - startColorDistance) / (endColorDistance - startColorDistance), 0, 1);
-			var fogColor = mix(startColor, endColor, colorFactor);
-			var fogOpacity = mix(startOpacity, endOpacity, opacityFactor);
-			if( fogOpacity <= 0 ) discard;
-			pixelColor = vec4(fogColor, fogOpacity);
-		}
-	};
-
-	public function new() {
-		super();
-	}
-
-}

+ 0 - 48
hrt/shader/HeightFog.hx

@@ -1,48 +0,0 @@
-package hrt.shader;
-
-class HeightFog extends h3d.shader.ScreenShader {
-
-	static var SRC = {
-
-		@param var startHeight : Float;
-		@param var endHeight : Float;
-		@param var startOpacity : Float;
-		@param var endOpacity: Float;
-		@param var startColorHeight : Float;
-		@param var endColorHeight : Float;
-		@param var startColor : Vec3;
-		@param var endColor : Vec3;
-
-		@ignore @param var depthTexture : Channel;
-		@ignore @param var cameraPos : Vec3;
-		@ignore @param var cameraInverseViewProj : Mat4;
-
-		function getPosition( uv: Vec2 ) : Vec3 {
-			var depth = depthTexture.get(uv);
-			var uv2 = uvToScreen(calculatedUV);
-			var isSky = 1 - ceil(depth);
-			depth = mix(depth, 1, isSky);
-			var temp = vec4(uv2, depth, 1) * cameraInverseViewProj;
-			var originWS = temp.xyz / temp.w;
-			return originWS;
-		}
-
-		function fragment() {
-			var calculatedUV = input.uv;
-			var origin = getPosition(calculatedUV);
-			var height = origin.z;
-			if( startHeight > height || endHeight < height ) discard;
-			var opacityFactor = clamp((height - startHeight) / (endHeight - startHeight), 0, 1);
-			var colorFactor = clamp((height - startColorHeight) / (endColorHeight - startColorHeight), 0, 1);
-			var fogColor = mix(startColor, endColor, colorFactor);
-			var fogOpacity = mix(startOpacity, endOpacity, opacityFactor);
-			if( fogOpacity <= 0 ) discard;
-			pixelColor = vec4(fogColor, fogOpacity);
-		}
-	};
-
-	public function new() {
-		super();
-	}
-
-}

+ 0 - 60
hrt/shader/PointDistanceFog.hx

@@ -1,60 +0,0 @@
-package hrt.shader;
-
-class PointDistanceFog extends h3d.shader.ScreenShader {
-
-	static var SRC = {
-
-		@param var startDistance : Float;
-		@param var endDistance : Float;
-		@param var startOpacity : Float;
-		@param var endOpacity: Float;
-
-		@param var startColorDistance : Float;
-		@param var endColorDistance : Float;
-		@param var startColor : Vec3;
-		@param var endColor : Vec3;
-
-		@param var startHeight : Float;
-		@param var endHeight : Float;
-		@param var startHeightOpacity : Float;
-		@param var endHeightOpacity: Float;
-
-		@param var pointPosition : Vec3;
-
-		@ignore @param var depthTexture : Channel;
-		@ignore @param var cameraPos : Vec3;
-		@ignore @param var cameraInverseViewProj : Mat4;
-
-		function getPosition( uv: Vec2 ) : Vec3 {
-			var depth = depthTexture.get(uv);
-			var uv2 = uvToScreen(calculatedUV);
-			var isSky = 1 - ceil(depth);
-			depth = mix(depth, 1, isSky);
-			var temp = vec4(uv2, depth, 1) * cameraInverseViewProj;
-			var originWS = temp.xyz / temp.w;
-			return originWS;
-		}
-
-		function fragment() {
-			var calculatedUV = input.uv;
-			var origin = getPosition(calculatedUV);
-			var distance = (origin - pointPosition).length();
-			var heightDistance = abs(origin.z - pointPosition.z);
-			if( startDistance > distance ) discard;
-			var opacityFactor = clamp((distance - startDistance) / (endDistance - startDistance), 0, 1);
-			var heightOpacityFactor = clamp((heightDistance - startHeight) / (endHeight - startHeight), 0, 1);
-			var colorFactor = clamp((distance - startColorDistance) / (endColorDistance - startColorDistance), 0, 1);
-			var fogColor = mix(startColor, endColor, colorFactor);
-			var fogOpacity = mix(startOpacity, endOpacity, opacityFactor);
-			var heightFogOpacity = mix(startHeightOpacity, endHeightOpacity, heightOpacityFactor);
-			var opacity = min(fogOpacity, heightFogOpacity);
-			if( opacity <= 0 ) discard;
-			pixelColor = vec4(fogColor, opacity);
-		}
-	};
-
-	public function new() {
-		super();
-	}
-
-}