@thi.ng/webgl
Version:
WebGL & GLSL abstraction layer
48 lines (47 loc) • 1.39 kB
JavaScript
import { S2D, V2 } from "@thi.ng/shader-ast/api/types";
import { assign } from "@thi.ng/shader-ast/ast/assign";
import { defMain } from "@thi.ng/shader-ast/ast/function";
import { FLOAT0, FLOAT1, vec4 } from "@thi.ng/shader-ast/ast/lit";
import { $xy } from "@thi.ng/shader-ast/ast/swizzle";
import { texture } from "@thi.ng/shader-ast/builtin/texture";
const PASSTHROUGH_VS = (gl, _, ins) => [
defMain(() => [assign(gl.gl_Position, vec4(ins.position, FLOAT0, FLOAT1))])
];
const PASSTHROUGH_VS_UV = (gl, _, ins, outs) => [
defMain(() => [
assign(outs.v_uv, ins.uv),
assign(gl.gl_Position, vec4(ins.position, FLOAT0, FLOAT1))
])
];
const PASSTHROUGH_FS = (gl, _, __, outs) => [
defMain(() => [assign(outs.fragColor, $xy(gl.gl_FragCoord))])
];
const PASSTHROUGH_FS_UV = (_, unis, ins, outs) => [
defMain(() => [assign(outs.fragColor, texture(unis.tex, ins.v_uv))])
];
const FX_SHADER_SPEC = {
vs: PASSTHROUGH_VS,
fs: PASSTHROUGH_FS,
attribs: { position: V2 },
varying: {},
uniforms: {},
state: { depth: false },
ext: {}
};
const FX_SHADER_SPEC_UV = {
vs: PASSTHROUGH_VS_UV,
fs: PASSTHROUGH_FS_UV,
attribs: { position: V2, uv: V2 },
varying: { v_uv: V2 },
uniforms: { tex: S2D },
state: { depth: false },
ext: {}
};
export {
FX_SHADER_SPEC,
FX_SHADER_SPEC_UV,
PASSTHROUGH_FS,
PASSTHROUGH_FS_UV,
PASSTHROUGH_VS,
PASSTHROUGH_VS_UV
};