onnxruntime-web
Version:
A Javascript library for running ONNX models on browsers
48 lines (45 loc) • 1.37 kB
text/typescript
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import { GlslContext, GlslLib, GlslLibRoutine } from './glsl-definitions';
import { getGlsl } from './glsl-source';
/**
* This GLSL library handles routines around reading a texlet and writing to it
* Reading and writing could be more than just dealing with one channel
* It may require encoding/decoding to/from 4 channels into one
*/
export class FragColorGlslLib extends GlslLib {
constructor(context: GlslContext) {
super(context);
}
getFunctions(): { [name: string]: GlslLibRoutine } {
return { ...this.setFragColor(), ...this.getColorAsFloat() };
}
getCustomTypes(): { [name: string]: string } {
return {};
}
protected setFragColor(): { [name: string]: GlslLibRoutine } {
const glsl = getGlsl(this.context.glContext.version);
return {
setFragColor: new GlslLibRoutine(
`
void setFragColor(float value) {
${glsl.output} = encode(value);
}
`,
['encoding.encode'],
),
};
}
protected getColorAsFloat(): { [name: string]: GlslLibRoutine } {
return {
getColorAsFloat: new GlslLibRoutine(
`
float getColorAsFloat(vec4 color) {
return decode(color);
}
`,
['encoding.decode'],
),
};
}
}