UNPKG

@awayjs/stage

Version:
85 lines (76 loc) 6.5 kB
/* eslint-disable max-len */ import { OpLUT } from './OpLUT'; export const enum OPPCODES { Mat44 = 0x18, } export class Mapping { static lib: Record<OPPCODES, string> = { [OPPCODES.Mat44]: ` // agal lib fun: multiply matrix4 onto v vec4 mul_mat44 (int matIndex, vec4 v) { return vec4( dot(v, vc[matIndex + 0]), dot(v, vc[matIndex + 1]), dot(v, vc[matIndex + 2]), dot(v, vc[matIndex + 3]) ); } ` }; static agal2glsllut: Array<OpLUT> = [ // s flags dest a b mw mh ndwm scale dm lod new OpLUT('%dest = %cast(%a);\n', 0, true, true, false, null, null, null, null, null, null), //mov //0 new OpLUT('%dest = %cast(%a + %b);\n', 0, true, true, true, null, null, null, null, null, null), //add //1 new OpLUT('%dest = %cast(%a - %b);\n', 0, true, true, true, null, null, null, null, null, null), //sub //2 new OpLUT('%dest = %cast(%a * %b);\n', 0, true, true, true, null, null, null, null, null, null), //mul //3 new OpLUT('%dest = %cast(%a / %b);\n', 0, true, true, true, null, null, null, null, null, null), //div //4 new OpLUT('%dest = %cast(1.0) / %a;\n', 0, true, true, false, null, null, null, null, null, null), //rcp //5 new OpLUT('%dest = %cast(min(%a,%b));\n', 0, true, true, true, null, null, null, null, null, null), //min //6 new OpLUT('%dest = %cast(max(%a,%b));\n', 0, true, true, true, null, null, null, null, null, null), //max //7 new OpLUT('%dest = %cast(fract(%a));\n', 0, true, true, false, null, null, null, null, null, null), //frc //8 new OpLUT('%dest = %cast(sqrt(abs(%a)));\n', 0, true, true, false, null, null, null, null, null, null), //sqt //9 new OpLUT('%dest = %cast(inversesqrt(abs(%a)));\n', 0, true, true, false, null, null, null, null, null, null), //rsq //10 new OpLUT('%dest = %cast(pow(abs(%a),%b));\n', 0, true, true, true, null, null, null, null, null, null), //pow //11 new OpLUT('%dest = %cast(log2(abs(%a)));\n', 0, true, true, false, null, null, null, null, null, null), //log //12 new OpLUT('%dest = %cast(exp2(%a));\n', 0, true, true, false, null, null, null, null, null, null), //exp //13 // s flags dest a b mw mh ndwm scale dm lod new OpLUT('%dest = %cast(normalize(vec3( %a ) ));\n', 0, true, true, false, null, null, true, null, null, null), //nrm //14 new OpLUT('%dest = %cast(sin(%a));\n', 0, true, true, false, null, null, null, null, null, null), //sin //15 new OpLUT('%dest = %cast(cos(%a));\n', 0, true, true, false, null, null, null, null, null, null), //cos //16 new OpLUT('%dest = %cast(cross(vec3(%a),vec3(%b)));\n', 0, true, true, true, null, null, true, null, null, null), //crs //17 new OpLUT('%dest = %cast(dot(vec3(%a),vec3(%b)));\n', 0, true, true, true, null, null, true, null, null, null), //dp3 //18 new OpLUT('%dest = %cast(dot(vec4(%a),vec4(%b)));\n', 0, true, true, true, null, null, true, null, null, null), //dp4 //19 new OpLUT('%dest = %cast(abs(%a));\n', 0, true, true, false, null, null, null, null, null, null), //abs //20 new OpLUT('%dest = %cast(%a * -1.0);\n', 0, true, true, false, null, null, null, null, null, null), //neg //21 new OpLUT('%dest = %cast(clamp(%a,0.0,1.0));\n', 0, true, true, false, null, null, null, null, null, null), //sat //22 new OpLUT('%dest = %cast(dot(vec3(%a),vec3(%b)));\n', null, true, true, true, 3, 3, true, null, null, null), //m33 //23 // has mat44 lib new OpLUT('%dest = %cast(mul_mat44(%ib,vec4(%a)));\n', null, true, true, true, 4, 4, true, null, null, null), //m44 //24 new OpLUT('%dest = %cast(dot(vec4(%a),vec4(%b)));\n', null, true, true, true, 4, 3, true, null, null, null), //m43 //25 //s:string, flags:number, dest:boolean, a:boolean, b:boolean, matrixwidth:number, matrixheight:number, ndwm:boolean, scaler:boolean, dm:boolean, lod:boolean new OpLUT('%dest = %cast(dFdx(%a));\n', 0, true, true, false, null, null, null, null, null, null), //dFdx //26 new OpLUT('%dest = %cast(dFdy(%a));\n', 0, true, true, false, null, null, null, null, null, null), //dFdy //27 new OpLUT('if (float(%a)==float(%b)) {;\n', 0, false, true, true, null, null, null, true, null, null), new OpLUT('if (float(%a)!=float(%b)) {;\n', 0, false, true, true, null, null, null, true, null, null), new OpLUT('if (float(%a)>=float(%b)) {;\n', 0, false, true, true, null, null, null, true, null, null), new OpLUT('if (float(%a)<float(%b)) {;\n', 0, false, true, true, null, null, null, true, null, null), new OpLUT('} else {;\n', 0, false, false, false, null, null, null, null, null, null), new OpLUT('};\n', 0, false, false, false, null, null, null, null, null, null), new OpLUT(null, null, null, null, false, null, null, null, null, null, null), new OpLUT(null, null, null, null, false, null, null, null, null, null, null), new OpLUT(null, null, null, null, false, null, null, null, null, null, null), new OpLUT(null, null, null, null, false, null, null, null, null, null, null), // s flags dest a b mw mh ndwm scale dm lod new OpLUT('%dest = %cast(texture%texdimLod(%b,%texsize(%a)).%dm);\n', null, true, true, true, null, null, null, null, true, null), new OpLUT('if ( float(%a)<0.0 ) discard;\n', null, false, true, false, null, null, null, true, null, null), new OpLUT('%dest = %cast(texture%texdim(%b,%texsize(%a)%lod).%dm);\n', null, true, true, true, null, null, true, null, true, true), new OpLUT('%dest = %cast(greaterThanEqual(%a,%b).%dm);\n', 0, true, true, true, null, null, true, null, true, null), new OpLUT('%dest = %cast(lessThan(%a,%b).%dm);\n', 0, true, true, true, null, null, true, null, true, null), new OpLUT('%dest = %cast(sign(%a));\n', 0, true, true, false, null, null, null, null, null, null), new OpLUT('%dest = %cast(equal(%a,%b).%dm);\n', 0, true, true, true, null, null, true, null, true, null), new OpLUT('%dest = %cast(notEqual(%a,%b).%dm);\n', 0, true, true, true, null, null, true, null, true, null) ]; //TODO: get rid of hack that fixes including definition file constructor(include?: OpLUT) { } }