SkillAgentSearch skills...

EasyAGAL

EasyAGAL is an open source ActionScript library that simplifies coding assembly language shaders. Advantages include: Code completion and hinting, easier-to-read code, macro libraries -- including trigonometry functions like atan2(), color blending formulas from Photoshop, and more -- ready to use in your own shaders.

Install / Use

/learn @Barliesque/EasyAGAL
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

EasyAGAL by David Barlia, david@barliesque.com

Download: http://github.com/Barliesque/EasyAGAL Online documentation: http://barliesque.com/easy_agal/docs/

EasyAGAL is an open source ActionScript library that assists developers in writing AGAL ("Adobe Graphics Assembly Language") by providing an AS3-based pseudo-AGAL command set. The resulting advantages include:

* Code completion and hinting
* More easy-to-read code
* Macros organized into libraries
* Dynamic code customization

EasyAGAL provides training wheels to learning AGAL as well as a structural foundation for writing shaders for use with any other library. All methods of EasyAGAL maintain the same parameters, in the same order, as AGAL opcodes; They are all documented with ASDoc tags providing help for every instruction and register as you type, including the original AGAL opcodes.

CHANGE LOG _________________________________________________________________________________________

14.Jan.2014

  • Corrected parameters passed to kil/killFragment() (Thanks b005t3r for reporting)

31.Aug.2012

  • Rewrote Trig.atan2() which had a bug (thanks @nshen for reporting)
  • Added public access to property "code" which is useful for comments

4.June.2012

  • Updated AGALMiniAssembler.as
  • Removed macro placeholders for seq & sne which are now supported
  • Updated swc & docs

18.May.2012

  • Fixed atan() formula which was incorrect for input values less than 0 (thanks @makc for reporting)
  • New alias management functions! assign() & unassign()
  • Added .xy as a standard component selection
  • Removed unsupported flags from TextureFlag.as

25.Feb.2012

  • New example: a shader that renders lighting
  • Corrected an embarassing number of mistakes in the docs for Blend.as
  • Added checks to Blend.as where use of the same register for dest and either base or blend color fowls up the calculation

17.Feb.2012

  • Updated SWC library
  • Updated Docs with additions to Trig.as
  • Fixed error in Trig.as
  • Removed unused parameter "one" from ColorSpace::rgb2hsl()

16.Feb.2012

  • Completed Trig.as macro library

11.Feb.2012

  • Added new macro class -- Trig -- to contain macros for missing trigonometric functions
  • Improved documentation, particularly in IRegister

4.Feb.2012

  • Compiled library to a SWC
  • Added BlendHSL macros including: hue, saturation, luminosity and color blend functions
  • Added ColorSpace macros, featuring conversion between RGB & HSL, desaturate, colorize, etc.
  • Added new functions to RegisterType: isConst(), isTemp() , isReadOnly()
  • Corrected an error in Component.as, register type was not passed on to component

3.Dec.2011

  • Updated AGALMiniAssembler.as to official branch with support for rgba accessors
  • Minor corrections in docs

11.Nov.2011

  • Compiled ASDocs now included
  • Updates to all ASDoc tags. Lots of additions, some minor corrections.

25.Oct.2011

  • Added new "formatAS3" option to getVertexOpcode() and getFragmentOpcode()
    • Using this option, you can trace the opcode generated by EasyAGAL formatted as AS3 code.
    • Comment out your EasyAGAL shader code and replace, for a slight optimization.
    • Uncomment the EasyAGAL code to continue work.
    • Obviously this is not applicable to dynamically customized shader code.

23.Oct.2011

  • Modified AGALMiniAssembler.as to fix mishandling of RGBA component accessors
  • Removed workaround from EasyBase.as

16.Oct.2011

  • Changed register variables to static, so that only one set is needed for the entire project
  • EasyBase.init() now does not get called if it's not needed. If all shaders in a project use setVertexOpcode() and setFragmentOpcode() in the constructor, none of EasyAGAL's registers need to be used, conserving memory.

15.Oct.2011

  • Added RegisterType and support for obtaining types of registers from macros.
  • Added two more blend modes to macro library Blend.as: lighterColor & darkerColor
  • Replaced nextRegister.as which mysteriously disappeared!

4.Oct.2011

  • Replaced Blend.softLight() with a formula that is a perfect match with Photoshop and is far more efficient
  • setFragmentOpcode() and setVertexOpcode() now allow appending. Instruction counting still not added.
  • Retested all blend modes. Minor updates to avoid possible "two constant parameters" error.
  • Removed unsupported facility to select components of a SAMPLER register
  • Fixed bugs in Blend.softLight() and Blend.hardLight() macros

3.Oct.2011

  • Updated AGALMiniAssembler.as to current version!!!
  • Removed verboseDebug as it is no longer an option in AGALMiniAssembler

2.Oct.2011

  • added CONST_byIndex
  • opcode and instruction count are available now before calling upload()
  • shader upload errors now trigger a dump of the shader code with line numbers
  • separated debug options in EasyBase constructor
  • added interface IComponent to differentiate single components
  • new macro Utils.selectByIndex()
View on GitHub
GitHub Stars114
CategoryDevelopment
Updated3mo ago
Forks23

Languages

HTML

Security Score

77/100

Audited on Dec 9, 2025

No findings