trethaller 7 лет назад
Родитель
Сommit
fbfed8e91b
1 измененных файлов с 0 добавлено и 197 удалено
  1. 0 197
      hide/prefab/rfx/Fog.hx

+ 0 - 197
hide/prefab/rfx/Fog.hx

@@ -1,197 +0,0 @@
-package hide.prefab.rfx;
-
-import hxd.prefab.rfx.RendererFX;
-import hxd.prefab.Library;
-import hxd.Math;
-
-typedef FogProps = {
-	var density : Float;
-	var fadeStrength : Float;
-	var height : Float;
-	var range : Float;
-	var stepCount : Int;
-	var color : Int;
-	var tilling : Float;
-	var speed : Float;
-	var direction : Float;
-
-	var turbulenceText : String;
-	var turbulenceScale : Float;
-	var turbulenceIntensity : Float;
-	var turbulenceSpeed  : Float;
-
-	var fadingSpeed  : Float;
-}
-
-class Fog extends RendererFX {
-
-	var fogPass = new h3d.pass.ScreenFx(new h3d.shader.pbr.Fog());
-	var fogClear = new h3d.pass.ScreenFx(new h3d.shader.pbr.Fog.FogClear());
-	var fogTurbulence : h3d.mat.Texture;
-	var fogTexture : h3d.mat.Texture;
-	var fogOcclusion : h3d.mat.Texture;
-	var prevfogOcclusion : h3d.mat.Texture;
-	var prevCamMat : h3d.Matrix;
-
-	public function new(?parent) {
-		super(parent);
-
-		fogPass.pass.setBlendMode(Alpha);
-
-		props = ({
-				density : 1.0,
-				fadeStrength : 1.0,
-				height : 0,
-				range : 10,
-				stepCount : 10,
-				tilling : 1.0,
-				speed : 0.0,
-				direction : 0.0,
-
-				turbulenceText : null,
-				turbulenceScale: 0.0,
-				turbulenceIntensity : 0.0,
-				turbulenceSpeed : 0.0,
-
-				fadingSpeed : 1.0,
-
-				color : 0xFFFFFF,
-			} : FogProps);
-	}
-
-	override function apply( r : h3d.scene.Renderer, step : hxd.prefab.rfx.RendererFX.Step ) {
-		var ctx = r.ctx;
-		var props : FogProps = props;
-
-		if( fogOcclusion == null ) fogOcclusion = new h3d.mat.Texture(ctx.engine.width, ctx.engine.height, [Target], RGBA);
-		if( prevfogOcclusion == null ) prevfogOcclusion = new h3d.mat.Texture(ctx.engine.width, ctx.engine.height, [Target], RGBA);
-
-		if(fogOcclusion.width != ctx.engine.width || fogOcclusion.height != ctx.engine.height){
-			fogOcclusion.dispose();
-			fogOcclusion = new h3d.mat.Texture(ctx.engine.width, ctx.engine.height, [Target], RGBA);
-		}
-
-		if(prevfogOcclusion.width != ctx.engine.width || prevfogOcclusion.height != ctx.engine.height){
-			prevfogOcclusion.dispose();
-			prevfogOcclusion = new h3d.mat.Texture(ctx.engine.width, ctx.engine.height, [Target], RGBA);
-		}
-
-		if( fogTexture == null ) syncFogTexture();
-
-		if( props.turbulenceText != null && (fogTurbulence == null || props.turbulenceText != fogTurbulence.name)) {
-			var prev = fogTurbulence;
-			fogTurbulence = hxd.res.Loader.currentInstance.load(props.turbulenceText).toTexture();
-			fogTurbulence.wrap = Repeat;
-			if(prev != null) prev.dispose();
-		}
-
-		if( step == AfterHdr ) {
-
-			var depth : hxsl.ChannelTexture = ctx.getGlobal("depthMap");
-
-			// Draw Fog Occluders
-			ctx.setGlobal("fogHeight", props.height);
-			ctx.setGlobal("fogRange", props.range);
-			fogPass.setGlobals(ctx);
-			fogOcclusion.depthBuffer = ctx.engine.driver.getDefaultDepthBuffer();
-			ctx.engine.pushTarget(fogOcclusion);
-			fogClear.shader.dt = ctx.elapsedTime;
-			fogClear.shader.fadingSpeed = props.fadingSpeed;
-			fogClear.shader.prevCamMat = prevCamMat == null ? ctx.camera.m : prevCamMat;
-			fogClear.shader.cameraInverseViewProj = ctx.camera.getInverseViewProj();
-			fogClear.shader.prevfogOcclusion = prevfogOcclusion;
-			fogClear.shader.depthTexture = depth.texture;
-			fogClear.shader.depthTextureChannel = depth.channel;
-			fogClear.render();
-			r.draw("fogOccluder");
-			ctx.engine.popTarget();
-
-			// Draw Fog
-			fogPass.shader.fogOcclusion = fogOcclusion;
-			fogPass.shader.depthTexture = depth.texture;
-			fogPass.shader.depthTextureChannel = depth.channel;
-			fogPass.shader.cameraPos = ctx.camera.pos;
-			fogPass.shader.cameraInverseViewProj.load(ctx.camera.getInverseViewProj());
-			fogPass.shader.density = props.density;
-			fogPass.shader.fadeStrength = props.fadeStrength;
-			fogPass.shader.maxStepCount = props.stepCount;
-			fogPass.shader.tilling = new h3d.Vector(props.tilling, props.tilling);
-			fogPass.shader.speed = new h3d.Vector(Math.cos(Math.degToRad(props.direction)) * props.speed, Math.sin(Math.degToRad(props.direction)) * props.speed);
-			fogPass.shader.turbulenceSpeed = new h3d.Vector(props.turbulenceSpeed / 10.0, props.turbulenceSpeed / 10.0);
-			fogPass.shader.time = ctx.time;
-			fogPass.shader.texture = fogTexture == null ? h3d.mat.Texture.fromColor(0xFFFFFF) : fogTexture;
-			fogPass.shader.turbulenceText = fogTurbulence == null ? h3d.mat.Texture.fromColor(0xFFFFFF) : fogTurbulence;
-			fogPass.shader.turbulenceScale = props.turbulenceScale;
-			fogPass.shader.turbulenceIntensity = props.turbulenceIntensity;
-			fogPass.shader.color = h3d.Vector.fromColor(props.color);
-			fogPass.render();
-
-			var temp = prevfogOcclusion;
-			prevfogOcclusion = fogOcclusion;
-			fogOcclusion = temp;
-			prevCamMat = ctx.camera.m.clone();
-		}
-	}
-
-
-	function syncFogTexture() {
-		if( fogTexture != null ) fogTexture.dispose();
-		var c = Std.instance(this.children[0], hide.prefab.Noise);
-		fogTexture = c == null ? h3d.mat.Texture.fromColor(0x808080,0.5) : c.toTexture();
-		fogTexture.wrap = Repeat;
-	}
-
-	#if editor
-
-	override function getHideProps() {
-		var p = super.getHideProps();
-		p.allowChildren = function(name) return name == "noise";
-		p.onChildUpdate = function(p) syncFogTexture();
-		return p;
-	}
-
-	override function edit( ctx : hide.prefab.EditContext ) {
-		var props : FogProps = props;
-		ctx.properties.add(new hide.Element('
-			<dl>
-
-			<div class="group" name="Fog">
-				<dt>Color</dt><dd><input type="color" field="color"></dd>
-				<dt>Tilling</dt><dd><input type="range" min="1" max="100" field="tilling"></dd>
-				<dt>Density</dt><dd><input type="range" min="0" max="2" field="density"></dd>
-				<dt>Height</dt><dd><input type="range" min="-20" max="20" field="height"></dd>
-				<dt>Range</dt><dd><input type="range" min="1" max="10" field="range"></dd>
-				<dt>Fade Strength</dt><dd><input type="range" min="0" max="1" field="fadeStrength"></dd>
-				<dt>Speed</dt><dd><input type="range" min="0" max="10" field="speed"></dd>
-				<dt>Direction</dt><dd><input type="range" min="0" max="360" step ="0.1" field="direction"></dd>
-			</div>
-
-			<div class="group" name="Quality">
-				<dt>Step Count</dt><dd><input type="range" min="1" max="100" step="1" field="stepCount"></dd>
-			</div>
-
-			<div class="group" name="Turbulence">
-				<dt>Texture</dt><input type="texturepath" field="turbulenceText"/>
-				<dt>Scale</dt><dd><input type="range" min="0" max="1" field="turbulenceScale"></dd>
-				<dt>Speed</dt><dd><input type="range" min="0" max="10" field="turbulenceSpeed"></dd>
-				<dt>Intensity</dt><dd><input type="range" min="0" max="1" field="turbulenceIntensity"></dd>
-			</div>
-
-			<div class="group" name="Trail">
-				<dt>Fading Speed</dt><dd><input type="range" min="0" max="2" field="fadingSpeed"></dd>
-			</div>
-
-			</dt>
-		'),props, function(pname) {
-			if(pname == "turbulenceText") {
-				if(fogTurbulence != null) fogTurbulence.dispose();
-				fogTurbulence = ctx.rootContext.loadTexture(props.turbulenceText);
-				fogTurbulence.wrap = Repeat;
-			}
-		});
-	}
-	#end
-
-	static var _ = Library.register("rfx.fog", Fog);
-
-}