Explorar o código

allow custom shader compiler

ncannasse %!s(int64=7) %!d(string=hai) anos
pai
achega
a34533204f
Modificáronse 1 ficheiros con 9 adicións e 3 borrados
  1. 9 3
      h3d/impl/GlDriver.hx

+ 9 - 3
h3d/impl/GlDriver.hx

@@ -56,6 +56,12 @@ private typedef Query = h3d.impl.Driver.Query;
 private typedef VertexArray = haxe.GLTypes.VertexArray;
 #end
 
+#if usegl
+private typedef ShaderCompiler = haxe.GLTypes.ShaderCompiler;
+#else
+private typedef ShaderCompiler = hxsl.GlslOut;
+#end
+
 private class CompiledShader {
 	public var s : GLShader;
 	public var vertex : Bool;
@@ -192,7 +198,7 @@ class GlDriver extends Driver {
 	}
 
 	override function getNativeShaderCode( shader : hxsl.RuntimeShader ) {
-		return "// vertex:\n" + hxsl.GlslOut.toGlsl(shader.vertex.data) + "// fragment:\n" + hxsl.GlslOut.toGlsl(shader.fragment.data);
+		return "// vertex:\n" + ShaderCompiler.compile(shader.vertex.data) + "// fragment:\n" + ShaderCompiler.compile(shader.fragment.data);
 	}
 
 	override public function getDriverName(details:Bool) {
@@ -207,7 +213,7 @@ class GlDriver extends Driver {
 		return "OpenGL "+render;
 	}
 
-	function compileShader( glout : hxsl.GlslOut, shader : hxsl.RuntimeShader.RuntimeShaderData ) {
+	function compileShader( glout : ShaderCompiler, shader : hxsl.RuntimeShader.RuntimeShaderData ) {
 		var type = shader.vertex ? GL.VERTEX_SHADER : GL.FRAGMENT_SHADER;
 		var s = gl.createShader(type);
 		var code = glout.run(shader.data);
@@ -239,7 +245,7 @@ class GlDriver extends Driver {
 		var p = programs.get(shader.id);
 		if( p == null ) {
 			p = new CompiledProgram();
-			var glout = new hxsl.GlslOut();
+			var glout = new ShaderCompiler();
 			if( shaderVersion != null )
 				glout.version = shaderVersion;
 			else