Skip to content

Commit 3297bef

Browse files
Backwards compatibility with older vertex shaders (#477)
* add backwards compatibility with older vertex shaders * add todo comment for fixing comments in shaders
1 parent 83cf69b commit 3297bef

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

source/funkin/backend/shaders/FunkinShader.hx

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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
626630
gl_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

Comments
 (0)