Jelajahi Sumber

more cleanup

ncannasse 7 tahun lalu
induk
melakukan
e51477b6d4
3 mengubah file dengan 0 tambahan dan 234 penghapusan
  1. 0 42
      h3d/scene/FogOccluder.hx
  2. 0 124
      h3d/shader/pbr/Fog.hx
  3. 0 68
      h3d/shader/pbr/FogOccluder.hx

+ 0 - 42
h3d/scene/FogOccluder.hx

@@ -1,42 +0,0 @@
-package h3d.scene;
-
-class FogOccluder extends Mesh {
-
-	public var strength = 1.0;
-	public var fresnelIntensity = 0.0;
-	public var fresnelPower = 1.0;
-	var shader : h3d.shader.pbr.FogOccluder;
-
-	public function new( ?parent ) {
-		super(h3d.prim.Sphere.defaultUnitSphere(), null, parent);
-		material.mainPass.setPassName("fogOccluder");
-		material.mainPass.removeShader(material.mainPass.getShader(h3d.shader.pbr.PropsValues));
-		material.texture = null;
-		material.shadows = false;
-		material.mainPass.depthTest = Less;
-		material.mainPass.culling = Back;
-		material.mainPass.blend(One, One);
-		material.mainPass.blendOp = Max;
-		shader = new h3d.shader.pbr.FogOccluder();
-		material.mainPass.addShader(shader);
-	}
-
-	override function draw( ctx : RenderContext ) {
-		primitive.render(ctx.engine);
-	}
-
-	override function emit( ctx : RenderContext ) {
-		ctx.emit(material, this);
-	}
-
-	override function sync(ctx:RenderContext) {
-		shader.spherePos = new h3d.Vector(x, y, z);
-		shader.fresnelIntensity = fresnelIntensity;
-		shader.fresnelPower = fresnelPower;
-		shader.sphereRadius = scaleX;
-		shader.cameraPos = ctx.camera.pos;
-		shader.cameraMatrix = ctx.camera.m;
-		shader.strength = strength;
-	}
-
-}

+ 0 - 124
h3d/shader/pbr/Fog.hx

@@ -1,124 +0,0 @@
-package h3d.shader.pbr;
-
-class FogClear extends h3d.shader.ScreenShader {
-
-	static var SRC = {
-
-		@param var fadingSpeed : Float;
-		@param var dt : Float;
-
-		@param var prevCamMat : Mat4;
-		@param var cameraInverseViewProj : Mat4;
-		@param var prevfogOcclusion : Sampler2D;
-		@ignore @param var depthTexture : Channel;
-
-		function getPixelPosition() : Vec3 {
-			var uv2 = uvToScreen(calculatedUV);
-			var depth = depthTexture.get(calculatedUV);
-			var temp = vec4(uv2, depthTexture.get(calculatedUV), 1) * cameraInverseViewProj;
-			var originWS = temp.xyz / temp.w;
-			return originWS;
-		}
-
-		function fragment() {
-			var pixelPos = getPixelPosition();
-			var prevPos =  vec4(pixelPos, 1.0) * prevCamMat;
-			prevPos.xyz /= prevPos.w;
-			var prevUV = screenToUv(prevPos.xy);
-			var uvOffset = calculatedUV - prevUV;
-			var prevOcclusion = prevfogOcclusion.get(calculatedUV - uvOffset).r;
-			if(prevUV.x < 0 || prevUV.x > 1 || prevUV.y < 0 || prevUV.y > 1) prevOcclusion = 0.0;
-			pixelColor = vec4(prevOcclusion - (dt * fadingSpeed), 0, 0, 0);
-		}
-	}
-
-	public function new() {
-		super();
-	}
-}
-
-class Fog extends h3d.shader.ScreenShader {
-
-	static var SRC = {
-
-		@ignore @param var depthTexture : Channel;
-		@param var fogOcclusion : Sampler2D;
-		@const var maxStepCount : Int;
-		@param var cameraPos : Vec3;
-		@param var cameraInverseViewProj : Mat4;
-		@param var time : Float;
-		@param var color : Vec3;
-		@param var tilling : Vec2;
-		@param var speed : Vec2;
-		@param var fadeStrength : Float;
-		@param var density : Float;
-		@global var fogHeight : Float;
-		@global var fogRange : Float;
-		@param var texture : Sampler2D;
-
-		@param var turbulenceText : Sampler2D;
-		@param var turbulenceScale : Float;
-		@param var turbulenceTilling : Vec2;
-		@param var turbulenceSpeed : Vec2;
-		@param var turbulenceIntensity : Float;
-
-		function getPixelPosition() : Vec3 {
-			var uv2 = uvToScreen(calculatedUV);
-			var depth = depthTexture.get(calculatedUV);
-			var temp = vec4(uv2, depthTexture.get(calculatedUV), 1) * cameraInverseViewProj;
-			var originWS = temp.xyz / temp.w;
-			return originWS;
-		}
-
-		function getFogDensity(pos: Vec3) : Float{
-			var speedOffset = time * speed / tilling;
-			var fadeFactor = 1 - (abs((pos.z - fogHeight) / (fogRange)));
-			fadeFactor *= fadeFactor;
-			fadeFactor = mix(1, fadeFactor, fadeStrength);
-			var uv = (pos.xy / tilling) + speedOffset;
-			var turbulenceUV = time * turbulenceSpeed + uv /*- (pos.z * 0.5)*/;
-			var turbulence = textureLod(turbulenceText, turbulenceUV * turbulenceScale, 0).rg * turbulenceIntensity;
-			var fog = textureLod(texture, uv + turbulence, 0).r;
-			return fog * density * fadeFactor;
-		}
-
-		function fragment() {
-
-			var pixelPos = getPixelPosition();
-
-			var posToCam = normalize(cameraPos - pixelPos);
-			var camToPos = -posToCam;
-			var up = vec3(0,0,1);
-			var maxZ = fogHeight + fogRange - pixelPos.z;
-			var minZ = fogHeight - fogRange - pixelPos.z;
-
-			var UdC = dot(posToCam, up);
-			var distCamUpFog = ((cameraPos.z - (fogHeight + fogRange)) / UdC);
-			var distCamDownFog = ((cameraPos.z - (fogHeight - fogRange))  / UdC);
-			var fogStart = camToPos * distCamUpFog + cameraPos;
-			var fogEnd = camToPos * distCamDownFog + cameraPos;
-
-			if(fogRange <= 0) discard;
-			if(cameraPos.z < fogStart.z) discard;
-
-			var stepSize = length(fogEnd - fogStart) / maxStepCount;
-			var step = camToPos * stepSize;
-			var densitySum = 0.0;
-			var curPos = fogStart;
-			while(curPos.z > pixelPos.z && curPos.z > (fogHeight - fogRange)){
-				densitySum += getFogDensity(curPos);
-				curPos += step;
-			}
-
-			densitySum /= maxStepCount;
-			densitySum = clamp(densitySum, 0, 1);
-
-			var occlusion = 1 - fogOcclusion.get(calculatedUV).r;
-			pixelColor = vec4( color, densitySum * occlusion);
-		}
-	}
-
-	public function new() {
-		super();
-	}
-}

