UNPKG

starling-framework

Version:

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

95 lines (79 loc) 4.09 kB
// Class: starling.rendering.MeshEffect 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; var $extend = require("./../../extend_stub").default; function starling_rendering_FilterEffect() {return require("./../../starling/rendering/FilterEffect");} function starling_rendering_Program() {return require("./../../starling/rendering/Program");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function Type() {return require("./../../Type");} // Constructor var MeshEffect = function() { (starling_rendering_FilterEffect().default).call(this); this._alpha = 1.0; this._optimizeIfNotTinted = (Type().default).getClass(this) == MeshEffect } // Meta MeshEffect.__name__ = "starling.rendering.MeshEffect"; MeshEffect.__isInterface__ = false; MeshEffect.__super__ = (starling_rendering_FilterEffect().default); MeshEffect.prototype = $extend((starling_rendering_FilterEffect().default).prototype, { get_programVariantName: function() { var noTinting = this._optimizeIfNotTinted && !this._tinted && this._alpha == 1.0 ? 1 : 0; return (starling_rendering_FilterEffect().default).prototype.get_programVariantName.call(this) | noTinting << 3; }, createProgram: function() { var vertexShader; var fragmentShader; if(this.get_texture() != null) { if(this._optimizeIfNotTinted && !this._tinted && this._alpha == 1.0) { return (starling_rendering_FilterEffect().default).prototype.createProgram.call(this); } vertexShader = "m44 op, va0, vc0 \n" + "mov v0, va1 \n" + "mul v1, va2, vc4 \n"; fragmentShader = (starling_rendering_FilterEffect().default).tex("ft0","v0",0,this.get_texture()) + "mul oc, ft0, v1 \n"; } else { vertexShader = "m44 op, va0, vc0 \n" + "mul v0, va2, vc4 \n"; fragmentShader = "mov oc, v0 \n"; } return (starling_rendering_Program().default).fromSource(vertexShader,fragmentShader); }, beforeDraw: function(context) { (starling_rendering_FilterEffect().default).prototype.beforeDraw.call(this,context); (openfl__$Vector_Vector_$Impl_$().default).set(MeshEffect.sRenderAlpha,0,(openfl__$Vector_Vector_$Impl_$().default).set(MeshEffect.sRenderAlpha,1,(openfl__$Vector_Vector_$Impl_$().default).set(MeshEffect.sRenderAlpha,2,(openfl__$Vector_Vector_$Impl_$().default).set(MeshEffect.sRenderAlpha,3,this._alpha)))); context.setProgramConstantsFromVector("vertex",4,MeshEffect.sRenderAlpha); if(this._tinted || this._alpha != 1.0 || !this._optimizeIfNotTinted || this.get_texture() == null) { this.get_vertexFormat().setVertexBufferAt(2,this.get_vertexBuffer(),"color"); } }, afterDraw: function(context) { context.setVertexBufferAt(2,null); (starling_rendering_FilterEffect().default).prototype.afterDraw.call(this,context); }, get_vertexFormat: function() { return MeshEffect.VERTEX_FORMAT; }, get_alpha: function() { return this._alpha; }, set_alpha: function(value) { return this._alpha = value; }, get_tinted: function() { return this._tinted; }, set_tinted: function(value) { return this._tinted = value; } }); MeshEffect.prototype.__class__ = MeshEffect.prototype.constructor = $hxClasses["starling.rendering.MeshEffect"] = MeshEffect; // Init Object.defineProperties(MeshEffect.prototype,{ alpha : { get : function () { return this.get_alpha (); }, set : function (v) { return this.set_alpha (v); }}, tinted : { get : function () { return this.get_tinted (); }, set : function (v) { return this.set_tinted (v); }}}); // Statics MeshEffect.VERTEX_FORMAT = (starling_rendering_FilterEffect().default).VERTEX_FORMAT.extend("color:bytes4") MeshEffect.sRenderAlpha = (openfl__$Vector_Vector_$Impl_$().default)._new(4,true) // Export exports.default = MeshEffect;