@@ -192,7 +192,11 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
192192 if (value == null )
193193 value = ShaderTemplates .defaultVertexSource ;
194194 glRawVertexSource = value ;
195- value = value .replace (" #pragma header" , ShaderTemplates .vertHeader ).replace (" #pragma body" , ShaderTemplates .vertBody );
195+
196+ var useBackCompat : Bool = true ;
197+ for (regex in ShaderTemplates .vertBackCompatVarList ) if (! regex .match (value )) useBackCompat = false ;
198+
199+ value = value .replace (" #pragma header" , useBackCompat ? ShaderTemplates .vertHeaderBackCompat : ShaderTemplates .vertHeader ).replace (" #pragma body" , useBackCompat ? ShaderTemplates .vertBodyBackCompat : ShaderTemplates .vertBody );
196200 if (value != __glVertexSource )
197201 {
198202 __glSourceDirty = true ;
@@ -625,6 +629,38 @@ if(hasColorTransform) {
625629
626630gl_Position = openfl_Matrix * openfl_Position;" ;
627631
632+ // TODO: make this ignore comments
633+ public static final vertBackCompatVarList : Array <EReg > = [
634+ ~/ attribute float alpha/ ,
635+ ~/ attribute vec4 colorMultiplier/ ,
636+ ~/ attribute vec4 colorOffset/ ,
637+ ~/ uniform bool hasColorTransform/
638+ ];
639+
640+ public static final vertHeaderBackCompat : String = " attribute float openfl_Alpha;
641+ attribute vec4 openfl_ColorMultiplier;
642+ attribute vec4 openfl_ColorOffset;
643+ attribute vec4 openfl_Position;
644+ attribute vec2 openfl_TextureCoord;
645+
646+ varying float openfl_Alphav;
647+ varying vec4 openfl_ColorMultiplierv;
648+ varying vec4 openfl_ColorOffsetv;
649+ varying vec2 openfl_TextureCoordv;
650+
651+ uniform mat4 openfl_Matrix;
652+ uniform bool openfl_HasColorTransform;
653+ uniform vec2 openfl_TextureSize;" ;
654+
655+ public static final vertBodyBackCompat : String = " openfl_Alphav = openfl_Alpha;
656+ openfl_TextureCoordv = openfl_TextureCoord;
657+
658+ if(openfl_HasColorTransform) {
659+ openfl_ColorMultiplierv = openfl_ColorMultiplier;
660+ openfl_ColorOffsetv = openfl_ColorOffset / 255.0;
661+ }
662+
663+ gl_Position = openfl_Matrix * openfl_Position;" ;
628664
629665 public static final defaultVertexSource : String = " #pragma header
630666
0 commit comments