Răsfoiți Sursa

don't unroll loops in ES3

ncannasse 7 ani în urmă
părinte
comite
2abae289d5
2 a modificat fișierele cu 5 adăugiri și 3 ștergeri
  1. 2 0
      h3d/impl/GlDriver.hx
  2. 3 3
      hxsl/SharedShader.hx

+ 2 - 0
h3d/impl/GlDriver.hx

@@ -212,6 +212,8 @@ class GlDriver extends Driver {
 		#if js
 		// make sure to enable extensions
 		makeFeatures();
+		// setup shader optim
+		hxsl.SharedShader.UNROLL_LOOPS = !hasFeature(ShaderModel3);
 		#else
 		gl.enable(GL.TEXTURE_CUBE_MAP_SEAMLESS);
 		gl.pixelStorei(GL.PACK_ALIGNMENT, 1);

+ 3 - 3
hxsl/SharedShader.hx

@@ -36,6 +36,8 @@ class ShaderConst {
 
 class SharedShader {
 
+	public static var UNROLL_LOOPS = #if flash true #else false #end;
+
 	public var data : ShaderData;
 	public var globals : Array<ShaderGlobal>;
 	public var consts : ShaderConst;
@@ -78,9 +80,7 @@ class SharedShader {
 		#if flash
 		eval.eliminateConditionals = true;
 		#end
-		#if (js || flash)
-		eval.unrollLoops = true;
-		#end
+		eval.unrollLoops = UNROLL_LOOPS;
 		var i = new ShaderInstance(eval.eval(data));
 		#if debug
 		Printer.check(i.shader, [data]);