@awayjs/stage
Version:
Stage for AwayJS
85 lines (76 loc) • 6.5 kB
text/typescript
/* 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) {
}
}