+ 0 - 68
h3d/shader/pbr/FogOccluder.hx

@@ -1,68 +0,0 @@
-package h3d.shader.pbr;
-
-class FogOccluder extends hxsl.Shader {
-
-	static var SRC = {
-
-		var output : {
-			var position : Vec4;
-			var color : Vec4;
-			var depth : Float;
-			var normal : Vec3;
-		};
-
-		var pixelTransformedPosition : Vec3;
-
-		@param var spherePos : Vec3;
-		@param var sphereRadius : Float;
-		@param var strength : Float;
-		@global var fogHeight : Float;
-		@global var fogRange : Float;
-
-		@param var fresnelIntensity : Float;
-		@param var fresnelPower : Float;
-
-		@param var cameraPos : Vec3;
-		@param var cameraMatrix: Mat4;
-
-		function fragment() {
-
-			var posToCam = normalize(cameraPos - pixelTransformedPosition);
-			var camToPos = -posToCam;
-			var up = vec3(0,0,1);
-			var UdC = dot(posToCam, up);
-			var distCamUpFog = ((cameraPos.z - (fogHeight + fogRange)) / UdC);
-			var distCamDownFog = ((cameraPos.z - (fogHeight - fogRange))  / UdC);
-			var fogStart = camToPos * distCamUpFog + cameraPos;
-			var fogEnd = camToPos * distCamDownFog + cameraPos;
-			var fogLength = length(fogEnd - fogStart);
-			var sphereCenterDir = normalize(spherePos - pixelTransformedPosition);
-			var SdC = dot(sphereCenterDir, camToPos);
-			var sphereLength = sphereRadius * SdC * 2;
-			var sphereStart = pixelTransformedPosition;
-			var sphereEnd = pixelTransformedPosition + sphereLength * camToPos;
-
-			var ssc = vec4(sphereStart, 1) * cameraMatrix;
-			var sec = vec4(sphereEnd, 1) * cameraMatrix;
-			var fsc = vec4(fogStart, 1) * cameraMatrix;
-			var fec = vec4(fogEnd, 1) * cameraMatrix;
-
-			if(sec.z < fsc.z || ssc.z > fec.z) discard;
-
-			var start = min(ssc.z, fsc.z);
-			var end = max(sec.z, fec.z);
-			var fresnel = mix(1, pow(dot(output.normal, posToCam), fresnelPower), fresnelIntensity);
-			var length = abs(end - start) - abs(fsc.z - ssc.z) - abs(fec.z - sec.z);
-
-			var occlusion = 1 - ((fogLength - length) / fogLength);
-
-			occlusion = occlusion * strength * fresnel;
-
-			output.color = vec4(occlusion,0,0,0);
-		}
-	}
-
-	public function new() {
-		super();
-	}
-}