UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

414 lines (397 loc) 23.4 kB
// Class: openfl.display3D._internal.AGALConverter var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../../hxClasses_stub").default; var $hxEnums = require("./../../../hxEnums_stub").default; var $import = require("./../../../import_stub").default; function openfl_display3D__$internal__$AGALConverter_ProgramType() {return require("./../../../openfl/display3D/_internal/_AGALConverter/ProgramType");} function js__$Boot_HaxeError() {return require("./../../../js/_Boot/HaxeError");} function openfl_errors_IllegalOperationError() {return require("./../../../openfl/errors/IllegalOperationError");} function haxe__$Int64__$_$_$Int64() {return require("./../../../haxe/_Int64/___Int64");} function openfl_display3D__$internal_RegisterMap() {return require("./../../../openfl/display3D/_internal/RegisterMap");} function StringBuf() {return require("./../../../StringBuf");} function _$UInt_UInt_$Impl_$() {return require("./../../../_UInt/UInt_Impl_");} function openfl_utils__$ByteArray_ByteArray_$Impl_$() {return require("./../../../openfl/utils/_ByteArray/ByteArray_Impl_");} function openfl_display3D__$internal__$AGALConverter_DestRegister() {return require("./../../../openfl/display3D/_internal/_AGALConverter/DestRegister");} function openfl_display3D__$internal__$AGALConverter_SourceRegister() {return require("./../../../openfl/display3D/_internal/_AGALConverter/SourceRegister");} function openfl_display3D__$internal__$AGALConverter_RegisterUsage() {return require("./../../../openfl/display3D/_internal/_AGALConverter/RegisterUsage");} function openfl_display3D__$internal__$AGALConverter_SamplerRegister() {return require("./../../../openfl/display3D/_internal/_AGALConverter/SamplerRegister");} function lime_graphics_opengl_GL() {return require("./../../../lime/graphics/opengl/GL");} // Constructor var AGALConverter = function(){} // Meta AGALConverter.__name__ = "openfl.display3D._internal.AGALConverter"; AGALConverter.__isInterface__ = false; AGALConverter.prototype = { }; AGALConverter.prototype.__class__ = AGALConverter.prototype.constructor = $hxClasses["openfl.display3D._internal.AGALConverter"] = AGALConverter; // Init // Statics AGALConverter.prefixFromType = function(regType,programType) { switch(regType) { case 0: return "va"; case 1: if(programType == (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX) { return "vc"; } else { return "fc"; } break; case 2: if(programType == (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX) { return "vt"; } else { return "ft"; } break; case 3: return "output_"; case 4: return "v"; case 5: return "sampler"; default: throw new (js__$Boot_HaxeError().default)(new (openfl_errors_IllegalOperationError().default)("Invalid data!")); } } AGALConverter.readUInt64 = function(byteArray) { var low = byteArray.readInt(); var high = byteArray.readInt(); var this1 = new (haxe__$Int64__$_$_$Int64().default)(high,low); return this1; } AGALConverter.convertToGLSL = function(agal,samplerState) { agal.position = 0; agal.set_endian("littleEndian"); var magic = agal.readByte() & 255; if(magic == 176) { return agal.readUTF(); } if(magic != 160) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_IllegalOperationError().default)("Magic value must be 0xA0, may not be AGAL")); } var version = agal.readInt(); if(version != 1) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_IllegalOperationError().default)("Version must be 1")); } var shaderTypeID = agal.readByte() & 255; if(shaderTypeID != 161) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_IllegalOperationError().default)("Shader type ID must be 0xA1")); } var programType = (agal.readByte() & 255) == 0 ? (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX : (openfl_display3D__$internal__$AGALConverter_ProgramType().default).FRAGMENT; var map = new (openfl_display3D__$internal_RegisterMap().default)(); var sb = new (StringBuf().default)(); while(true) { var a = agal.position; if(!(_$UInt_UInt_$Impl_$().default).gt((openfl_utils__$ByteArray_ByteArray_$Impl_$().default).get_length(agal),a)) { break; } var opcode = agal.readInt(); var dest = agal.readUnsignedInt(); var source1 = AGALConverter.readUInt64(agal); var source2 = AGALConverter.readUInt64(agal); var dr = (openfl_display3D__$internal__$AGALConverter_DestRegister().default).parse(dest,programType); var sr1 = (openfl_display3D__$internal__$AGALConverter_SourceRegister().default).parse(source1,programType,dr.mask); var sr2 = (openfl_display3D__$internal__$AGALConverter_SourceRegister().default).parse(source2,programType,dr.mask); sb.add("\t"); switch(opcode) { case 0: sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + "; // mov"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 1: sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " + " + sr2.toGLSL() + "; // add"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 2: sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " - " + sr2.toGLSL() + "; // sub"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 3: sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL() + "; // mul"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 4: sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " / " + sr2.toGLSL() + "; // div"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 5: var sr = sr1.toGLSL(); if(sr.indexOf(".") > -1) { sb.add(dr.toGLSL() + " = 1.0 / " + sr1.toGLSL() + "; // rcp"); } else { sb.add(dr.toGLSL() + " = vec4(1) / " + sr1.toGLSL() + "; // rcp"); } map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 6: sb.add(dr.toGLSL() + " = min(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // min"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 7: sb.add(dr.toGLSL() + " = max(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // max"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 8: sb.add(dr.toGLSL() + " = fract(" + sr1.toGLSL() + "); // frc"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 9: sb.add(dr.toGLSL() + " = sqrt(" + sr1.toGLSL() + "); // sqrt"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 10: sb.add(dr.toGLSL() + " = inversesqrt(" + sr1.toGLSL() + "); // rsq"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 11: sb.add(dr.toGLSL() + " = pow(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // pow"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 12: sb.add(dr.toGLSL() + " = log2(" + sr1.toGLSL() + "); // log"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 13: sb.add(dr.toGLSL() + " = exp2(" + sr1.toGLSL() + "); // exp"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 14: sb.add(dr.toGLSL() + " = normalize(" + sr1.toGLSL() + "); // normalize"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 15: sb.add(dr.toGLSL() + " = sin(" + sr1.toGLSL() + "); // sin"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 16: sb.add(dr.toGLSL() + " = cos(" + sr1.toGLSL() + "); // cos"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 17: sr1.sourceMask = sr2.sourceMask = 7; sb.add(dr.toGLSL() + " = cross(vec3(" + sr1.toGLSL() + "), vec3(" + sr2.toGLSL() + ")); // crs"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 18: sr1.sourceMask = sr2.sourceMask = 7; sb.add(dr.toGLSL() + " = vec4(dot(vec3(" + sr1.toGLSL() + "), vec3(" + sr2.toGLSL() + ")))" + dr.getWriteMask() + "; // dp3"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 19: sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(dot(vec4(" + sr1.toGLSL() + "), vec4(" + sr2.toGLSL() + ")))" + dr.getWriteMask() + "; // dp4"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 20: sb.add(dr.toGLSL() + " = abs(" + sr1.toGLSL() + "); // abs"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 21: sb.add(dr.toGLSL() + " = -" + sr1.toGLSL() + "; // neg"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 22: sb.add(dr.toGLSL() + " = clamp(" + sr1.toGLSL() + ", 0.0, 1.0); // saturate"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 23: var existingUsage = map.getRegisterUsage(sr2); if(existingUsage != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4 && existingUsage != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4_ARRAY) { sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " * mat3(" + sr2.toGLSL(false) + "); // m33"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).MATRIX_4_4); } else { sr1.sourceMask = sr2.sourceMask = 7; sb.add(dr.toGLSL() + " = vec3(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + ")," + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + ")); // m33"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,0); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,1); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,2); } break; case 24: var existingUsage1 = map.getRegisterUsage(sr2); if(existingUsage1 != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4 && existingUsage1 != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4_ARRAY) { sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL(false) + "; // m44"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).MATRIX_4_4); } else { sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,3) + ")); // m44"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,0); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,1); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,2); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,3); } break; case 25: dr.mask &= 7; var existingUsage2 = map.getRegisterUsage(sr2); if(existingUsage2 != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4 && existingUsage2 != (openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4_ARRAY) { sb.add(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL(false) + "; // m34"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).MATRIX_4_4); } else { sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec3(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + ")," + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + ")); // m34"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,0); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,1); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4,2); } break; case 39: sr1.sourceMask = 15; sb.add("if (any(lessThan(" + sr1.toGLSL() + ", vec4(0)))) discard;"); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 40: var sampler = (openfl_display3D__$internal__$AGALConverter_SamplerRegister().default).parse(source2,programType); switch(sampler.d) { case 0: if(sampler.t == 2) { sr1.sourceMask = 3; map.addSaR(sampler,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).SAMPLER_2D_ALPHA); sb.add("if (" + sampler.toGLSL() + "_alphaEnabled) {\n"); sb.add("\t\t" + dr.toGLSL() + " = vec4(texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + ").xyz, texture2D(" + sampler.toGLSL() + "_alpha, " + sr1.toGLSL() + ").x); // tex + alpha\n"); sb.add("\t} else {\n"); sb.add("\t\t" + dr.toGLSL() + " = texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex\n"); sb.add("\t}"); } else { sr1.sourceMask = 3; map.addSaR(sampler,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).SAMPLER_2D); sb.add(dr.toGLSL() + " = texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex"); } break; case 1: if(sampler.t == 2) { sr1.sourceMask = 7; map.addSaR(sampler,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).SAMPLER_CUBE_ALPHA); sb.add("if (" + sampler.toGLSL() + "_alphaEnabled) {\n"); sb.add("\t\t" + dr.toGLSL() + " = vec4(textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + ").xyz, textureCube(" + sampler.toGLSL() + "_alpha, " + sr1.toGLSL() + ").x); // tex + alpha\n"); sb.add("\t} else {\n"); sb.add("\t\t" + dr.toGLSL() + " = textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex"); sb.add("\t}"); } else { sr1.sourceMask = 7; sb.add(dr.toGLSL() + " = textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex"); map.addSaR(sampler,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).SAMPLER_CUBE); } break; } map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); if(samplerState != null) { samplerState[sampler.n] = sampler.toSamplerState(); } break; case 41: sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(greaterThanEqual(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // ste"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 42: sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(lessThan(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // slt"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 44: sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(equal(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // seq"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; case 45: sr1.sourceMask = sr2.sourceMask = 15; sb.add(dr.toGLSL() + " = vec4(notEqual(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // sne"); map.addDR(dr,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr1,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); map.addSR(sr2,(openfl_display3D__$internal__$AGALConverter_RegisterUsage().default).VECTOR_4); break; default: throw new (js__$Boot_HaxeError().default)(new (openfl_errors_IllegalOperationError().default)("Opcode " + opcode)); } sb.add("\n"); } if(AGALConverter.limitedProfile == null) { var version1 = (lime_graphics_opengl_GL().default).getParameter(7938); AGALConverter.limitedProfile = version1.indexOf("OpenGL ES") > -1 || version1.indexOf("WebGL") > -1; } var glsl = new (StringBuf().default)(); glsl.add("// AGAL " + (programType == (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX ? "vertex" : "fragment") + " shader\n"); if(AGALConverter.limitedProfile) { glsl.add("#version 100\n"); glsl.add("#ifdef GL_FRAGMENT_PRECISION_HIGH\n"); glsl.add("precision highp float;\n"); glsl.add("#else\n"); glsl.add("precision mediump float;\n"); glsl.add("#endif\n"); } else { glsl.add("#version 120\n"); } glsl.add(map.toGLSL(false)); if(programType == (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX) { glsl.add("uniform vec4 vcPositionScale;\n"); } glsl.add("void main() {\n"); glsl.add(map.toGLSL(true)); glsl.add(sb.toString()); if(programType == (openfl_display3D__$internal__$AGALConverter_ProgramType().default).VERTEX) { glsl.add("\tgl_Position *= vcPositionScale;\n"); } glsl.add("}\n"); return glsl.toString(); } AGALConverter.__meta__ = { obj : { SuppressWarnings : ["checkstyle:FieldDocComment"]}} AGALConverter.limitedProfile = true // Export exports.default = AGALConverter;