Jelajahi Sumber

removed LogDriver

Nicolas Cannasse 2 tahun lalu
induk
melakukan
7501555838
1 mengubah file dengan 0 tambahan dan 369 penghapusan
  1. 0 369
      h3d/impl/LogDriver.hx

+ 0 - 369
h3d/impl/LogDriver.hx

@@ -1,369 +0,0 @@
-package h3d.impl;
-import h3d.impl.Driver;
-
-class LogDriver extends Driver {
-
-	var d : Driver;
-	var loggedShaders = new Map<Int,Bool>();
-	var currentShader : hxsl.RuntimeShader;
-	public var logLines : Array<String> = null;
-
-	public function new( driver : Driver ) {
-		this.d = driver;
-		logEnable = true;
-		driver.logEnable = true;
-	}
-
-	override function logImpl( str : String ) {
-		if( logLines == null )
-			d.logImpl(str);
-		else
-			logLines.push(str);
-	}
-
-	override function hasFeature( f : Feature ) {
-		return d.hasFeature(f);
-	}
-
-	override function isSupportedFormat( fmt : h3d.mat.Data.TextureFormat ) {
-		return d.isSupportedFormat(fmt);
-	}
-
-	override function isDisposed() {
-		return d.isDisposed();
-	}
-
-	override function dispose() {
-		log('Dispose');
-		d.dispose();
-	}
-
-	override function begin( frame : Int ) {
-		log('Begin $frame');
-		d.begin(frame);
-	}
-
-	override function clear( ?color : h3d.Vector, ?depth : Float, ?stencil : Int ) {
-		log('Clear color=$color depth=$depth stencil=$stencil');
-		d.clear(color, depth, stencil);
-	}
-
-	override function captureRenderBuffer( pixels : hxd.Pixels ) {
-		log('CaptureRenderBuffer ${pixels.width}x${pixels.height}');
-		d.captureRenderBuffer(pixels);
-	}
-
-	override function getDriverName( details : Bool ) {
-		return d.getDriverName(details);
-	}
-
-	override function init( onCreate : Bool -> Void, forceSoftware = false ) {
-		log('Init');
-		d.init(function(b) {
-			log('OnCreate $b');
-			onCreate(b);
-		},forceSoftware);
-	}
-
-	override function resize( width : Int, height : Int ) {
-		log('Resize $width x $height');
-		d.resize(width, height);
-	}
-
-	override function selectShader( shader : hxsl.RuntimeShader ) {
-		log('Select shader #${shader.id}');
-		currentShader = shader;
-		var ret = d.selectShader(shader);
-		if( !loggedShaders.get(shader.id) ) {
-			function fmt( shader : hxsl.RuntimeShader.RuntimeShaderData ) {
-				var str = hxsl.Printer.shaderToString(shader.data);
-				str = ~/((fragment)|(vertex))Globals\[([0-9]+)\](.[xyz]+)?/g.map(str, function(r) {
-					var name = null;
-					var cid = Std.parseInt(r.matched(4)) << 2;
-					var swiz = r.matched(5);
-					if( swiz != null ) {
-						var d = swiz.charCodeAt(1) - 'x'.code;
-						cid += d;
-						swiz = "." + [for( i in 1...swiz.length ) String.fromCharCode(swiz.charCodeAt(i) - d)].join("");
-					}
-					var g = shader.globals;
-					while( g != null ) {
-						if( g.path == "__consts__" && cid >= g.pos && cid < g.pos + (switch(g.type) { case TArray(TFloat, SConst(n)): n; default: 0; } ) && swiz == ".x" ) {
-							swiz = null;
-							name = "" + shader.consts[cid - g.pos];
-							break;
-						}
-						if( g.pos == cid ) {
-							name = g.path;
-							break;
-						}
-						g = g.next;
-					}
-					if( name == null )
-						return r.matched(0);
-					if( swiz != null ) name += swiz;
-					return name;
-				});
-				str = ~/((fragment)|(vertex))Params\[([0-9]+)\](.[xyz]+)?/g.map(str, function(r) {
-					var name = null;
-					var cid = Std.parseInt(r.matched(4)) << 2;
-					var swiz = r.matched(5);
-					if( swiz != null ) {
-						var d = swiz.charCodeAt(1) - 'x'.code;
-						cid += d;
-						swiz = "." + [for( i in 1...swiz.length ) String.fromCharCode(swiz.charCodeAt(i) - d)].join("");
-					}
-					var p = shader.params;
-					while( p != null ) {
-						if( p.pos == cid ) {
-							name = p.name;
-							break;
-						}
-						p = p.next;
-					}
-					if( name == null )
-						return r.matched(0);
-					if( swiz != null ) name += swiz;
-					return name;
-				});
-				str = ~/((fragment)|(vertex))Textures\[([0-9]+)\]/g.map(str, function(r) {
-					var name = null;
-					var cid = Std.parseInt(r.matched(4));
-					var t = shader.textures;
-					while( t != null ) {
-						if( t.pos == cid && t.type == TSampler2D )
-							return t.name;
-						t = t.next;
-					}
-					return r.matched(0);
-				});
-				str = ~/((fragment)|(vertex))TexturesCube\[([0-9]+)\]/g.map(str, function(r) {
-					var name = null;
-					var cid = Std.parseInt(r.matched(4));
-					var t = shader.textures;
-					while( t != null ) {
-						if( t.pos == cid && t.type == TSamplerCube )
-							return t.name;
-						t = t.next;
-					}
-					return r.matched(0);
-				});
-				return str;
-			}
-			var str = fmt(shader.vertex) + "\n" + fmt(shader.fragment);
-			log('');
-			log('HXSL=');
-			log("\t" + str.split("\n").join("\n\t"));
-			var str = getNativeShaderCode(shader);
-			if( str != null ) {
-				log('NATIVE=');
-				log("\t" + str.split("\n").join("\n\t"));
-			}
-			log('');
-			loggedShaders.set(shader.id, true);
-		}
-		return ret;
-	}
-
-	override function getNativeShaderCode( shader ) {
-		return d.getNativeShaderCode(shader);
-	}
-
-	override function selectMaterial( pass : h3d.mat.Pass ) {
-		log('Select Material Cull=${pass.culling} depth=${pass.depthTest}${pass.depthWrite ? "" : " nowrite"} blend=${pass.blendSrc},${pass.blendDst} color=${pass.colorMask}');
-		d.selectMaterial(pass);
-	}
-
-	function sizeOf( t : hxsl.Ast.Type ) {
-		return switch( t ) {
-		case TVoid: 0;
-		case TInt, TFloat: 1;
-		case TVec(n, _): n;
-		case TMat4: 16;
-		case TMat3: 9;
-		case TMat3x4: 12;
-		case TArray(t, SConst(n)): sizeOf(t) * n;
-		default: throw "assert " + t;
-		}
-	}
-
-	override function uploadShaderBuffers( buffers : h3d.shader.Buffers, which : h3d.shader.Buffers.BufferKind ) {
-		switch( which ) {
-		case Globals:
-			inline function logVars( s : hxsl.RuntimeShader.RuntimeShaderData, buf : h3d.shader.Buffers.ShaderBuffers ) {
-				if( s.globalsSize == 0 ) return;
-				log('Upload ' + (s.vertex?"vertex":"fragment") + " globals");
-				var g = s.globals;
-				while( g != null ) {
-					log('\t@${g.pos} ' + g.path + '=' + [for( i in 0...sizeOf(g.type) ) hxd.Math.fmt(buf.globals #if hl .toData() #end[g.pos + i])]);
-					g = g.next;
-				}
-			}
-			logVars(currentShader.vertex, buffers.vertex);
-			logVars(currentShader.fragment, buffers.fragment);
-		case Params:
-			inline function logVars( s : hxsl.RuntimeShader.RuntimeShaderData, buf : h3d.shader.Buffers.ShaderBuffers ) {
-				if( s.paramsSize == 0 ) return;
-				log('Upload ' + (s.vertex?"vertex":"fragment") + " params");
-				var p = s.params;
-				while( p != null ) {
-					var pos = p.pos;
-					#if flash
-					pos += s.globalsSize * 4;
-					#end
-					log('\t@$pos ' + p.name + '=' + [for( i in 0...sizeOf(p.type) ) hxd.Math.fmt(buf.params #if hl .toData() #end[p.pos + i])]);
-					p = p.next;
-				}
-			}
-			logVars(currentShader.vertex, buffers.vertex);
-			logVars(currentShader.fragment, buffers.fragment);
-		case Buffers:
-			// TODO
-		case Textures:
-			inline function logVars( s : hxsl.RuntimeShader.RuntimeShaderData, buf : h3d.shader.Buffers.ShaderBuffers ) {
-				var t = s.textures;
-				while( t != null ) {
-					log('Set ${s.vertex ? "Vertex" : "Fragment"} Texture@${t.pos} ' + t.name+"=" + textureInfos(buf.tex,t.pos));
-					t = t.next;
-				}
-			}
-			logVars(currentShader.vertex, buffers.vertex);
-			logVars(currentShader.fragment, buffers.fragment);
-		}
-		d.uploadShaderBuffers(buffers, which);
-	}
-
-	function textureInfos( buf : haxe.ds.Vector<h3d.mat.Texture>, tid : Int ) {
-		if( tid < 0 || tid >= buf.length )
-			return 'OUT OF BOUNDS';
-		var t = buf[tid];
-		if( t == null )
-			return 'NULL';
-		var inf = '' + t;
-		if( t.wrap != Clamp )
-			inf += " wrap=" + t.wrap;
-		if( t.mipMap != None )
-			inf += " mip=" + t.mipMap;
-		return inf;
-	}
-
-	override function selectBuffer( buffer : Buffer ) {
-		log('SelectBuffer');
-		d.selectBuffer(buffer);
-	}
-
-	override function selectMultiBuffers( formats : hxd.BufferFormat.MultiFormat, buffers : Array<Buffer> ) {
-		log('SelectMultiBuffers');
-		d.selectMultiBuffers(formats,buffers);
-	}
-
-	override function draw( ibuf : IndexBuffer, startIndex : Int, ntriangles : Int ) {
-		log('Draw $ntriangles');
-		d.draw(ibuf, startIndex, ntriangles);
-	}
-
-	override function setRenderZone( x : Int, y : Int, width : Int, height : Int ) {
-		log('SetRenderZone [$x $y $width $height]');
-		d.setRenderZone(x, y, width, height);
-	}
-
-	override function setRenderTarget( tex : Null<h3d.mat.Texture>, face = 0, mipMap = 0 ) {
-		log('SetRenderTarget $tex $face $mipMap');
-		d.setRenderTarget(tex, face);
-	}
-
-	override function setRenderTargets( textures : Array<h3d.mat.Texture> ) {
-		log('SetRenderTargets $textures');
-		d.setRenderTargets(textures);
-	}
-
-	override function end() {
-		log('End');
-		d.end();
-	}
-
-	override function present() {
-		log('Present');
-		d.present();
-	}
-
-	override function setDebug( b : Bool ) {
-		log('SetDebug $b');
-		d.setDebug(b);
-	}
-
-	override function allocTexture( t : h3d.mat.Texture ) : Texture {
-		log('AllocTexture $t');
-		return d.allocTexture(t);
-	}
-
-	override function allocIndexes( count : Int, is32 : Bool ) : IndexBuffer {
-		log('AllocIndexes $count $is32');
-		return d.allocIndexes(count,is32);
-	}
-
-	override function allocBuffer( b : Buffer ) : GPUBuffer {
-		log('AllocBuffer count=${b.vertices} format=${b.format}');
-		return d.allocBuffer(b);
-	}
-
-	override function disposeTexture( t : h3d.mat.Texture ) {
-		log('Dispose texture');
-		d.disposeTexture(t);
-	}
-
-	override function disposeIndexes( i : IndexBuffer ) {
-		log('DisposeIndexes');
-		d.disposeIndexes(i);
-	}
-
-	override function disposeBuffer( b : GPUBuffer ) {
-		log('DisposeBuffer');
-		d.disposeBuffer(b);
-	}
-
-	override function uploadIndexBuffer( i : IndexBuffer, startIndice : Int, indiceCount : Int, buf : hxd.IndexBuffer, bufPos : Int ) {
-		log('UploadIndexBuffer');
-		d.uploadIndexBuffer(i, startIndice, indiceCount, buf, bufPos);
-	}
-
-	override function uploadIndexBytes( i : IndexBuffer, startIndice : Int, indiceCount : Int, buf : haxe.io.Bytes , bufPos : Int ) {
-		log('UploadIndexBytes');
-		d.uploadIndexBytes(i, startIndice, indiceCount, buf, bufPos);
-	}
-
-	override function uploadBufferData( b : GPUBuffer, startVertex : Int, vertexCount : Int, buf : hxd.FloatBuffer, bufPos : Int ) {
-		log('UploadBufferData');
-		d.uploadBufferData(b, startVertex, vertexCount, buf, bufPos);
-	}
-
-	override function uploadBufferBytes( b : GPUBuffer, startVertex : Int, vertexCount : Int, buf : haxe.io.Bytes, bufPos : Int ) {
-		log('UploadVertexBytes');
-		d.uploadBufferBytes(b, startVertex, vertexCount, buf, bufPos);
-	}
-
-	override function uploadTextureBitmap( t : h3d.mat.Texture, bmp : hxd.BitmapData, mipLevel : Int, side : Int ) {
-		log('UploadTextureBitmap $t mip=$mipLevel side=$side');
-		d.uploadTextureBitmap(t, bmp, mipLevel, side);
-	}
-
-	override function uploadTexturePixels( t : h3d.mat.Texture, pixels : hxd.Pixels, mipLevel : Int, side : Int ) {
-		log('UploadTexturePixels $t mip=$mipLevel side=$side');
-		d.uploadTexturePixels(t, pixels, mipLevel, side);
-	}
-
-	public static function debug( f : Void -> Void ) {
-		#if !debug
-		throw "Requires -debug";
-		#end
-		var engine = h3d.Engine.getCurrent();
-		var driver = engine.driver;
-		var old = driver.logEnable;
-		var log = new h3d.impl.LogDriver(driver);
-		engine.setDriver(log);
-		f();
-		driver.logEnable = old;
-		engine.setDriver(driver);
-	}
-
-}